00001 #pragma once 00002 00003 class Expression; 00004 00010 class ExpPtr 00011 { 00013 Expression * _exp; 00014 00016 unsigned int * _refCount; 00017 00023 void _copy(const ExpPtr & other); 00024 00030 void _release(); 00031 00032 public: 00038 ExpPtr(Expression * exp); 00039 00045 ExpPtr(const ExpPtr & other); 00046 00052 ExpPtr & operator=(const ExpPtr & other); 00053 00059 ~ExpPtr(); 00060 00064 Expression * operator->(); 00065 };