1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 #ifndef INCLUDED_FORMULA_PARAMCLASS_HXX
11 #define INCLUDED_FORMULA_PARAMCLASS_HXX
13 #include <sal/config.h>
14 #include <sal/types.h>
18 enum ParamClass
: sal_uInt8
20 Unknown
= 0, // MUST be zero for initialization mechanism!
22 /** Out of bounds, function doesn't expect that many parameters.
23 However, not necessarily returned if a module specific definition
24 for example returns type Value for an unlisted function. */
27 /** In array formula: single value to be passed. Results in JumpMatrix
28 being created and multiple calls to function. Functions handling a
29 formula::svDoubleRef by means of DoubleRefToPosSingleRef() or
30 PopDoubleRefOrSingleRef() or GetDouble() or GetString() should have
34 /** In array formula: area reference must stay reference. Otherwise
35 don't care. Functions handling a formula::svDoubleRef by means of
36 PopDoubleRefOrSingleRef() should not have this. */
39 /** Like Reference but the function accepts also a list of references
40 (ocUnion svRefList) as one argument AND handles the special case of
41 an array of references in array mode. Then the resulting argument
42 for a parameter in JumpMatrix context may be an array of references
43 which then is to be preferred over a result matrix. This final
44 behaviour is the opposite of SuppressedReferenceOrForceArray. */
47 /** In array formula: convert area reference to array. Function will be
48 called only once if no Value type is involved. Functions able to
49 handle a svMatrix parameter but not a formula::svDoubleRef parameter as area
53 /** Area reference must be converted to array in any case, and must
54 also be propagated to subsequent operators and functions being part
55 of a parameter of this function. */
58 /** Area reference is not converted to array, but ForceArray must be
59 propagated to subsequent operators and functions being part of a
60 parameter of this function. Used with functions that treat
61 references separately from arrays, but need the forced array
62 calculation of parameters that are not references. */
63 ReferenceOrForceArray
,
65 /** Same as ReferenceOrForceArray but suppressed / not inherited in the
66 compiler's ForceArray context to indicate that a result of
67 Reference in JumpMatrix context should use the result matrix
68 instead of the array of references. Never used as initial parameter
70 SuppressedReferenceOrForceArray
,
72 /** A function return forces the caller into array mode for this one
73 call, making it behave like it had ForceArray but not propagated to
74 any further operators in the same parameter. */
81 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */