Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #ifndef WOC_PROCESSOR_CLASS_H
00007 #define WOC_PROCESSOR_CLASS_H
00008
00009 #include <QList>
00010 #include <QMap>
00011 #include <QObject>
00012 #include <QPair>
00013 #include <QStringList>
00014
00015 class QDomElement;
00016
00018 struct WocEnum {
00019 QString name,doc;
00020 int val;
00021 WocEnum(){val=0;}
00022 WocEnum(QString n,int v,QString d=""){name=n;val=v;doc=d;}
00023 };
00024
00026 class WocClass
00027 {
00028 public:
00030 WocClass(const QDomElement&);
00031
00033 bool isValid()const{return m_valid;}
00034
00036 QString name()const{return m_name;}
00040 QString baseClass(QString lang,QString prefix)const;
00041
00043 bool hasProperty(QString)const;
00045 QStringList propertyNames()const;
00047 QString propertyType(QString)const;
00049 QString propertyPlainType(QString)const;
00051 bool propertyIsIdentity(QString)const;
00053 bool propertyIsAbstract(QString)const;
00055 bool propertyIsAttribute(QString)const;
00057 bool propertyIsElement(QString)const;
00059 bool propertyIsSimpleElement(QString)const;
00061 bool propertyIsEnum(QString)const;
00063 bool propertyIsObject(QString)const;
00065 bool propertyIsList(QString)const;
00067 bool propertyIsInt(QString p)const{QString pt=propertyPlainType(p);return pt=="int" || pt=="int32" || pt=="int64";}
00069 bool propertyIsBool(QString p)const{return propertyPlainType(p)=="bool";}
00071 bool propertyIsString(QString p)const{QString pt=propertyPlainType(p);return pt=="string"||pt=="astring";}
00073 bool propertyIsBlob(QString p)const{QString pt=propertyPlainType(p);return pt=="blob";}
00074
00076 bool isAbstract(QString)const;
00078 QStringList abstractLangs()const{return m_cabstract;}
00079
00081 QStringList enumTypes()const{return m_enumvals.keys();}
00083 bool hasEnumType(QString t)const{return m_enumvals.contains(t);}
00085 QList<WocEnum> enumValues(QString t)const{return m_enumvals[t];}
00086
00088 bool hasMapping(QString m)const{return m_maps.contains(m);}
00090 QStringList mappingTables()const{return m_maps.keys();}
00092 QStringList mappingProperties(QString)const;
00094 QMap<QString,QString> mapping(QString m)const;
00096 QString mapMethod(QString table,QString property,QString lang)const;
00097
00099 QStringList docStrings()const{return m_docstrings;}
00101 QString propDoc(QString p)const
00102 {if(m_propdoc.contains(p))return m_propdoc[p];else return "";}
00104 QString enumDoc(QString e)const
00105 {if(m_enumdoc.contains(e))return m_enumdoc[e];else return QString();}
00106
00107 private:
00109 bool m_valid;
00111 bool m_abstract;
00113 QStringList m_cabstract;
00115 QString m_name;
00117 QMap<QString,QString>m_base;
00119 struct s_prop{
00120 QString name,type;
00121 bool isid,isabstract;
00122 };
00123 QList<s_prop> m_props;
00125 struct s_map{
00126 QString column,property;
00127 QMap<QString,QString>method;
00128 };
00129 QMap<QString,QList<s_map> >m_maps;
00131 QMap<QString,QList<WocEnum> >m_enumvals;
00133 QMap<QString,QString>m_enumdoc;
00134
00136 QStringList m_docstrings;
00138 QMap<QString,QString>m_propdoc;
00139
00140
00141 static const QStringList attrtypes,elemtypes;
00142 };
00143
00144 #endif