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; |