nedcrossvalidator.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __NEDCROSSVALIDATOR_H
00022 #define __NEDCROSSVALIDATOR_H
00023
00024 #include <string.h>
00025 #include "nedvalidator.h"
00026
00027 NAMESPACE_BEGIN
00028
00029 class NEDResourceCache;
00030
00031
00032
00039 class NEDXML_API NEDCrossValidator : public NEDValidatorBase
00040 {
00041 protected:
00042 bool parsedExpressions;
00043 NEDResourceCache *resolver;
00044
00045
00046 NEDElement *moduletypedecl;
00047
00048 NEDElement *findChildWithTagAndAttribute(NEDElement *node, int tag, const char *attr, const char *value);
00049 void checkGate(GateElement *gate, bool hasGateIndex, bool isInput, NEDElement *conn, bool isSrcGate);
00050 void validateConnGate(const char *submodName, bool hasSubmodIndex,
00051 const char *gateName, bool hasGateIndex,
00052 NEDElement *parent, NEDElement *conn, bool isSrc);
00053
00054
00055 NEDElement *getXXXDeclaration(const char *name, int tagcode1, int tagcode2=-1);
00056
00057
00058 NEDElement *getModuleDeclaration(const char *name);
00059 NEDElement *getChannelDeclaration(const char *name);
00060 NEDElement *getModuleInterfaceDeclaration(const char *name);
00061 NEDElement *getChannelInterfaceDeclaration(const char *name);
00062
00063 NEDElement *getEnumDeclaration(const char *name);
00064 NEDElement *getClassDeclaration(const char *name);
00065
00066 public:
00068 NEDCrossValidator(bool parsedExpr, NEDResourceCache *resolver, NEDErrorStore *e);
00069
00071 virtual ~NEDCrossValidator();
00072
00073 protected:
00076 virtual void validateElement(FilesElement *node);
00077 virtual void validateElement(NedFileElement *node);
00078 virtual void validateElement(CommentElement *node);
00079 virtual void validateElement(ImportElement *node);
00080 virtual void validateElement(PropertyDeclElement *node);
00081 virtual void validateElement(ExtendsElement *node);
00082 virtual void validateElement(InterfaceNameElement *node);
00083 virtual void validateElement(SimpleModuleElement *node);
00084 virtual void validateElement(ModuleInterfaceElement *node);
00085 virtual void validateElement(CompoundModuleElement *node);
00086 virtual void validateElement(ChannelInterfaceElement *node);
00087 virtual void validateElement(ChannelElement *node);
00088 virtual void validateElement(ParametersElement *node);
00089 virtual void validateElement(ParamElement *node);
00090 virtual void validateElement(PropertyElement *node);
00091 virtual void validateElement(PropertyKeyElement *node);
00092 virtual void validateElement(GatesElement *node);
00093 virtual void validateElement(GateElement *node);
00094 virtual void validateElement(TypesElement *node);
00095 virtual void validateElement(SubmodulesElement *node);
00096 virtual void validateElement(SubmoduleElement *node);
00097 virtual void validateElement(ConnectionsElement *node);
00098 virtual void validateElement(ConnectionElement *node);
00099 virtual void validateElement(ConnectionGroupElement *node);
00100 virtual void validateElement(LoopElement *node);
00101 virtual void validateElement(ConditionElement *node);
00102 virtual void validateElement(ExpressionElement *node);
00103 virtual void validateElement(OperatorElement *node);
00104 virtual void validateElement(FunctionElement *node);
00105 virtual void validateElement(IdentElement *node);
00106 virtual void validateElement(LiteralElement *node);
00107 virtual void validateElement(MsgFileElement *node);
00108 virtual void validateElement(NamespaceElement *node);
00109 virtual void validateElement(CplusplusElement *node);
00110 virtual void validateElement(StructDeclElement *node);
00111 virtual void validateElement(ClassDeclElement *node);
00112 virtual void validateElement(MessageDeclElement *node);
00113 virtual void validateElement(PacketDeclElement *node);
00114 virtual void validateElement(EnumDeclElement *node);
00115 virtual void validateElement(EnumElement *node);
00116 virtual void validateElement(EnumFieldsElement *node);
00117 virtual void validateElement(EnumFieldElement *node);
00118 virtual void validateElement(MessageElement *node);
00119 virtual void validateElement(PacketElement *node);
00120 virtual void validateElement(ClassElement *node);
00121 virtual void validateElement(StructElement *node);
00122 virtual void validateElement(FieldElement *node);
00123 virtual void validateElement(UnknownElement *node);
00125 };
00126
00127 NAMESPACE_END
00128
00129
00130 #endif
00131