/* ------- code automatically created by ../scripts/adms_build_object.pl -------------- */ #include #include inline void adms_analogfunction_free(p_analogfunction myanalogfunction) { if(!myanalogfunction) return; adms_slist_free(myanalogfunction->_variable); adms_quark_free(myanalogfunction->_name); adms_enumeration_free(myanalogfunction->_type); if(myanalogfunction->_tree) if(adms_adms(myanalogfunction->_tree)->_datatypename==adms_adms_enumeration_datatypename_quark) adms_quark_free(adms_quark(myanalogfunction->_tree)); adms_global_increment_nbanalogfunctiondestroy(); free(myanalogfunction); } int adms_analogfunction_cmp (p_analogfunction myanalogfunction,p_analogfunction refanalogfunction) { int status; status = ( (adms_analogfunction_valueof_module (myanalogfunction) != adms_analogfunction_valueof_module (refanalogfunction)) || !!strcmp(adms_analogfunction_valueof_name (myanalogfunction)->_value,adms_analogfunction_valueof_name (refanalogfunction)->_value) ); return status; } p_analogfunction adms_analogfunction_new(p_module mymodule,p_quark myname) { p_analogfunction mynewanalogfunction=(p_analogfunction) calloc(1,(size_t)sizeof(t_analogfunction)); adms_global_increment_nbanalogfunctionnew(); mynewanalogfunction->_adms._datatypename=adms_adms_enumeration_datatypename_analogfunction; mynewanalogfunction->_adms._seen=adms_adms_enumeration_seen_no; mynewanalogfunction->_module_isdefault=-1; adms_analogfunction_valueto_module (mynewanalogfunction,mymodule); mynewanalogfunction->_module_isdefault=1; mynewanalogfunction->_name_isdefault=-1; adms_analogfunction_valueto_name (mynewanalogfunction,myname); mynewanalogfunction->_name_isdefault=1; mynewanalogfunction->_type_isdefault=-1; adms_analogfunction_valueto_type(mynewanalogfunction,adms_enumeration_new(adms_analogfunction_enumeration_type_real,adms_analogfunction_fromstring_type_impl,adms_analogfunction_tostring_type_impl)); mynewanalogfunction->_type_isdefault=1; mynewanalogfunction->_tree_isdefault=-1; mynewanalogfunction->_variable_isdefault=-1; return mynewanalogfunction; } p_adms adms_analogfunction_new_impl (p_adms arguments[]) { p_analogfunction mynewanalogfunction; p_module mymodule=(p_module)arguments[0]; p_quark myname=adms_quark_new((char*)arguments[1]); mynewanalogfunction=adms_analogfunction_new(mymodule,myname); return adms_adms(mynewanalogfunction); } /*$1:$2*/ char*adms_analogfunction_uid (p_analogfunction mynewanalogfunction) { char*myuid=NULL; char*myuid0=adms_module_uid(mynewanalogfunction->_module); char*myuid1=adms_quark_uid(mynewanalogfunction->_name); adms_strconcat(&myuid,myuid0); adms_strconcat2(&myuid,":"); adms_strconcat(&myuid,myuid1); return myuid; } inline void adms_analogfunction_valueto_module (p_analogfunction myanalogfunction,p_module _module) { myanalogfunction->_module=_module; myanalogfunction->_module_isdefault=0; } inline void adms_analogfunction_valueto_name (p_analogfunction myanalogfunction,p_quark _name) { if(myanalogfunction->_name_isdefault!=-1) adms_quark_free(myanalogfunction->_name); myanalogfunction->_name=_name; myanalogfunction->_name_isdefault=0; } inline void adms_analogfunction_valueto_type (p_analogfunction myanalogfunction,p_enumeration _type) { myanalogfunction->_type=_type; myanalogfunction->_type_isdefault=0; } inline void adms_analogfunction_valueto_tree (p_analogfunction myanalogfunction,p_adms _tree) { myanalogfunction->_tree=_tree; myanalogfunction->_tree_isdefault=0; } inline void adms_analogfunction_valueto_variable (p_analogfunction myanalogfunction,p_slist _variable) { myanalogfunction->_variable=_variable; myanalogfunction->_variable_isdefault=0; } p_variable adms_analogfunction_list_variable_lookup_by_id (p_analogfunction mymyanalogfunction,p_module mymodule,p_quark myname,p_adms myblock) { p_slist list=adms_analogfunction_valueof_variable(mymyanalogfunction); 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_analogfunction_list_variable_prepend_by_id (p_analogfunction mymyanalogfunction,p_module mymodule,p_quark myname,p_adms myblock) { p_variable refvariable=adms_variable_new(mymodule,myname,myblock); adms_slist_push(&adms_analogfunction_valueof_variable(mymyanalogfunction),adms_adms(refvariable)); return refvariable; } p_variable adms_analogfunction_list_variable_prepend_by_id_once_or_abort (p_analogfunction mymyanalogfunction,p_module mymodule,p_quark myname,p_adms myblock) { p_slist list=adms_analogfunction_valueof_variable(mymyanalogfunction); p_variable refvariable=adms_variable_new(mymodule,myname,myblock); while(list) { if(!adms_variable_cmp(adms_variable(list->data),refvariable)) { adms_message_fatal(("analogfunction=[%s] variable=[%s] already defined\n", adms_analogfunction_uid(mymyanalogfunction),adms_variable_uid(refvariable))) adms_variable_free (refvariable); } list=list->next; } adms_slist_push(&adms_analogfunction_valueof_variable(mymyanalogfunction),adms_adms(refvariable)); return refvariable; } void adms_analogfunction_list_variable_prepend_once_or_abort (p_analogfunction mymyanalogfunction,p_variable myvariable) { p_slist list=adms_analogfunction_valueof_variable(mymyanalogfunction); while(list) { if(!adms_variable_cmp(adms_variable(list->data),myvariable)) { adms_message_fatal(("analogfunction=[%s] variable=[%s] already defined\n", adms_analogfunction_uid(mymyanalogfunction),adms_variable_uid(myvariable))) return; } list=list->next; } adms_slist_push(&adms_analogfunction_valueof_variable(mymyanalogfunction),adms_adms(myvariable)); } e_analogfunction_type adms_analogfunction_fromstring_type_impl (p_admsttransform myadmsttransform,char*token) { if(!strcmp(token,"integer")) return adms_analogfunction_enumeration_type_integer; if(!strcmp(token,"real")) return adms_analogfunction_enumeration_type_real; adms_message_fatal_continue(("select='analogfunction/type': possible values:\n")) adms_message_fatal_continue(("integer|real\n")) adms_message_fatal(("see %s\n",adms_admsttransform_uid(myadmsttransform))) return 0; } char* adms_analogfunction_tostring_type_impl (p_admsttransform myadmsttransform,p_enumeration myenumeration) { e_analogfunction_type e=myenumeration->_value; if(e==adms_analogfunction_enumeration_type_integer) return "integer"; if(e==adms_analogfunction_enumeration_type_real) return "real"; adms_message_fatal_continue(("select='analogfunction/type': possible values:\n")) adms_message_fatal_continue(("integer|real\n")) adms_message_fatal(("see %s\n",adms_admsttransform_uid(myadmsttransform))) return NULL; }