nedcrossvalidator.h

Go to the documentation of this file.
00001 //==========================================================================
00002 // nedcrossvalidator.h - part of
00003 //
00004 //                     OMNeT++/OMNEST
00005 //            Discrete System Simulation in C++
00006 //
00007 // Contents:
00008 //   class NEDCrossValidator
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 __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 // *** CURRENTLY NOT IN USE ***
00032 
00039 class NEDXML_API NEDCrossValidator : public NEDValidatorBase
00040 {
00041   protected:
00042     bool parsedExpressions;
00043     NEDResourceCache *resolver;
00044 
00045     // temporary variables:
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     // internal helper
00055     NEDElement *getXXXDeclaration(const char *name, int tagcode1, int tagcode2=-1);
00056 
00057     // these utility methods look up name in resolver, and add an error if the type doesn't match
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 
Generated on Tue Dec 2 11:16:31 2014 for OMNeT++ NEDXML by  doxygen 1.6.3