00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CPPREFERENCETYPE_H
00020 #define CPPREFERENCETYPE_H
00021
00022 #include <dtoolbase.h>
00023
00024 #include "cppType.h"
00025
00026
00027
00028
00029
00030 class CPPReferenceType : public CPPType {
00031 public:
00032 CPPReferenceType(CPPType *pointing_at);
00033
00034 CPPType *_pointing_at;
00035
00036 virtual bool is_fully_specified() const;
00037 virtual CPPDeclaration *substitute_decl(SubstDecl &subst,
00038 CPPScope *current_scope,
00039 CPPScope *global_scope);
00040
00041 virtual CPPType *resolve_type(CPPScope *current_scope,
00042 CPPScope *global_scope);
00043
00044 virtual bool is_tbd() const;
00045 virtual bool is_equivalent(const CPPType &other) const;
00046
00047 virtual void output(ostream &out, int indent_level, CPPScope *scope,
00048 bool complete) const;
00049 virtual void output_instance(ostream &out, int indent_level,
00050 CPPScope *scope,
00051 bool complete, const string &prename,
00052 const string &name) const;
00053
00054 virtual SubType get_subtype() const;
00055
00056 virtual CPPReferenceType *as_reference_type();
00057
00058 protected:
00059 virtual bool is_equal(const CPPDeclaration *other) const;
00060 virtual bool is_less(const CPPDeclaration *other) const;
00061 };
00062
00063 #endif