16 listInit( @symb.fwdlist, FB_INITFWDREFNODES,
len( FBFWDREF ), LIST_FLAGS_NOCLEAR )
32 byval f as FBSYMBOL
ptr, _
33 byval ref
as FBSYMBOL
ptr _
40 dim as FBFWDREF
ptr n =
listNewNode( @symb.fwdlist )
51 byval f as FBSYMBOL
ptr, _
52 byval ref
as FBSYMBOL
ptr _
55 dim as FBFWDREF
ptr n =
f->fwd.tail
56 dim as FBFWDREF
ptr nxt = NULL
64 if( n->ref = ref )
then
86 byval s
as FBSYMBOL
ptr, _
87 byval dtype
as integer, _
88 byval subtype
as FBSYMBOL
ptr _
91 assert( typeGetDtOnly( symbGetFullType( s ) ) = FB_DATATYPE_FWDREF )
94 if( (s->
class = FB_SYMBCLASS_PARAM)
and symbGetIsOptional( s ) )
then
99 dtype =
typeMerge( symbGetFullType( s ), dtype )
107 byval fwd
as FBSYMBOL
ptr, _
108 byval sym
as FBSYMBOL
ptr _
111 dim as FBFWDREF
ptr node =
any, prev =
any
112 dim as FBSYMBOL
ptr subtype =
any
113 dim as integer dtype =
any
121 select case as const symbGetClass( sym )
122 case FB_SYMBCLASS_STRUCT
123 dtype = FB_DATATYPE_STRUCT
126 case FB_SYMBCLASS_ENUM
127 dtype = FB_DATATYPE_ENUM
131 assert(symbIsTypedef(sym))
136 dtype = symbGetFullType( sym )
140 subtype = symbGetSubtype( sym )
146 do while( node <> NULL )
166 byval sym
as FBSYMBOL
ptr _
169 dim as FBSYMBOL
ptr fwd =
any
176 if( fwd->
class = FB_SYMBCLASS_FWDREF )
then
182 loop while( fwd <> NULL )
186 do while( fwd <> NULL )
188 if( fwd->
class = FB_SYMBCLASS_FWDREF )
then
201 byval id
as zstring ptr, _
202 byval dtype
as integer, _
203 byval subtype
as FBSYMBOL
ptr, _
204 byval lgt
as longint _
207 dim as FBSYMBOL
ptr t =
any
213 FB_SYMBCLASS_TYPEDEF, _
224 if( symb.fwdrefcnt > 0 )
then
236 byval id
as zstring ptr _
239 dim as FBSYMBOL
ptr f =
any
244 f =
symbNewSymbol( FB_SYMBOPT_DOHASH
or FB_SYMBOPT_PRESERVECASE, _
247 FB_SYMBCLASS_FWDREF, _
249 FB_DATATYPE_INVALID, NULL )