KDevelop API Documentation

BaseAST.hpp

Go to the documentation of this file.
00001 #ifndef INC_BaseAST_hpp__
00002 #define INC_BaseAST_hpp__
00003 
00004 /* ANTLR Translator Generator
00005  * Project led by Terence Parr at http://www.jGuru.com
00006  * Software rights: http://www.antlr.org/RIGHTS.html
00007  *
00008  * $Id: BaseAST.hpp,v 1.2 2003/05/02 00:36:19 okellogg Exp $
00009  */
00010 
00011 #include <antlr/config.hpp>
00012 #include <antlr/AST.hpp>
00013 
00014 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00015 namespace antlr {
00016 #endif
00017 
00018 class ANTLR_API BaseAST;
00019 typedef ASTRefCount<BaseAST> RefBaseAST;
00020 
00021 class ANTLR_API BaseAST : public AST {
00022 public:
00023     BaseAST();
00024     BaseAST(const BaseAST& other);
00025 
00026     virtual ~BaseAST();
00027 
00029     virtual const char* typeName( void ) const;
00030 
00032     virtual RefAST clone( void ) const;
00033 
00035     virtual bool equals(RefAST t) const;
00036 
00040     virtual bool equalsList(RefAST t) const;
00041 
00044     virtual bool equalsListPartial(RefAST t) const;
00045 
00049     virtual bool equalsTree(RefAST t) const;
00050 
00054     virtual bool equalsTreePartial(RefAST t) const;
00055 
00060     virtual ANTLR_USE_NAMESPACE(std)vector<RefAST> findAll(RefAST t);
00061 
00066     virtual ANTLR_USE_NAMESPACE(std)vector<RefAST> findAllPartial(RefAST t);
00067 
00069     virtual void addChild(RefAST c);
00071     virtual RefAST getFirstChild() const
00072     {
00073         return RefAST(down);
00074     }
00076     virtual RefAST getNextSibling() const
00077     {
00078         return RefAST(right);
00079     }
00080 
00082     virtual ANTLR_USE_NAMESPACE(std)string getText() const
00083     {
00084         return "";
00085     }
00087     virtual int getType() const
00088     {
00089         return 0;
00090     }
00091 
00093     virtual void removeChildren()
00094     {
00095         down = static_cast<BaseAST*>(static_cast<AST*>(nullAST));
00096     }
00097 
00099     virtual void setFirstChild(RefAST c)
00100     {
00101         down = static_cast<BaseAST*>(static_cast<AST*>(c));
00102     }
00103 
00105     void setNextSibling(RefAST n)
00106     {
00107         right = static_cast<BaseAST*>(static_cast<AST*>(n));
00108     }
00109 
00111     virtual void setText(const ANTLR_USE_NAMESPACE(std)string& txt);
00112 
00114     virtual void setType(int type);
00115 
00116 #ifdef ANTLR_SUPPORT_XML
00117 
00121     virtual bool attributesToStream( ANTLR_USE_NAMESPACE(std)ostream& out ) const;
00126     virtual void toStream( ANTLR_USE_NAMESPACE(std)ostream &out ) const;
00127 #endif
00128 
00130     virtual ANTLR_USE_NAMESPACE(std)string toString() const;
00131 
00133     virtual ANTLR_USE_NAMESPACE(std)string toStringList() const;
00134     virtual ANTLR_USE_NAMESPACE(std)string toStringTree() const;
00135 
00136 protected:
00137     RefBaseAST down;
00138     RefBaseAST right;
00139 private:
00140     void doWorkForFindAll(ANTLR_USE_NAMESPACE(std)vector<RefAST>& v,
00141                                  RefAST target,
00142                                  bool partialMatch);
00143 };
00144 
00147 inline bool BaseAST::equals(RefAST t) const
00148 {
00149     if (!t)
00150         return false;
00151     return ((getType() == t->getType()) && (getText() == t->getText()));
00152 }
00153 
00154 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00155 }
00156 #endif
00157 
00158 #endif //INC_BaseAST_hpp__
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Feb 22 09:22:34 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003