/* ------- code automatically created by ../scripts/adms_build_object.pl -------------- */ #include #include inline void adms_assignment_free(p_assignment myassignment) { if(!myassignment) return; adms_enumeration_free(myassignment->_math._dependency); free(myassignment->_math._value); {p_slist l=myassignment->_attribute;for(;l;l=l->next) adms_attribute_free(adms_attribute(l->data));} adms_slist_free(myassignment->_attribute); adms_quark_free(myassignment->_name); adms_global_increment_nbassignmentdestroy(); free(myassignment); } int adms_assignment_cmp (p_assignment myassignment,p_assignment refassignment) { int status; status = ( (adms_assignment_valueof_module (myassignment) != adms_assignment_valueof_module (refassignment)) || (adms_assignment_valueof_lhs (myassignment) != adms_assignment_valueof_lhs (refassignment)) || (adms_assignment_valueof_rhs (myassignment) != adms_assignment_valueof_rhs (refassignment)) ); return status; } p_assignment adms_assignment_new(p_module mymodule,p_variable mylhs,p_expression myrhs) { p_assignment mynewassignment=(p_assignment) calloc(1,(size_t)sizeof(t_assignment)); adms_global_increment_nbassignmentnew(); mynewassignment->_math._adms._datatypename=adms_adms_enumeration_datatypename_assignment; mynewassignment->_math._adms._seen=adms_adms_enumeration_seen_no; (mynewassignment->_math)._value=adms_real_new(adms_NAN); (mynewassignment->_math)._static=adms_enumeration_new(adms_math_enumeration_static_no,adms_math_fromstring_static_impl,adms_math_tostring_static_impl); (mynewassignment->_math)._dynamic=adms_enumeration_new(adms_math_enumeration_dynamic_no,adms_math_fromstring_dynamic_impl,adms_math_tostring_dynamic_impl); (mynewassignment->_math)._dependency=adms_enumeration_new(adms_math_enumeration_dependency_constant,adms_math_fromstring_dependency_impl,adms_math_tostring_dependency_impl); mynewassignment->_module_isdefault=-1; adms_assignment_valueto_module (mynewassignment,mymodule); mynewassignment->_module_isdefault=1; mynewassignment->_lhs_isdefault=-1; adms_assignment_valueto_lhs (mynewassignment,mylhs); mynewassignment->_lhs_isdefault=1; mynewassignment->_rhs_isdefault=-1; adms_assignment_valueto_rhs (mynewassignment,myrhs); mynewassignment->_rhs_isdefault=1; mynewassignment->_name_isdefault=-1; adms_assignment_valueto_name(mynewassignment,adms_quark_new("")); mynewassignment->_name_isdefault=1; mynewassignment->_attribute_isdefault=-1; return mynewassignment; } p_adms adms_assignment_new_impl (p_adms arguments[]) { p_assignment mynewassignment; p_module mymodule=(p_module)arguments[0]; p_variable mylhs=(p_variable)arguments[1]; p_expression myrhs=(p_expression)arguments[2]; mynewassignment=adms_assignment_new(mymodule,mylhs,myrhs); return adms_adms(mynewassignment); } /*assignment $2=$3;*/ char*adms_assignment_uid (p_assignment mynewassignment) { char*myuid=NULL; char*myuid0=adms_variable_uid(mynewassignment->_lhs); char*myuid1=adms_expression_uid(mynewassignment->_rhs); adms_strconcat2(&myuid,"assignment "); adms_strconcat(&myuid,myuid0); adms_strconcat2(&myuid,"="); adms_strconcat(&myuid,myuid1); adms_strconcat2(&myuid,";"); return myuid; } inline void adms_assignment_valueto_module (p_assignment myassignment,p_module _module) { myassignment->_module=_module; myassignment->_module_isdefault=0; } inline void adms_assignment_valueto_lhs (p_assignment myassignment,p_variable _lhs) { myassignment->_lhs=_lhs; myassignment->_lhs_isdefault=0; } inline void adms_assignment_valueto_rhs (p_assignment myassignment,p_expression _rhs) { myassignment->_rhs=_rhs; myassignment->_rhs_isdefault=0; } inline void adms_assignment_valueto_name (p_assignment myassignment,p_quark _name) { if(myassignment->_name_isdefault!=-1) adms_quark_free(myassignment->_name); myassignment->_name=_name; myassignment->_name_isdefault=0; } inline void adms_assignment_valueto_attribute (p_assignment myassignment,p_slist _attribute) { myassignment->_attribute=_attribute; myassignment->_attribute_isdefault=0; } p_attribute adms_assignment_list_attribute_lookup_by_id (p_assignment mymyassignment,p_quark myname) { p_slist list=adms_assignment_valueof_attribute(mymyassignment); while(list) { p_attribute refattribute=adms_attribute(list->data); if(!strcmp(adms_attribute_valueof_name(refattribute)->_value,myname->_value)) return refattribute; list=list->next; } return NULL; } p_attribute adms_assignment_list_attribute_prepend_by_id (p_assignment mymyassignment,p_quark myname) { p_attribute refattribute=adms_attribute_new(myname); adms_slist_push(&adms_assignment_valueof_attribute(mymyassignment),adms_adms(refattribute)); return refattribute; } p_attribute adms_assignment_list_attribute_prepend_by_id_once_or_ignore (p_assignment mymyassignment,p_quark myname) { p_attribute refattribute=adms_attribute_new(myname); adms_slist_push(&adms_assignment_valueof_attribute(mymyassignment),adms_adms(refattribute)); return refattribute; } void adms_assignment_list_attribute_prepend (p_assignment mymyassignment,p_attribute myattribute) { adms_slist_push(&adms_assignment_valueof_attribute(mymyassignment),adms_adms(myattribute)); }