/* ------- code automatically created by ../scripts/adms_build_object.pl -------------- */ #include #include inline void adms_instance_free(p_instance myinstance) { if(!myinstance) return; adms_enumeration_free(myinstance->_math._dependency); free(myinstance->_math._value); adms_slist_free(myinstance->_terminal); adms_slist_free(myinstance->_parameterset); adms_quark_free(myinstance->_name); adms_global_increment_nbinstancedestroy(); free(myinstance); } int adms_instance_cmp (p_instance myinstance,p_instance refinstance) { int status; status = ( (adms_instance_valueof_instantiator (myinstance) != adms_instance_valueof_instantiator (refinstance)) || (adms_instance_valueof_module (myinstance) != adms_instance_valueof_module (refinstance)) || !!strcmp(adms_instance_valueof_name (myinstance)->_value,adms_instance_valueof_name (refinstance)->_value) ); return status; } p_instance adms_instance_new(p_module myinstantiator,p_module mymodule,p_quark myname) { p_instance mynewinstance=(p_instance) calloc(1,(size_t)sizeof(t_instance)); adms_global_increment_nbinstancenew(); mynewinstance->_math._adms._datatypename=adms_adms_enumeration_datatypename_instance; mynewinstance->_math._adms._seen=adms_adms_enumeration_seen_no; (mynewinstance->_math)._value=adms_real_new(adms_NAN); (mynewinstance->_math)._static=adms_enumeration_new(adms_math_enumeration_static_no,adms_math_fromstring_static_impl,adms_math_tostring_static_impl); (mynewinstance->_math)._dynamic=adms_enumeration_new(adms_math_enumeration_dynamic_no,adms_math_fromstring_dynamic_impl,adms_math_tostring_dynamic_impl); (mynewinstance->_math)._dependency=adms_enumeration_new(adms_math_enumeration_dependency_constant,adms_math_fromstring_dependency_impl,adms_math_tostring_dependency_impl); mynewinstance->_instantiator_isdefault=-1; adms_instance_valueto_instantiator (mynewinstance,myinstantiator); mynewinstance->_instantiator_isdefault=1; mynewinstance->_module_isdefault=-1; adms_instance_valueto_module (mynewinstance,mymodule); mynewinstance->_module_isdefault=1; mynewinstance->_name_isdefault=-1; adms_instance_valueto_name (mynewinstance,myname); mynewinstance->_name_isdefault=1; mynewinstance->_terminal_isdefault=-1; mynewinstance->_parameterset_isdefault=-1; return mynewinstance; } p_adms adms_instance_new_impl (p_adms arguments[]) { p_instance mynewinstance; p_module myinstantiator=(p_module)arguments[0]; p_module mymodule=(p_module)arguments[1]; p_quark myname=adms_quark_new((char*)arguments[2]); mynewinstance=adms_instance_new(myinstantiator,mymodule,myname); return adms_adms(mynewinstance); } /*$1.$2#$3*/ char*adms_instance_uid (p_instance mynewinstance) { char*myuid=NULL; char*myuid0=adms_module_uid(mynewinstance->_instantiator); char*myuid1=adms_module_uid(mynewinstance->_module); char*myuid2=adms_quark_uid(mynewinstance->_name); adms_strconcat(&myuid,myuid0); adms_strconcat2(&myuid,"."); adms_strconcat(&myuid,myuid1); adms_strconcat2(&myuid,"#"); adms_strconcat(&myuid,myuid2); return myuid; } inline void adms_instance_valueto_instantiator (p_instance myinstance,p_module _instantiator) { myinstance->_instantiator=_instantiator; myinstance->_instantiator_isdefault=0; } inline void adms_instance_valueto_module (p_instance myinstance,p_module _module) { myinstance->_module=_module; myinstance->_module_isdefault=0; } inline void adms_instance_valueto_name (p_instance myinstance,p_quark _name) { if(myinstance->_name_isdefault!=-1) adms_quark_free(myinstance->_name); myinstance->_name=_name; myinstance->_name_isdefault=0; } inline void adms_instance_valueto_terminal (p_instance myinstance,p_slist _terminal) { myinstance->_terminal=_terminal; myinstance->_terminal_isdefault=0; } p_instancenode adms_instance_list_terminal_lookup_by_id (p_instance mymyinstance,p_node mynodefrominstantiator,p_node mynodefrommodule) { p_slist list=adms_instance_valueof_terminal(mymyinstance); while(list) { p_instancenode refinstancenode=adms_instancenode(list->data); if((adms_instancenode_valueof_nodefrominstantiator(refinstancenode)==mynodefrominstantiator)&& (adms_instancenode_valueof_nodefrommodule(refinstancenode)==mynodefrommodule)) return refinstancenode; list=list->next; } return NULL; } p_instancenode adms_instance_list_terminal_prepend_by_id (p_instance mymyinstance,p_node mynodefrominstantiator,p_node mynodefrommodule) { p_instancenode refterminal=adms_instancenode_new(mynodefrominstantiator,mynodefrommodule); adms_slist_push(&adms_instance_valueof_terminal(mymyinstance),adms_adms(refterminal)); return refterminal; } p_instancenode adms_instance_list_terminal_prepend_by_id_once_or_abort (p_instance mymyinstance,p_node mynodefrominstantiator,p_node mynodefrommodule) { p_slist list=adms_instance_valueof_terminal(mymyinstance); p_instancenode refterminal=adms_instancenode_new(mynodefrominstantiator,mynodefrommodule); while(list) { if(!adms_instancenode_cmp(adms_instancenode(list->data),refterminal)) { adms_message_fatal(("instance=[%s] terminal=[%s] already defined\n", adms_instance_uid(mymyinstance),adms_instancenode_uid(refterminal))) adms_instancenode_free (refterminal); } list=list->next; } adms_slist_push(&adms_instance_valueof_terminal(mymyinstance),adms_adms(refterminal)); return refterminal; } void adms_instance_list_terminal_prepend_once_or_abort (p_instance mymyinstance,p_instancenode myterminal) { p_slist list=adms_instance_valueof_terminal(mymyinstance); while(list) { if(!adms_instancenode_cmp(adms_instancenode(list->data),myterminal)) { adms_message_fatal(("instance=[%s] terminal=[%s] already defined\n", adms_instance_uid(mymyinstance),adms_instancenode_uid(myterminal))) return; } list=list->next; } adms_slist_push(&adms_instance_valueof_terminal(mymyinstance),adms_adms(myterminal)); } inline void adms_instance_valueto_parameterset (p_instance myinstance,p_slist _parameterset) { myinstance->_parameterset=_parameterset; myinstance->_parameterset_isdefault=0; } p_instanceparameter adms_instance_list_parameterset_lookup_by_id (p_instance mymyinstance,p_variable myparameter) { p_slist list=adms_instance_valueof_parameterset(mymyinstance); while(list) { p_instanceparameter refinstanceparameter=adms_instanceparameter(list->data); if((adms_instanceparameter_valueof_parameter(refinstanceparameter)==myparameter)) return refinstanceparameter; list=list->next; } return NULL; } p_instanceparameter adms_instance_list_parameterset_prepend_by_id (p_instance mymyinstance,p_variable myparameter) { p_instanceparameter refparameterset=adms_instanceparameter_new(myparameter); adms_slist_push(&adms_instance_valueof_parameterset(mymyinstance),adms_adms(refparameterset)); return refparameterset; } p_instanceparameter adms_instance_list_parameterset_prepend_by_id_once_or_abort (p_instance mymyinstance,p_variable myparameter) { p_slist list=adms_instance_valueof_parameterset(mymyinstance); p_instanceparameter refparameterset=adms_instanceparameter_new(myparameter); while(list) { if(!adms_instanceparameter_cmp(adms_instanceparameter(list->data),refparameterset)) { adms_message_fatal(("instance=[%s] parameterset=[%s] already defined\n", adms_instance_uid(mymyinstance),adms_instanceparameter_uid(refparameterset))) adms_instanceparameter_free (refparameterset); } list=list->next; } adms_slist_push(&adms_instance_valueof_parameterset(mymyinstance),adms_adms(refparameterset)); return refparameterset; } void adms_instance_list_parameterset_prepend_once_or_abort (p_instance mymyinstance,p_instanceparameter myparameterset) { p_slist list=adms_instance_valueof_parameterset(mymyinstance); while(list) { if(!adms_instanceparameter_cmp(adms_instanceparameter(list->data),myparameterset)) { adms_message_fatal(("instance=[%s] parameterset=[%s] already defined\n", adms_instance_uid(mymyinstance),adms_instanceparameter_uid(myparameterset))) return; } list=list->next; } adms_slist_push(&adms_instance_valueof_parameterset(mymyinstance),adms_adms(myparameterset)); }