///###//////////////////////////////////////////////////////////////////////// // // Burton Computer Corporation // http://www.burton-computer.com // http://www.cooldevtools.com // $Id: HdlStandardStatementConstraint.h 272 2007-01-06 19:37:27Z brian $ // // Copyright (C) 2007 Burton Computer Corporation // ALL RIGHTS RESERVED // // This program is open source software; you can redistribute it // and/or modify it under the terms of the Q Public License (QPL) // version 1.0. Use of this software in whole or in part, including // linking it (modified or unmodified) into other programs is // subject to the terms of the QPL. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // Q Public License for more details. // // You should have received a copy of the Q Public License // along with this program; see the file LICENSE.txt. If not, visit // the Burton Computer Corporation or CoolDevTools web site // QPL pages at: // // http://www.burton-computer.com/qpl.html // http://www.cooldevtools.com/qpl.html // #ifndef _HdlStandardStatementConstraint_h #define _HdlStandardStatementConstraint_h #include "HdlStatementConstraint.h" class HdlArgumentConstraint; class HdlStandardStatementConstraint : public HdlStatementConstraint { public: HdlStandardStatementConstraint(const string &name, bool is_block) : HdlStatementConstraint(name), m_isBlock(is_block), m_minArgCount(0), m_maxArgCount(0) { } virtual ~HdlStandardStatementConstraint() { } virtual void validateStatement(const HdlStatement *stmt) const; void addArgument(const Ref &arg) { m_arguments.push_back(arg); } void addChild(const Ref &child) { m_children.push_back(child); } void setArgCounts(int min_args, int max_args) { m_minArgCount = min_args; m_maxArgCount = max_args; } private: const CRef childConstraint(const string &id) const; void throwInvalidStatement(const CRef &token) const; private: /// Not implemented. HdlStandardStatementConstraint(const HdlStandardStatementConstraint &); /// Not implemented. HdlStandardStatementConstraint& operator=(const HdlStandardStatementConstraint &); private: typedef vector > ArgVector; typedef vector > ChildVector; bool m_isBlock; int m_minArgCount; int m_maxArgCount; ArgVector m_arguments; ChildVector m_children; }; #endif // _HdlStandardStandardStatementConstraint_h