16 dim as integer dtype =
any
17 dim as FBSYMBOL
ptr subtype =
any, tmp =
any
18 dim as integer has_ctor =
any, has_defctor =
any, do_clear =
any
19 dim as ASTNODE
ptr initexpr =
any, elementsexpr =
any, placementexpr =
any
20 dim as ASTNODE
ptr expr =
any
21 dim as AST_OP op =
any
33 if(
hMatch( CHAR_LPRNT ) )
then
36 if( placementexpr = NULL )
then
37 errReport( FB_ERRMSG_EXPECTEDEXPRESSION, TRUE )
41 if(
hMatch( CHAR_RPRNT ) = FALSE )
then
50 select case as const typeGet( dtype )
51 case FB_DATATYPE_STRING, FB_DATATYPE_FIXSTR, _
52 FB_DATATYPE_CHAR, FB_DATATYPE_WCHAR
53 errReport( FB_ERRMSG_NEWCANTBEUSEDWITHSTRINGS, TRUE )
70 if( elementsexpr = NULL )
then
90 if( has_defctor )
then
96 errReport( FB_ERRMSG_VECTORCANTBEINITIALIZED )
111 if( elementsexpr = NULL )
then
115 elementsexpr =
astNewCONV( FB_DATATYPE_UINT, NULL, elementsexpr )
116 if( elementsexpr = NULL )
then
117 errReport( FB_ERRMSG_TYPEMISMATCH, TRUE )
130 if( op = AST_OP_NEW_VEC )
then
131 errReport( FB_ERRMSG_EXPLICITCTORCALLINVECTOR, TRUE )
134 if( initexpr = NULL )
then
141 if( ctor = NULL )
then
142 errReport( FB_ERRMSG_NODEFAULTCTORDEFINED )
145 if( op <> AST_OP_NEW_VEC )
then
147 if( initexpr = NULL )
then
153 errReport( FB_ERRMSG_NOACCESSTODEFAULTCTOR )
162 if( op = AST_OP_NEW_VEC )
then
163 errReport( FB_ERRMSG_VECTORCANTBEINITIALIZED, TRUE )
182 initexpr =
cInitializer( tmp, FB_INIOPT_ISINI
or FB_INIOPT_DODEREF )
184 symbGetStats( tmp )
and=
not FB_SYMBSTATS_INITIALIZED
186 if( initexpr = NULL )
then
187 errReport( FB_ERRMSG_EXPECTEDEXPRESSION )
194 dtype, subtype, do_clear, placementexpr )
196 if( expr = NULL )
then
206 dim as ASTNODE
ptr ptrexpr =
any
207 dim as integer dtype =
any, op =
any
208 dim as FBSYMBOL
ptr subtype =
any
228 if( ptrexpr = NULL )
then
229 errReport( FB_ERRMSG_EXPECTEDIDENTIFIER )
234 dtype = astGetFullType( ptrexpr )
235 subtype = astGetSubType( ptrexpr )
238 if( typeIsPtr( dtype ) = FALSE )
then
244 dtype = typeDeref( dtype )
246 select case( typeGetDtAndPtrOnly( dtype ) )
247 case FB_DATATYPE_VOID
250 case FB_DATATYPE_FWDREF
253 errReport( FB_ERRMSG_INCOMPLETETYPE, TRUE )
254 dtype = FB_DATATYPE_BYTE