Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

template.h

Go to the documentation of this file.
00001 // AUTOMATICALLY GENERATED -- DO NOT EDIT!         -*- c++ -*-
00002 
00003 #ifndef template_h
00004 #define template_h
00005 
00006 #include <vector>
00007 #include <string>
00008 #include <ptree-core.h>
00009 #include "symbol_table.h"
00010 #include "class.h"
00011 
00012 //
00013 // INTERFACE definition follows 
00014 //
00015 
00016 
00017 class Template_spec;
00023 class Template_thing {
00024     std::vector<std::string> arg_names;
00025     Ptree*                   tree;
00026 
00027 public:  
00028   /***************************** Template_thing ****************************/
00029   Template_thing();
00030   
00031   void add_args_from_ptree(Ptree* list, Abstract_scope* scope);
00032   
00033   void add_type_arg(std::string name);
00034   
00035   int get_num_args() const;
00036   
00037   std::string get_type_arg(int i) const;
00038   
00039   void set_tree(Ptree* tree);
00040   
00041   Ptree* get_tree() const;
00042 };
00043 
00044 class Template_class_symbol : public Symbol {
00045     Template_thing* definition;        // a class definition that can be
00046                                        // handed to parse_class
00047     std::vector<Template_thing*> members;
00048     std::vector<Template_spec*> special;
00049 
00050     Abstract_scope* defined_in_scope;
00051 
00052 public:  
00053   /************************* Template_class_symbol *************************/
00054   Template_class_symbol(Abstract_scope* scope);
00055   
00056   ~Template_class_symbol();
00057   
00058   Symbol::Kind get_kind() const;
00059   
00060   void set_definition(Template_thing* def);
00061   
00062   void add_member(Template_thing* def);
00063   
00064   Class_symbol* get_specialisation(const Type_vector& types);
00065   
00066   Class_symbol* get_specialisation_from_ptree(Ptree* tree, Abstract_scope* sco);
00067 };
00068 
00069 void visit_template(Ptree* arglist, Ptree* content, Abstract_scope* scope);
00070 
00071 void parse_template_arg_list(Ptree* arglist, Abstract_scope* scope, Type_vector* output);
00072 
00073 #endif // template_h

Generated on Mon Feb 10 17:32:57 2003 for VFiasco Semantics Compiler by doxygen1.2.15