2 #ifndef HOBBES_LANG_MODULE_HPP_INCLUDED 3 #define HOBBES_LANG_MODULE_HPP_INCLUDED 19 virtual void show(std::ostream&)
const = 0;
32 template <
typename Case>
42 const std::string& path()
const;
43 const std::string& name()
const;
45 void show(std::ostream&)
const;
47 static const int type_case_id = 0;
59 const std::string& name()
const;
63 void show(std::ostream&)
const;
65 static const int type_case_id = 1;
76 const std::string&
varName()
const;
79 void show(std::ostream&
out)
const;
81 static const int type_case_id = 2;
95 void show(std::ostream&
out)
const;
97 static const int type_case_id = 3;
115 const std::string& name()
const;
117 const CFunDepDefs fundeps()
const;
118 const MVarTypeDefs& members()
const;
120 void show(std::ostream&
out)
const;
122 static const int type_case_id = 4;
138 const std::string& className()
const;
140 const MVarDefs& members()
const;
142 void show(std::ostream&
out)
const;
144 static const int type_case_id = 5;
154 template <
typename Case>
161 Module(
const std::string& mname,
const ModuleDefs& defs);
162 const std::string& name()
const;
163 const ModuleDefs& definitions()
const;
165 void show(std::ostream&
out)
const;
177 std::string
show(
const ModulePtr&
m);
183 std::string
show(
const ModuleDefPtr& md);
184 std::string
show(
const CFunDepDef& fundep);
185 std::string
show(
const CFunDepDefs& fundeps);
std::shared_ptr< ClassDef > ClassDefPtr
Definition: module.H:130
std::vector< InstanceDefPtr > InstanceDefs
Definition: module.H:152
Constraints cs
Definition: module.H:146
QualTypePtr qty
Definition: module.H:84
std::string p
Definition: module.H:49
MVarDefs mdefs
Definition: module.H:149
ModuleDef(int cid, const LexicalAnnotation &)
Definition: module.C:22
const LexicalAnnotation & la() const
Definition: lannotation.C:98
std::string vname
Definition: module.H:83
ExprPtr varName(MDFA *dfa, const std::string &vn)
Definition: dfa.C:129
std::string cname
Definition: module.H:147
std::pair< str::seq, str::seq > CFunDepDef
Definition: module.H:107
virtual ~ModuleDef()
Definition: module.C:24
std::vector< ClassDefPtr > ClassDefs
Definition: module.H:131
std::vector< ModulePtr > Modules
Definition: module.H:172
std::string show(const CFunDepDefs &fundeps)
Definition: module.C:167
int case_id() const
Definition: module.C:23
MonoTypePtr t
Definition: module.H:70
Visibility v
Definition: module.H:67
std::string n
Definition: module.H:50
ModuleDefs defs
Definition: module.H:168
MonoType::ptr MonoTypePtr
Definition: type.H:71
std::shared_ptr< MVarTypeDef > MVarTypeDefPtr
Definition: module.H:86
str::seq vargl
Definition: module.H:99
ExprPtr substitute(const VarMapping &vm, const ExprPtr &e, bool *mapped=0)
Definition: expr.C:968
std::vector< CFunDepDef > CFunDepDefs
Definition: module.H:108
str::seq tvars
Definition: module.H:126
str::seq targs
Definition: module.H:69
int cid
Definition: module.H:27
ExprPtr expr
Definition: module.H:100
std::vector< ConstraintPtr > Constraints
Definition: type.H:35
ModuleDefCase(const LexicalAnnotation &)
Definition: module.H:155
Visibility
Definition: module.H:55
std::shared_ptr< Expr > ExprPtr
Definition: expr.H:58
Definition: lannotation.H:36
std::shared_ptr< InstanceDef > InstanceDefPtr
Definition: module.H:151
std::shared_ptr< Module > ModulePtr
Definition: module.H:171
Definition: lannotation.H:22
std::vector< std::string > seq
Definition: str.H:19
std::vector< MVarTypeDefPtr > MVarTypeDefs
Definition: module.H:87
#define out
Definition: netio.H:19
ModuleDefCase< Case > Base
Definition: module.H:34
std::shared_ptr< MVarDef > MVarDefPtr
Definition: module.H:102
std::vector< MVarDefPtr > MVarDefs
Definition: module.H:103
virtual void show(std::ostream &) const =0
std::string cname
Definition: module.H:125
std::vector< MonoTypePtr > MonoTypes
Definition: type.H:72
MVarTypeDefs mvtydefs
Definition: module.H:128
std::shared_ptr< QualType > QualTypePtr
Definition: type.H:28
std::string tname
Definition: module.H:68
LexicalAnnotation m(const YYLTYPE &p)
Definition: hexpr.parse.C:127
CFunDepDefs fdeps
Definition: module.H:127
Constraints cs
Definition: module.H:124
std::map< TVName, MonoTypePtr > MonoTypeSubst
Definition: type.H:143
std::string mname
Definition: module.H:167
std::shared_ptr< ModuleDef > ModuleDefPtr
Definition: module.H:29
Exprs vars(const std::vector< std::string > &vns, const LexicalAnnotation &la)
Definition: expr.H:706
MonoTypes targs
Definition: module.H:148
std::vector< ModuleDefPtr > ModuleDefs
Definition: module.H:30