1/* ANTLR Translator Generator 2 * Project led by Terence Parr at http://www.jGuru.com 3 * Software rights: http://www.antlr.org/license.html 4 * 5 * $Id: //depot/code/org.antlr/release/antlr-2.7.7/lib/cpp/src/ASTRefCount.cpp#2 $ 6 */ 7#include "antlr/ASTRefCount.hpp" 8#include "antlr/AST.hpp" 9 10#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE 11namespace antlr { 12#endif 13 14ASTRef::ASTRef(AST* p) 15: ptr(p), count(1) 16{ 17 if (p && !p->ref) 18 p->ref = this; 19} 20 21ASTRef::~ASTRef() 22{ 23 delete ptr; 24} 25 26ASTRef* ASTRef::getRef(const AST* p) 27{ 28 if (p) { 29 AST* pp = const_cast<AST*>(p); 30 if (pp->ref) 31 return pp->ref->increment(); 32 else 33 return new ASTRef(pp); 34 } else 35 return 0; 36} 37 38#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE 39} 40#endif 41 42