kspread_functions.h
00001 #ifndef KSPREAD_FUNCTIONS_H
00002 #define KSPREAD_FUNCTIONS_H
00003
00004 class QDomElement;
00005
00006 #include <qstring.h>
00007 #include <qvaluelist.h>
00008 #include <qstringlist.h>
00009 #include <qdict.h>
00010
00011 #include <koscript_func.h>
00012
00013
00014 typedef KSBuiltinFuncPtr KSpreadFunctionPtr;
00015
00026 class KSpreadFunction
00027 {
00028 public:
00029
00030
00031 QString name;
00032 QString localizedName;
00033 KSpreadFunctionPtr functionPtr;
00034 QString helpText;
00035 };
00036
00037
00038 enum KSpreadParameterType { KSpread_Int, KSpread_Float, KSpread_String, KSpread_Boolean, KSpread_Any };
00039
00040 class KSpreadFunctionParameter
00041 {
00042 public:
00043 KSpreadFunctionParameter();
00044 KSpreadFunctionParameter( const KSpreadFunctionParameter& param );
00045 KSpreadFunctionParameter( const QDomElement& element );
00046
00047 QString helpText() const { return m_help; }
00048 KSpreadParameterType type() const { return m_type; }
00049 bool hasRange() const { return m_range; }
00050
00051 private:
00052 QString m_help;
00053 KSpreadParameterType m_type;
00054 bool m_range;
00055 };
00056
00057 class KSpreadFunctionDescription
00058 {
00059 public:
00060 KSpreadFunctionDescription();
00061 KSpreadFunctionDescription( const QDomElement& element );
00062 KSpreadFunctionDescription( const KSpreadFunctionDescription& desc );
00063
00064 const QStringList& examples() { return m_examples; }
00065 const QStringList& syntax() { return m_syntax; }
00066 const QStringList& related() { return m_related; }
00067 const QStringList& helpText() const { return m_help; }
00068 QString name() const { return m_name; }
00069 KSpreadParameterType type() const { return m_type; }
00070
00071 int params() const { return m_params.count(); }
00072 KSpreadFunctionParameter& param( int i ) { return m_params[ i ]; }
00073
00074 void setGroup( const QString& g ) { m_group = g; }
00075 QString group() const { return m_group; }
00076
00077 QString toQML() const;
00078
00079 private:
00080 QString m_group;
00081 QStringList m_examples;
00082 QStringList m_syntax;
00083 QStringList m_related;
00084 QStringList m_help;
00085 QString m_name;
00086 KSpreadParameterType m_type;
00087 QValueList<KSpreadFunctionParameter> m_params;
00088 };
00089
00090 class KSpreadFunctionRepository
00091 {
00092 public:
00093
00094 static KSpreadFunctionRepository* self();
00095
00096 KSpreadFunctionRepository();
00097
00098 KSpreadFunctionDescription* functionInfo( const QString& name );
00099
00100 KSpreadFunction* function( const QString& name );
00101
00102 QStringList functionNames();
00103 QStringList functionNames( const QString& group );
00104 QStringList regFunctionNames();
00105
00106 const QStringList& groups() const { return m_groups; }
00107
00113 void registerFunction( const QString& name, KSpreadFunctionPtr ptr );
00114
00115 private:
00116
00117 static KSpreadFunctionRepository* s_self;
00118
00119
00120 void loadFile( const QString& filename );
00121
00122 QDict<KSpreadFunctionDescription> m_funcs;
00123 QStringList m_groups;
00124
00125 QDict<KSpreadFunction> m_functions;
00126 };
00127
00128 #endif
This file is part of the documentation for kspread Library Version 1.4.2.