Main Page Modules Class Hierarchy Compound List File List Compound Members

# nedsemanticvalidator.h

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