absyntax_utils/type_initial_value.cc
changeset 925 a942c55fb769
parent 850 484beb3b1dcb
child 945 477393b00f95
equal deleted inserted replaced
924:9e824bb0c3d4 925:a942c55fb769
    70   if (_instance != NULL)
    70   if (_instance != NULL)
    71     return _instance;
    71     return _instance;
    72 
    72 
    73   _instance = new type_initial_value_c;
    73   _instance = new type_initial_value_c;
    74 
    74 
    75   real_0 = new real_c("0");
    75   null_literal = new ref_value_null_literal_c();
    76   integer_0 = new integer_c("0");
    76   real_0       = new real_c("0");
    77   integer_1 = new integer_c("1");
    77   integer_0    = new integer_c("0");
    78   bool_0 = new boolean_literal_c(new bool_type_name_c(),new boolean_false_c());
    78   integer_1    = new integer_c("1");
       
    79   bool_0       = new boolean_literal_c(new bool_type_name_c(),new boolean_false_c());
    79   /* FIXME: Our current implementation only allows dates from 1970 onwards,
    80   /* FIXME: Our current implementation only allows dates from 1970 onwards,
    80    * but the standard defines the date 0001-01-01 as the default value
    81    * but the standard defines the date 0001-01-01 as the default value
    81    * for the DATE data type. Untill we fix our implementation, we use 1970-01-01
    82    * for the DATE data type. Untill we fix our implementation, we use 1970-01-01
    82    * as our default value!!
    83    * as our default value!!
    83    */
    84    */
    84 //date_literal_0 =  new date_literal_c(integer_1, integer_1, integer_1);
    85 //date_literal_0 =  new date_literal_c(integer_1, integer_1, integer_1);
    85   date_literal_0 =  new date_literal_c(new integer_c("1970"), integer_1, integer_1);
    86   date_literal_0    = new date_literal_c(new integer_c("1970"), integer_1, integer_1);
    86   daytime_literal_0 = new daytime_c(integer_0, integer_0, real_0);
    87   daytime_literal_0 = new daytime_c(integer_0, integer_0, real_0);
    87   time_0 = new duration_c(new time_type_name_c(), NULL, new interval_c(NULL, NULL, NULL, integer_0, NULL));  // T#0s
    88   time_0       = new duration_c     (new time_type_name_c(), NULL, new interval_c(NULL, NULL, NULL, integer_0, NULL));  // T#0s
    88   date_0 = new date_c(new date_type_name_c(), date_literal_0);  //  D#0001-01-01
    89   date_0       = new date_c         (new date_type_name_c(), date_literal_0);  //  D#0001-01-01
    89   tod_0 = new time_of_day_c(new tod_type_name_c(), daytime_literal_0);  //  TOD#00:00:00
    90   tod_0        = new time_of_day_c  (new  tod_type_name_c(), daytime_literal_0);  //  TOD#00:00:00
    90   dt_0 = new date_and_time_c(new dt_type_name_c(), date_literal_0, daytime_literal_0);  //  DT#0001-01-01-00:00:00
    91   dt_0         = new date_and_time_c(new   dt_type_name_c(), date_literal_0, daytime_literal_0);  //  DT#0001-01-01-00:00:00
    91   string_0  = new single_byte_character_string_c("''");
    92   string_0     = new single_byte_character_string_c("''");
    92   wstring_0 = new double_byte_character_string_c("\"\"");
    93   wstring_0    = new double_byte_character_string_c("\"\"");
    93 
    94 
    94   return _instance;
    95   return _instance;
    95 }
    96 }
    96 
    97 
    97 type_initial_value_c::type_initial_value_c(void) {}
    98 type_initial_value_c::type_initial_value_c(void) {}
   375 void *type_initial_value_c::visit(string_type_declaration_c *symbol)	{
   376 void *type_initial_value_c::visit(string_type_declaration_c *symbol)	{
   376   return handle_type_spec(symbol->elementary_string_type_name, symbol->string_type_declaration_init);
   377   return handle_type_spec(symbol->elementary_string_type_name, symbol->string_type_declaration_init);
   377 }
   378 }
   378 
   379 
   379 
   380 
   380 type_initial_value_c	*type_initial_value_c::_instance = NULL;
   381 /* REF_TO (non_generic_type_name | function_block_type_name) */
   381 real_c			*type_initial_value_c::real_0 = NULL;
   382 void *type_initial_value_c::visit(ref_spec_c *symbol) {
   382 integer_c		*type_initial_value_c::integer_0 = NULL;
   383   return null_literal;
   383 integer_c		*type_initial_value_c::integer_1 = NULL;
   384 }
   384 boolean_literal_c	*type_initial_value_c::bool_0 = NULL;
   385 
   385 date_literal_c	*type_initial_value_c::date_literal_0 = NULL;
   386 
   386 daytime_c	*type_initial_value_c::daytime_literal_0 = NULL;
   387 /* ref_spec [ ASSIGN ref_initialization ]; */
   387 duration_c	*type_initial_value_c::time_0 = NULL;
   388 /* NOTE: ref_initialization may be NULL!!  */
   388 date_c	*type_initial_value_c::date_0 = NULL;
   389 void *type_initial_value_c::visit(ref_spec_init_c *symbol) {
   389 time_of_day_c	*type_initial_value_c::tod_0 = NULL;
   390   return handle_type_spec(symbol->ref_spec, symbol->ref_initialization);
   390 date_and_time_c	*type_initial_value_c::dt_0 = NULL;
   391 }
   391 single_byte_character_string_c *type_initial_value_c::string_0 = NULL;
   392 /* identifier ':' ref_spec_init */
   392 double_byte_character_string_c *type_initial_value_c::wstring_0 = NULL;
   393 void *type_initial_value_c::visit(ref_type_decl_c *symbol) {
       
   394   return symbol->ref_spec_init->accept(*this);
       
   395 }
       
   396 
       
   397 
       
   398 
       
   399 
       
   400 
       
   401 
       
   402 
       
   403 
       
   404 type_initial_value_c            *type_initial_value_c::_instance         = NULL;
       
   405 ref_value_null_literal_c        *type_initial_value_c::null_literal      = NULL;
       
   406 real_c                          *type_initial_value_c::real_0            = NULL;
       
   407 integer_c                       *type_initial_value_c::integer_0         = NULL;
       
   408 integer_c                       *type_initial_value_c::integer_1         = NULL;
       
   409 boolean_literal_c               *type_initial_value_c::bool_0            = NULL;
       
   410 date_literal_c                  *type_initial_value_c::date_literal_0    = NULL;
       
   411 daytime_c                       *type_initial_value_c::daytime_literal_0 = NULL;
       
   412 duration_c                      *type_initial_value_c::time_0            = NULL;
       
   413 date_c                          *type_initial_value_c::date_0            = NULL;
       
   414 time_of_day_c                   *type_initial_value_c::tod_0             = NULL;
       
   415 date_and_time_c                 *type_initial_value_c::dt_0              = NULL;
       
   416 single_byte_character_string_c  *type_initial_value_c::string_0          = NULL;
       
   417 double_byte_character_string_c  *type_initial_value_c::wstring_0         = NULL;