// Filename: cppNameComponent.h // Created by: drose (12Nov99) // //////////////////////////////////////////////////////////////////// // // PANDA 3D SOFTWARE // Copyright (c) 2001, Disney Enterprises, Inc. All rights reserved // // All use of this software is subject to the terms of the Panda 3d // Software license. You should have received a copy of this license // along with this source code; you will also find a current copy of // the license at http://www.panda3d.org/license.txt . // // To contact the maintainers of this program write to // panda3d@yahoogroups.com . // //////////////////////////////////////////////////////////////////// #ifndef CPPNAMECOMPONENT_H #define CPPNAMECOMPONENT_H #include #include using namespace std; class CPPTemplateParameterList; class CPPScope; class CPPNameComponent { public: CPPNameComponent(const string &name); bool operator == (const CPPNameComponent &other) const; bool operator != (const CPPNameComponent &other) const; bool operator < (const CPPNameComponent &other) const; string get_name() const; string get_name_with_templ(CPPScope *scope = (CPPScope *)NULL) const; CPPTemplateParameterList *get_templ() const; bool empty() const; bool has_templ() const; bool is_tbd() const; void set_name(const string &name); void append_name(const string &name); void set_templ(CPPTemplateParameterList *templ); void output(ostream &out) const; private: string _name; CPPTemplateParameterList *_templ; }; inline ostream &operator << (ostream &out, const CPPNameComponent &name) { name.output(out); return out; } #endif