22#ifndef KSPREAD_FUNCTIONS
23#define KSPREAD_FUNCTIONS
25#include <tqstringlist.h>
26#include <tqvaluevector.h>
36typedef TQValueVector<Value> valVector;
39 int col1, col2, row1, row2;
43 TQValueVector<rangeInfo> ranges;
48typedef Value (*FunctionPtr)(valVector, ValueCalc *, FuncExtra *);
53 Function ( const TQString& name, FunctionPtr ptr);
59 void setParamCount ( int min, int max = 0);
61 bool paramCountOkay ( int count);
65 void setAcceptArray ( bool accept = true);
67 void setNeedsExtra ( bool extra);
68 TQString name() const;
69 TQString localizedName() const;
70 TQString helpText() const;
71 void setHelpText( const TQString& text );
72 Value exec (valVector args, ValueCalc *calc, FuncExtra *extra = 0);
79enum ParameterType { KSpread_Int, KSpread_Float, KSpread_String, KSpread_Boolean, KSpread_Any };
81class FunctionParameter
85 FunctionParameter( const FunctionParameter& param );
86 FunctionParameter( const TQDomElement& element );
88 TQString helpText() const { return m_help; }
89 ParameterType type() const { return m_type; }
90 bool hasRange() const { return m_range; }
98class FunctionDescription
101 FunctionDescription();
102 FunctionDescription ( const TQDomElement& element);
103 FunctionDescription ( const FunctionDescription& desc);
105 const TQStringList& examples() { return m_examples; }
106 const TQStringList& syntax() { return m_syntax; }
107 const TQStringList& related() { return m_related; }
108 const TQStringList& helpText() const { return m_help; }
109 TQString name() const { return m_name; }
110 ParameterType type() const { return m_type; }
112 int params() const { return m_params.count(); }
113 FunctionParameter& param( int i ) { return m_params[ i ]; }
115 void setGroup( const TQString& g ) { m_group = g; }
116 TQString group() const { return m_group; }
118 TQString toTQML() const;
122 TQStringList m_examples;
123 TQStringList m_syntax;
124 TQStringList m_related;
127 ParameterType m_type;
128 TQValueList<FunctionParameter> m_params;
131class FunctionRepository
134 FunctionRepository();
135 ~FunctionRepository();
137 static FunctionRepository *self();
139 void add (Function *function);
141 Function *function ( const TQString& name);
143 FunctionDescription *functionInfo ( const TQString& name);
146 TQStringList functionNames ( const TQString& group = TQString());
148 const TQStringList &groups () const { return m_groups; }
155 static FunctionRepository* s_self;
158 void loadFile ( const TQString& filename);
160 TQStringList m_groups;
163 FunctionRepository( const FunctionRepository& );
164 FunctionRepository& operator=( const FunctionRepository& );
|