Changeset 3dfc083 for variable.c
- Timestamp:
- Jun 27, 2011, 4:28:08 AM (13 years ago)
- Children:
- eeba011
- Parents:
- 705ea86
- git-author:
- Jason Gross <jgross@mit.edu> (06/27/11 01:28:53)
- git-committer:
- Jason Gross <jgross@mit.edu> (06/27/11 04:28:08)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
variable.c
rce68f23 r3dfc083 572 572 int owl_variable_dict_add_from_list(owl_vardict *vd, owl_variable *variables_to_init) 573 573 { 574 int ret; 574 575 owl_variable *var, *cur; 575 576 for (var = variables_to_init; var->name != NULL; var++) { … … 580 581 cur->summary = g_strdup(var->summary); 581 582 cur->description = g_strdup(var->description); 582 switch (cur->type) { 583 if (var->type == OWL_VARIABLE_STRING) 584 cur->pval_default = g_strdup(var->pval_default); 585 ret = owl_variable_init_defaults(cur); 586 if (ret != 0) { 587 fprintf(stderr, "owl_variable_setup: invalid variable type\n"); 588 return ret; 589 } 590 owl_dict_insert_element(vd, cur->name, cur, NULL); 591 } 592 return 0; 593 } 594 int owl_variable_init_defaults(owl_variable *cur) 595 { 596 switch (cur->type) { 583 597 case OWL_VARIABLE_OTHER: 584 598 cur->set_fn(cur, cur->pval_default); … … 597 611 if (!cur->delete_fn) 598 612 cur->delete_fn = owl_variable_delete_default; 599 cur->pval_default = g_strdup(var->pval_default);600 613 cur->set_fn(cur, cur->pval_default); 601 614 break; … … 633 646 break; 634 647 default: 635 fprintf(stderr, "owl_variable_setup: invalid variable type\n"); 636 return(-2); 637 } 638 owl_dict_insert_element(vd, cur->name, cur, NULL); 648 return -2; 639 649 } 640 650 return 0; … … 646 656 } 647 657 648 CALLER_OWN owl_variable *owl_variable_newvar(const char *name, const char *summary, const char *description )649 { 650 owl_variable * 658 CALLER_OWN owl_variable *owl_variable_newvar(const char *name, const char *summary, const char *description, const char *validsettings, int type) 659 { 660 owl_variable *var = g_new0(owl_variable, 1); 651 661 var->name = g_strdup(name); 652 662 var->summary = g_strdup(summary); 653 663 var->description = g_strdup(description); 664 var->validsettings = validsettings; 665 var->type = type; 654 666 return var; 655 667 } 656 668 657 void owl_variable_update(owl_variable *var, const char *summary, const char *desc) { 658 g_free(var->summary); 659 var->summary = g_strdup(summary); 660 g_free(var->description); 661 var->description = g_strdup(desc); 662 } 663 664 void owl_variable_dict_newvar_string(owl_vardict * vd, const char *name, const char *summ, const char * desc, const char * initval) { 665 owl_variable *old = owl_variable_get_var(vd, name, OWL_VARIABLE_STRING); 666 if(old) { 667 owl_variable_update(old, summ, desc); 668 g_free(old->pval_default); 669 old->pval_default = g_strdup(initval); 670 } else { 671 owl_variable * var = owl_variable_newvar(name, summ, desc); 672 var->type = OWL_VARIABLE_STRING; 673 var->pval_default = g_strdup(initval); 674 var->set_fn = owl_variable_string_set_default; 675 var->set_fromstring_fn = owl_variable_string_set_fromstring_default; 676 var->get_fn = owl_variable_get_default; 677 var->get_tostring_fn = owl_variable_string_get_tostring_default; 678 var->delete_fn = owl_variable_delete_default; 679 var->set_fn(var, initval); 680 owl_variable_dict_add_variable(vd, var); 681 } 682 } 683 684 void owl_variable_dict_newvar_int(owl_vardict * vd, const char *name, const char *summ, const char * desc, int initval) { 685 owl_variable *old = owl_variable_get_var(vd, name, OWL_VARIABLE_INT); 686 if(old) { 687 owl_variable_update(old, summ, desc); 688 old->ival_default = initval; 689 } else { 690 owl_variable * var = owl_variable_newvar(name, summ, desc); 691 var->type = OWL_VARIABLE_INT; 692 var->ival_default = initval; 693 var->validate_fn = owl_variable_int_validate_default; 694 var->set_fn = owl_variable_int_set_default; 695 var->set_fromstring_fn = owl_variable_int_set_fromstring_default; 696 var->get_fn = owl_variable_get_default; 697 var->get_tostring_fn = owl_variable_int_get_tostring_default; 698 var->delete_fn = owl_variable_delete_default; 699 var->val = g_new(int, 1); 700 var->set_fn(var, &initval); 701 owl_variable_dict_add_variable(vd, var); 702 } 703 } 704 705 void owl_variable_dict_newvar_bool(owl_vardict * vd, const char *name, const char *summ, const char * desc, int initval) { 706 owl_variable *old = owl_variable_get_var(vd, name, OWL_VARIABLE_BOOL); 707 if(old) { 708 owl_variable_update(old, summ, desc); 709 old->ival_default = initval; 710 } else { 711 owl_variable * var = owl_variable_newvar(name, summ, desc); 712 var->type = OWL_VARIABLE_BOOL; 713 var->ival_default = initval; 714 var->validate_fn = owl_variable_bool_validate_default; 715 var->set_fn = owl_variable_bool_set_default; 716 var->set_fromstring_fn = owl_variable_bool_set_fromstring_default; 717 var->get_fn = owl_variable_get_default; 718 var->get_tostring_fn = owl_variable_bool_get_tostring_default; 719 var->delete_fn = owl_variable_delete_default; 720 var->val = g_new(int, 1); 721 var->set_fn(var, &initval); 722 owl_variable_dict_add_variable(vd, var); 723 } 669 void owl_variable_dict_newvar_string(owl_vardict *vd, const char *name, const char *summ, const char *desc, const char *initval) 670 { 671 owl_variable *var = owl_variable_newvar(name, summ, desc, "<string>", OWL_VARIABLE_STRING); 672 var->pval_default = g_strdup(initval); 673 owl_variable_init_defaults(var); 674 owl_variable_dict_add_variable(vd, var); 675 } 676 677 void owl_variable_dict_newvar_int(owl_vardict *vd, const char *name, const char *summ, const char *desc, int initval) 678 { 679 owl_variable *var = owl_variable_newvar(name, summ, desc, "<int>", OWL_VARIABLE_INT); 680 var->ival_default = initval; 681 owl_variable_init_defaults(var); 682 owl_variable_dict_add_variable(vd, var); 683 } 684 685 void owl_variable_dict_newvar_bool(owl_vardict *vd, const char *name, const char *summ, const char *desc, bool initval) 686 { 687 owl_variable *var = owl_variable_newvar(name, summ, desc, "on,off", OWL_VARIABLE_BOOL); 688 var->ival_default = initval; 689 owl_variable_init_defaults(var); 690 owl_variable_dict_add_variable(vd, var); 724 691 } 725 692
Note: See TracChangeset
for help on using the changeset viewer.