/* ------- code automatically created by ../scripts/adms_build_object.pl -------------- */ #include #include inline void adms_blockvariable_free(p_blockvariable myblockvariable) { if(!myblockvariable) return; adms_enumeration_free(myblockvariable->_math._dependency); free(myblockvariable->_math._value); adms_slist_free(myblockvariable->_variable); adms_global_increment_nbblockvariabledestroy(); free(myblockvariable); } int adms_blockvariable_cmp (p_blockvariable myblockvariable,p_blockvariable refblockvariable) { int status; status = ( (adms_blockvariable_valueof_block (myblockvariable) != adms_blockvariable_valueof_block (refblockvariable)) ); return status; } p_blockvariable adms_blockvariable_new(p_block myblock) { p_blockvariable mynewblockvariable=(p_blockvariable) calloc(1,(size_t)sizeof(t_blockvariable)); adms_global_increment_nbblockvariablenew(); mynewblockvariable->_math._adms._datatypename=adms_adms_enumeration_datatypename_blockvariable; mynewblockvariable->_math._adms._seen=adms_adms_enumeration_seen_no; (mynewblockvariable->_math)._value=adms_real_new(adms_NAN); (mynewblockvariable->_math)._static=adms_enumeration_new(adms_math_enumeration_static_no,adms_math_fromstring_static_impl,adms_math_tostring_static_impl); (mynewblockvariable->_math)._dynamic=adms_enumeration_new(adms_math_enumeration_dynamic_no,adms_math_fromstring_dynamic_impl,adms_math_tostring_dynamic_impl); (mynewblockvariable->_math)._dependency=adms_enumeration_new(adms_math_enumeration_dependency_constant,adms_math_fromstring_dependency_impl,adms_math_tostring_dependency_impl); mynewblockvariable->_block_isdefault=-1; adms_blockvariable_valueto_block (mynewblockvariable,myblock); mynewblockvariable->_block_isdefault=1; mynewblockvariable->_variable_isdefault=-1; return mynewblockvariable; } p_adms adms_blockvariable_new_impl (p_adms arguments[]) { p_blockvariable mynewblockvariable; p_block myblock=(p_block)arguments[0]; mynewblockvariable=adms_blockvariable_new(myblock); return adms_adms(mynewblockvariable); } /*$1*/ char*adms_blockvariable_uid (p_blockvariable mynewblockvariable) { char*myuid=NULL; char*myuid0=adms_block_uid(mynewblockvariable->_block); adms_strconcat(&myuid,myuid0); return myuid; } inline void adms_blockvariable_valueto_block (p_blockvariable myblockvariable,p_block _block) { myblockvariable->_block=_block; myblockvariable->_block_isdefault=0; } inline void adms_blockvariable_valueto_variable (p_blockvariable myblockvariable,p_slist _variable) { myblockvariable->_variable=_variable; myblockvariable->_variable_isdefault=0; } p_variable adms_blockvariable_list_variable_lookup_by_id (p_blockvariable mymyblockvariable,p_module mymodule,p_quark myname,p_adms myblock) { p_slist list=adms_blockvariable_valueof_variable(mymyblockvariable); while(list) { p_variable refvariable=adms_variable(list->data); if((adms_variable_valueof_module(refvariable)==mymodule)&& !strcmp(adms_variable_valueof_name(refvariable)->_value,myname->_value)&& (adms_variable_valueof_block(refvariable)==myblock)) return refvariable; list=list->next; } return NULL; } p_variable adms_blockvariable_list_variable_prepend_by_id (p_blockvariable mymyblockvariable,p_module mymodule,p_quark myname,p_adms myblock) { p_variable refvariable=adms_variable_new(mymodule,myname,myblock); adms_slist_push(&adms_blockvariable_valueof_variable(mymyblockvariable),adms_adms(refvariable)); return refvariable; } p_variable adms_blockvariable_list_variable_prepend_by_id_once_or_abort (p_blockvariable mymyblockvariable,p_module mymodule,p_quark myname,p_adms myblock) { p_slist list=adms_blockvariable_valueof_variable(mymyblockvariable); p_variable refvariable=adms_variable_new(mymodule,myname,myblock); while(list) { if(!adms_variable_cmp(adms_variable(list->data),refvariable)) { adms_message_fatal(("blockvariable=[%s] variable=[%s] already defined\n", adms_blockvariable_uid(mymyblockvariable),adms_variable_uid(refvariable))) adms_variable_free (refvariable); } list=list->next; } adms_slist_push(&adms_blockvariable_valueof_variable(mymyblockvariable),adms_adms(refvariable)); return refvariable; } void adms_blockvariable_list_variable_prepend_once_or_abort (p_blockvariable mymyblockvariable,p_variable myvariable) { p_slist list=adms_blockvariable_valueof_variable(mymyblockvariable); while(list) { if(!adms_variable_cmp(adms_variable(list->data),myvariable)) { adms_message_fatal(("blockvariable=[%s] variable=[%s] already defined\n", adms_blockvariable_uid(mymyblockvariable),adms_variable_uid(myvariable))) return; } list=list->next; } adms_slist_push(&adms_blockvariable_valueof_variable(mymyblockvariable),adms_adms(myvariable)); }