/* ------- code automatically created by ../scripts/adms_build_object.pl -------------- */ #include #include inline void adms_function_free(p_function myfunction) { if(!myfunction) return; adms_enumeration_free(myfunction->_subexpression._math._dependency); free(myfunction->_subexpression._math._value); adms_slist_free(myfunction->_arguments); adms_quark_free(myfunction->_name); adms_enumeration_free(myfunction->_class); adms_global_increment_nbfunctiondestroy(); free(myfunction); } int adms_function_cmp (p_function myfunction,p_function reffunction) { int status; status = ( !!strcmp(adms_function_valueof_name (myfunction)->_value,adms_function_valueof_name (reffunction)->_value) || (adms_function_valueof_unique_id (myfunction) != adms_function_valueof_unique_id (reffunction)) ); return status; } p_function adms_function_new(p_quark myname,p_integer myunique_id) { p_function mynewfunction=(p_function) calloc(1,(size_t)sizeof(t_function)); adms_global_increment_nbfunctionnew(); mynewfunction->_subexpression._math._adms._datatypename=adms_adms_enumeration_datatypename_function; mynewfunction->_subexpression._math._adms._seen=adms_adms_enumeration_seen_no; (mynewfunction->_subexpression._math)._value=adms_real_new(adms_NAN); (mynewfunction->_subexpression._math)._static=adms_enumeration_new(adms_math_enumeration_static_no,adms_math_fromstring_static_impl,adms_math_tostring_static_impl); (mynewfunction->_subexpression._math)._dynamic=adms_enumeration_new(adms_math_enumeration_dynamic_no,adms_math_fromstring_dynamic_impl,adms_math_tostring_dynamic_impl); (mynewfunction->_subexpression._math)._dependency=adms_enumeration_new(adms_math_enumeration_dependency_constant,adms_math_fromstring_dependency_impl,adms_math_tostring_dependency_impl); mynewfunction->_name_isdefault=-1; adms_function_valueto_name (mynewfunction,myname); mynewfunction->_name_isdefault=1; mynewfunction->_unique_id_isdefault=-1; adms_function_valueto_unique_id (mynewfunction,myunique_id); mynewfunction->_unique_id_isdefault=1; mynewfunction->_definition_isdefault=-1; mynewfunction->_class_isdefault=-1; adms_function_valueto_class(mynewfunction,adms_enumeration_new(adms_function_enumeration_class_analog,adms_function_fromstring_class_impl,adms_function_tostring_class_impl)); mynewfunction->_class_isdefault=1; mynewfunction->_arguments_isdefault=-1; return mynewfunction; } p_adms adms_function_new_impl (p_adms arguments[]) { p_function mynewfunction; p_quark myname=adms_quark_new((char*)arguments[0]); p_integer myunique_id=(p_integer)arguments[1]; mynewfunction=adms_function_new(myname,myunique_id); return adms_adms(mynewfunction); } /*$1()*/ char*adms_function_uid (p_function mynewfunction) { char*myuid=NULL; char*myuid0=adms_quark_uid(mynewfunction->_name); adms_strconcat(&myuid,myuid0); adms_strconcat2(&myuid,"()"); return myuid; } inline void adms_function_valueto_name (p_function myfunction,p_quark _name) { if(myfunction->_name_isdefault!=-1) adms_quark_free(myfunction->_name); myfunction->_name=_name; myfunction->_name_isdefault=0; } inline void adms_function_valueto_unique_id (p_function myfunction,p_integer _unique_id) { myfunction->_unique_id=_unique_id; myfunction->_unique_id_isdefault=0; } inline void adms_function_valueto_definition (p_function myfunction,p_analogfunction _definition) { myfunction->_definition=_definition; myfunction->_definition_isdefault=0; } inline void adms_function_valueto_class (p_function myfunction,p_enumeration _class) { myfunction->_class=_class; myfunction->_class_isdefault=0; } inline void adms_function_valueto_arguments (p_function myfunction,p_slist _arguments) { myfunction->_arguments=_arguments; myfunction->_arguments_isdefault=0; } void adms_function_list_arguments_prepend (p_function mymyfunction,p_adms myarguments) { adms_slist_push(&adms_function_valueof_arguments(mymyfunction),adms_adms(myarguments)); } e_function_class adms_function_fromstring_class_impl (p_admsttransform myadmsttransform,char*token) { if(!strcmp(token,"analog")) return adms_function_enumeration_class_analog; if(!strcmp(token,"builtin")) return adms_function_enumeration_class_builtin; if(!strcmp(token,"digital")) return adms_function_enumeration_class_digital; adms_message_fatal_continue(("select='function/class': possible values:\n")) adms_message_fatal_continue(("analog|builtin|digital\n")) adms_message_fatal(("see %s\n",adms_admsttransform_uid(myadmsttransform))) return 0; } char* adms_function_tostring_class_impl (p_admsttransform myadmsttransform,p_enumeration myenumeration) { e_function_class e=myenumeration->_value; if(e==adms_function_enumeration_class_analog) return "analog"; if(e==adms_function_enumeration_class_builtin) return "builtin"; if(e==adms_function_enumeration_class_digital) return "digital"; adms_message_fatal_continue(("select='function/class': possible values:\n")) adms_message_fatal_continue(("analog|builtin|digital\n")) adms_message_fatal(("see %s\n",adms_admsttransform_uid(myadmsttransform))) return NULL; }