class
compiler::PodDef
sys::Obj
compiler::Node
compiler::DefNode
compiler::PodDef
Mixin: compiler::CPod
1 //
2 // Copyright (c) 2006, Brian Frank and Andy Frank
3 // Licensed under the Academic Free License version 3.0
4 //
5 // History:
6 // 5 Jun 06 Brian Frank Creation
7 //
8
9 **
10 ** PodDef models the pod being compiled.
11 **
12 class PodDef : DefNode, CPod
13 {
14
15 //////////////////////////////////////////////////////////////////////////
16 // Construction
17 //////////////////////////////////////////////////////////////////////////
18
19 new make(Namespace ns, Location location, Str name)
20 : super(location)
21 {
22 this.ns = ns
23 this.name = name
24 }
25
26 //////////////////////////////////////////////////////////////////////////
27 // CPod
28 //////////////////////////////////////////////////////////////////////////
29
30 override Version version() { return null }
31
32 override CType resolveType(Str name, Bool checked)
33 {
34 t := typeDefs[name]
35 if (t != null) return t
36 if (checked) throw UnknownTypeErr.make("${this.name}::${name}")
37 return null
38 }
39
40 override CType[] types()
41 {
42 return typeDefs.values
43 }
44
45 //////////////////////////////////////////////////////////////////////////
46 // Debug
47 //////////////////////////////////////////////////////////////////////////
48
49 override Void print(AstWriter out)
50 {
51 out.nl
52 out.w("======================================").nl
53 out.w("pod $name").nl
54 out.w("======================================").nl
55 units.each |CompilationUnit unit| { unit.print(out) }
56 out.nl
57 }
58
59 override Str toStr()
60 {
61 return "pod $name"
62 }
63
64 //////////////////////////////////////////////////////////////////////////
65 // Fields
66 //////////////////////////////////////////////////////////////////////////
67
68 override readonly Namespace ns // compiler's namespace
69 override readonly Str name // simple pod name
70 CompilationUnit[] units // Tokenize
71 Str:TypeDef typeDefs // ScanForUsingsAndTypes
72
73 }
2 // Copyright (c) 2006, Brian Frank and Andy Frank
3 // Licensed under the Academic Free License version 3.0
4 //
5 // History:
6 // 5 Jun 06 Brian Frank Creation
7 //
8
9 **
10 ** PodDef models the pod being compiled.
11 **
12 class PodDef : DefNode, CPod
13 {
14
15 //////////////////////////////////////////////////////////////////////////
16 // Construction
17 //////////////////////////////////////////////////////////////////////////
18
19 new make(Namespace ns, Location location, Str name)
20 : super(location)
21 {
22 this.ns = ns
23 this.name = name
24 }
25
26 //////////////////////////////////////////////////////////////////////////
27 // CPod
28 //////////////////////////////////////////////////////////////////////////
29
30 override Version version() { return null }
31
32 override CType resolveType(Str name, Bool checked)
33 {
34 t := typeDefs[name]
35 if (t != null) return t
36 if (checked) throw UnknownTypeErr.make("${this.name}::${name}")
37 return null
38 }
39
40 override CType[] types()
41 {
42 return typeDefs.values
43 }
44
45 //////////////////////////////////////////////////////////////////////////
46 // Debug
47 //////////////////////////////////////////////////////////////////////////
48
49 override Void print(AstWriter out)
50 {
51 out.nl
52 out.w("======================================").nl
53 out.w("pod $name").nl
54 out.w("======================================").nl
55 units.each |CompilationUnit unit| { unit.print(out) }
56 out.nl
57 }
58
59 override Str toStr()
60 {
61 return "pod $name"
62 }
63
64 //////////////////////////////////////////////////////////////////////////
65 // Fields
66 //////////////////////////////////////////////////////////////////////////
67
68 override readonly Namespace ns // compiler's namespace
69 override readonly Str name // simple pod name
70 CompilationUnit[] units // Tokenize
71 Str:TypeDef typeDefs // ScanForUsingsAndTypes
72
73 }