nedsemanticvalidator.h

Go to the documentation of this file.
00001 //==========================================================================
00002 // nedsemanticvalidator.h - part of
00003 //
00004 //                     OMNeT++/OMNEST
00005 //            Discrete System Simulation in C++
00006 //
00007 // Contents:
00008 //   class NEDSemanticValidator
00009 //
00010 //==========================================================================
00011 
00012 /*--------------------------------------------------------------*
00013   Copyright (C) 2002-2005 Andras Varga
00014 
00015   This file is distributed WITHOUT ANY WARRANTY. See the file
00016   `license' for details on this and other legal matters.
00017 *--------------------------------------------------------------*/
00018 
00019 
00020 #ifndef __NEDSEMANTICVALIDATOR_H
00021 #define __NEDSEMANTICVALIDATOR_H
00022 
00023 #include <string.h>
00024 #include "nedvalidator.h"
00025 
00026 class NEDSymbolTable;
00027 
00034 class NEDSemanticValidator : public NEDValidatorBase
00035 {
00036   protected:
00037     bool parsedExpressions;
00038     NEDSymbolTable *symboltable;
00039 
00040     // temporary variables:
00041     NEDElement *moduletypedecl;
00042 
00043     NEDElement *findChildWithTagAndAttribute(NEDElement *node, int tag, const char *attr, const char *value);
00044     void checkGate(GateNode *gate, bool hasGateIndex, bool isInput, NEDElement *conn, bool isSrcGate);
00045     void validateConnGate(const char *submodName, bool hasSubmodIndex,
00046                           const char *gateName, bool hasGateIndex,
00047                           NEDElement *parent, NEDElement *conn, bool isSrc);
00048 
00049   public:
00051     NEDSemanticValidator(bool parsedExpr, NEDSymbolTable *symbtab);
00052 
00054     virtual ~NEDSemanticValidator();
00055 
00058     virtual void validateElement(NedFilesNode *node);
00059     virtual void validateElement(NedFileNode *node);
00060     virtual void validateElement(ImportNode *node);
00061     virtual void validateElement(ImportedFileNode *node);
00062     virtual void validateElement(ChannelNode *node);
00063     virtual void validateElement(ChannelAttrNode *node);
00064     virtual void validateElement(NetworkNode *node);
00065     virtual void validateElement(SimpleModuleNode *node);
00066     virtual void validateElement(CompoundModuleNode *node);
00067     virtual void validateElement(ParamsNode *node);
00068     virtual void validateElement(ParamNode *node);
00069     virtual void validateElement(GatesNode *node);
00070     virtual void validateElement(GateNode *node);
00071     virtual void validateElement(MachinesNode *node);
00072     virtual void validateElement(MachineNode *node);
00073     virtual void validateElement(SubmodulesNode *node);
00074     virtual void validateElement(SubmoduleNode *node);
00075     virtual void validateElement(SubstparamsNode *node);
00076     virtual void validateElement(SubstparamNode *node);
00077     virtual void validateElement(GatesizesNode *node);
00078     virtual void validateElement(GatesizeNode *node);
00079     virtual void validateElement(SubstmachinesNode *node);
00080     virtual void validateElement(SubstmachineNode *node);
00081     virtual void validateElement(ConnectionsNode *node);
00082     virtual void validateElement(ConnectionNode *node);
00083     virtual void validateElement(ConnAttrNode *node);
00084     virtual void validateElement(ForLoopNode *node);
00085     virtual void validateElement(LoopVarNode *node);
00086     virtual void validateElement(DisplayStringNode *node);
00087     virtual void validateElement(ExpressionNode *node);
00088     virtual void validateElement(OperatorNode *node);
00089     virtual void validateElement(FunctionNode *node);
00090     virtual void validateElement(ParamRefNode *node);
00091     virtual void validateElement(IdentNode *node);
00092     virtual void validateElement(ConstNode *node);
00093     virtual void validateElement(CplusplusNode *node);
00094     virtual void validateElement(StructDeclNode *node);
00095     virtual void validateElement(ClassDeclNode *node);
00096     virtual void validateElement(MessageDeclNode *node);
00097     virtual void validateElement(EnumDeclNode *node);
00098     virtual void validateElement(EnumNode *node);
00099     virtual void validateElement(EnumFieldsNode *node);
00100     virtual void validateElement(EnumFieldNode *node);
00101     virtual void validateElement(MessageNode *node);
00102     virtual void validateElement(ClassNode *node);
00103     virtual void validateElement(StructNode *node);
00104     virtual void validateElement(FieldsNode *node);
00105     virtual void validateElement(FieldNode *node);
00106     virtual void validateElement(PropertiesNode *node);
00107     virtual void validateElement(PropertyNode *node);
00108     virtual void validateElement(UnknownNode *node);
00110 };
00111 
00112 #endif
00113 

Generated on Sat Oct 21 17:47:58 2006 for OMNeT++/OMNEST NEDXML by  doxygen 1.4.6