Changeset 074444f in mainline for uspace/app/sbi/src/rdata.c
- Timestamp:
- 2010-04-10T11:15:33Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1ef0fc3, 38aaacc2
- Parents:
- 23de644
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/sbi/src/rdata.c
r23de644 r074444f 51 51 #include "mytypes.h" 52 52 #include "stree.h" 53 #include "symbol.h" 53 54 54 55 #include "rdata.h" 55 56 57 static void rdata_bool_copy(rdata_bool_t *src, rdata_bool_t **dest); 58 static void rdata_char_copy(rdata_char_t *src, rdata_char_t **dest); 56 59 static void rdata_int_copy(rdata_int_t *src, rdata_int_t **dest); 57 60 static void rdata_string_copy(rdata_string_t *src, rdata_string_t **dest); … … 287 290 } 288 291 292 /** Allocate new boolean. 293 * 294 * @return New boolean. 295 */ 296 rdata_bool_t *rdata_bool_new(void) 297 { 298 rdata_bool_t *bool_v; 299 300 bool_v = calloc(1, sizeof(rdata_bool_t)); 301 if (bool_v == NULL) { 302 printf("Memory allocation failed.\n"); 303 exit(1); 304 } 305 306 return bool_v; 307 } 308 309 /** Allocate new character. 310 * 311 * @return New character. 312 */ 313 rdata_char_t *rdata_char_new(void) 314 { 315 rdata_char_t *char_v; 316 317 char_v = calloc(1, sizeof(rdata_char_t)); 318 if (char_v == NULL) { 319 printf("Memory allocation failed.\n"); 320 exit(1); 321 } 322 323 return char_v; 324 } 325 289 326 /** Allocate new integer. 290 327 * … … 398 435 399 436 switch (src->vc) { 437 case vc_bool: 438 rdata_bool_copy(src->u.bool_v, &nvar->u.bool_v); 439 break; 440 case vc_char: 441 rdata_char_copy(src->u.char_v, &nvar->u.char_v); 442 break; 400 443 case vc_int: 401 444 rdata_int_copy(src->u.int_v, &nvar->u.int_v); … … 422 465 423 466 *dest = nvar; 467 } 468 469 /** Copy boolean. 470 * 471 * @param src Source boolean. 472 * @param dest Place to store pointer to new boolean. 473 */ 474 static void rdata_bool_copy(rdata_bool_t *src, rdata_bool_t **dest) 475 { 476 *dest = rdata_bool_new(); 477 (*dest)->value = src->value; 478 } 479 480 /** Copy character. 481 * 482 * @param src Source character. 483 * @param dest Place to store pointer to new character. 484 */ 485 static void rdata_char_copy(rdata_char_t *src, rdata_char_t **dest) 486 { 487 *dest = rdata_char_new(); 488 bigint_clone(&src->value, &(*dest)->value); 424 489 } 425 490 … … 550 615 var->vc = nvar->vc; 551 616 switch (nvar->vc) { 617 case vc_bool: var->u.bool_v = nvar->u.bool_v; break; 618 case vc_char: var->u.char_v = nvar->u.char_v; break; 552 619 case vc_int: var->u.int_v = nvar->u.int_v; break; 553 620 case vc_string: var->u.string_v = nvar->u.string_v; break; … … 621 688 static void rdata_var_print(rdata_var_t *var) 622 689 { 690 int val; 691 623 692 switch (var->vc) { 693 case vc_bool: 694 printf("bool(%s)", var->u.bool_v->value ? "true" : "false"); 695 break; 696 case vc_char: 697 printf("char("); 698 if (bigint_get_value_int(&var->u.char_v->value, &val) == EOK) 699 printf("'%c'", val); 700 else 701 printf("???:x%x\n", (unsigned) val); 702 printf(")"); 703 break; 624 704 case vc_int: 625 705 printf("int("); … … 631 711 break; 632 712 case vc_ref: 633 printf("ref"); 713 printf("ref("); 714 rdata_var_print(var->u.ref_v->vref); 715 printf(")"); 634 716 break; 635 717 case vc_deleg: 636 printf("deleg"); 718 printf("deleg("); 719 if (var->u.deleg_v->obj != NULL) { 720 rdata_var_print(var->u.deleg_v->obj); 721 printf(","); 722 } 723 symbol_print_fqn(var->u.deleg_v->sym); 724 printf(")"); 725 break; 726 case vc_array: 727 printf("array"); 637 728 break; 638 729 case vc_object: 639 730 printf("object"); 640 731 break; 641 default:642 printf(" print(%d)\n", var->vc);643 assert(b_false);644 } 645 } 732 case vc_resource: 733 printf("resource(%p)", var->u.resource_v->data); 734 break; 735 } 736 }
Note:
See TracChangeset
for help on using the changeset viewer.