nedsyntaxvalidator.h

Go to the documentation of this file.
00001 //==========================================================================
00002 // nedsyntaxvalidator.h -
00003 //
00004 //                     OMNeT++/OMNEST
00005 //            Discrete System Simulation in C++
00006 //
00007 // Contents:
00008 //   class NEDSyntaxValidator
00009 //
00010 //==========================================================================
00011 
00012 /*--------------------------------------------------------------*
00013   Copyright (C) 2002-2008 Andras Varga
00014   Copyright (C) 2006-2008 OpenSim Ltd.
00015 
00016   This file is distributed WITHOUT ANY WARRANTY. See the file
00017   `license' for details on this and other legal matters.
00018 *--------------------------------------------------------------*/
00019 
00020 
00021 #ifndef __NEDSYNTAXVALIDATOR_H
00022 #define __NEDSYNTAXVALIDATOR_H
00023 
00024 #include "nedvalidator.h"
00025 
00026 NAMESPACE_BEGIN
00027 
00028 
00037 class NEDXML_API NEDSyntaxValidator : public NEDValidatorBase
00038 {
00039   protected:
00040     bool parsedExpressions;
00041 
00042     // internal helpers: verify attributes
00043     void checkExpressionAttributes(NEDElement *node, const char *attrs[], bool optional[], int n);
00044     void checkDottedNameAttribute(NEDElement *node, const char *attr, bool wildcardsAllowed);
00045     void checkPropertyNameAttribute(NEDElement *node, const char *attr);
00046     void checkPropertyIndexAttribute(NEDElement *node, const char *attr);
00047 
00048     // helper: whether the given node is inside the BODY of a submodule or a connection
00049     bool isWithinSubcomponent(NEDElement *node);
00050 
00051     // whether the given node is inside an inner type
00052     bool isWithinInnerType(NEDElement *node);
00053 
00054   public:
00060     NEDSyntaxValidator(bool parsedExpr, NEDErrorStore *e)
00061         : NEDValidatorBase(e) {parsedExpressions=parsedExpr;}
00062 
00066     virtual ~NEDSyntaxValidator() {}
00067 
00068   protected:
00071     virtual void validateElement(FilesElement *node);
00072     virtual void validateElement(NedFileElement *node);
00073     virtual void validateElement(CommentElement *node);
00074     virtual void validateElement(PackageElement *node);
00075     virtual void validateElement(ImportElement *node);
00076     virtual void validateElement(PropertyDeclElement *node);
00077     virtual void validateElement(ExtendsElement *node);
00078     virtual void validateElement(InterfaceNameElement *node);
00079     virtual void validateElement(SimpleModuleElement *node);
00080     virtual void validateElement(ModuleInterfaceElement *node);
00081     virtual void validateElement(CompoundModuleElement *node);
00082     virtual void validateElement(ChannelInterfaceElement *node);
00083     virtual void validateElement(ChannelElement *node);
00084     virtual void validateElement(ParametersElement *node);
00085     virtual void validateElement(ParamElement *node);
00086     virtual void validateElement(PropertyElement *node);
00087     virtual void validateElement(PropertyKeyElement *node);
00088     virtual void validateElement(GatesElement *node);
00089     virtual void validateElement(GateElement *node);
00090     virtual void validateElement(TypesElement *node);
00091     virtual void validateElement(SubmodulesElement *node);
00092     virtual void validateElement(SubmoduleElement *node);
00093     virtual void validateElement(ConnectionsElement *node);
00094     virtual void validateElement(ConnectionElement *node);
00095     virtual void validateElement(ConnectionGroupElement *node);
00096     virtual void validateElement(LoopElement *node);
00097     virtual void validateElement(ConditionElement *node);
00098     virtual void validateElement(ExpressionElement *node);
00099     virtual void validateElement(OperatorElement *node);
00100     virtual void validateElement(FunctionElement *node);
00101     virtual void validateElement(IdentElement *node);
00102     virtual void validateElement(LiteralElement *node);
00103     virtual void validateElement(MsgFileElement *node);
00104     virtual void validateElement(NamespaceElement *node);
00105     virtual void validateElement(CplusplusElement *node);
00106     virtual void validateElement(StructDeclElement *node);
00107     virtual void validateElement(ClassDeclElement *node);
00108     virtual void validateElement(MessageDeclElement *node);
00109     virtual void validateElement(PacketDeclElement *node);
00110     virtual void validateElement(EnumDeclElement *node);
00111     virtual void validateElement(EnumElement *node);
00112     virtual void validateElement(EnumFieldsElement *node);
00113     virtual void validateElement(EnumFieldElement *node);
00114     virtual void validateElement(MessageElement *node);
00115     virtual void validateElement(PacketElement *node);
00116     virtual void validateElement(ClassElement *node);
00117     virtual void validateElement(StructElement *node);
00118     virtual void validateElement(FieldElement *node);
00119     virtual void validateElement(UnknownElement *node);
00121 };
00122 
00123 NAMESPACE_END
00124 
00125 
00126 #endif
00127 
Generated on Tue Dec 2 11:16:31 2014 for OMNeT++ NEDXML by  doxygen 1.6.3