diff options
author | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-08-20 08:21:59 +0000 |
---|---|---|
committer | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-08-20 08:21:59 +0000 |
commit | 3e13e2a12bc55893767132a081358543c25a4356 (patch) | |
tree | d89f6c1dd7ae8cad1d86a18bf8b8b5d47470c240 /compiler/ngtcon.pas | |
parent | d6c03c1e96b78df13fb0af8eeedc1ac01881f7b9 (diff) | |
download | fpc-3e13e2a12bc55893767132a081358543c25a4356.tar.gz |
* make it possible to override parts of the typed constant code generation
by platform-specific units
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/jvmbackend@18658 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/ngtcon.pas')
-rw-r--r-- | compiler/ngtcon.pas | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/compiler/ngtcon.pas b/compiler/ngtcon.pas index 75c3f7eb1a..98899c19cb 100644 --- a/compiler/ngtcon.pas +++ b/compiler/ngtcon.pas @@ -62,8 +62,9 @@ interface procedure tc_emit_stringdef(def: tstringdef; var node: tnode);virtual;abstract; public constructor create(sym: tstaticvarsym); -// function parse_into_nodetree: tnode; end; + ttypedconstbuilderclass = class of ttypedconstbuilder; + { should be changed into nested type of tasmlisttypedconstbuilder when possible } @@ -95,12 +96,13 @@ interface procedure tc_emit_enumdef(def: tenumdef; var node: tnode);override; procedure tc_emit_stringdef(def: tstringdef; var node: tnode);override; public - constructor create(sym: tstaticvarsym); + constructor create(sym: tstaticvarsym);virtual; function parse_into_asmlist: tasmlist; end; + tasmlisttypedconstbuilderclass = class of tasmlisttypedconstbuilder; tnodetreetypedconstbuilder = class(ttypedconstbuilder) - private + protected resultblock: tblocknode; statmnt: tstatementnode; @@ -108,7 +110,6 @@ interface etc. } basenode: tnode; - protected procedure parse_arraydef(def:tarraydef);override; procedure parse_procvardef(def:tprocvardef);override; procedure parse_recorddef(def:trecorddef);override; @@ -122,10 +123,15 @@ interface procedure tc_emit_enumdef(def: tenumdef; var node: tnode);override; procedure tc_emit_stringdef(def: tstringdef; var node: tnode);override; public - constructor create(sym: tstaticvarsym; previnit: tnode); + constructor create(sym: tstaticvarsym; previnit: tnode);virtual; destructor destroy;override; function parse_into_nodetree: tnode; end; + tnodetreetypedconstbuilderclass = class of tnodetreetypedconstbuilder; + + var + ctypedconstbuilder: ttypedconstbuilderclass; + implementation uses @@ -2017,5 +2023,7 @@ uses self.resultblock:=nil; end; - +begin + { default to asmlist version, best for most targets } + ctypedconstbuilder:=tasmlisttypedconstbuilder; end. |