#ifdef OMC_BASE_FILE
#define OMC_FILE OMC_BASE_FILE
#else
#define OMC_FILE "/home/mahge/dev/OpenModelica/OMCompiler/Compiler/boot/build/tmp/OperatorOverloading.c"
#endif
#include "omc_simulation_settings.h"
#include "OperatorOverloading.h"
#define _OMC_LIT0_data "'constructor'"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT0,13,_OMC_LIT0_data);
#define _OMC_LIT0 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT0)
#define _OMC_LIT1_data ","
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT1,1,_OMC_LIT1_data);
#define _OMC_LIT1 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT1)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT2,1,5) {&ErrorTypes_MessageType_TRANSLATION__desc,}};
#define _OMC_LIT2 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT2)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT3,1,4) {&ErrorTypes_Severity_ERROR__desc,}};
#define _OMC_LIT3 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT3)
#define _OMC_LIT4_data "Operator overloading requires exactly one matching expression, but found %s expressions: %s"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT4,91,_OMC_LIT4_data);
#define _OMC_LIT4 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT4)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT5,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT4}};
#define _OMC_LIT5 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT5)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT6,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(270)),_OMC_LIT2,_OMC_LIT3,_OMC_LIT5}};
#define _OMC_LIT6 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT7,1,5) {&ErrorTypes_Severity_WARNING__desc,}};
#define _OMC_LIT7 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT7)
#define _OMC_LIT8_data "In relation %s, %s on Real numbers is only allowed inside functions."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT8,68,_OMC_LIT8_data);
#define _OMC_LIT8 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT8)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT9,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT8}};
#define _OMC_LIT9 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT9)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT10,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(509)),_OMC_LIT2,_OMC_LIT7,_OMC_LIT9}};
#define _OMC_LIT10 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT10)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT11,1,11) {&DAE_Type_T__UNKNOWN__desc,}};
#define _OMC_LIT11 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT11)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT12,1,7) {&DAE_InlineType_NO__INLINE__desc,}};
#define _OMC_LIT12 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT12)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT13,1,3) {&DAE_TailCall_NO__TAIL__desc,}};
#define _OMC_LIT13 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT13)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT14,8,3) {&DAE_CallAttributes_CALL__ATTR__desc,_OMC_LIT11,MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),_OMC_LIT12,_OMC_LIT13}};
#define _OMC_LIT14 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT14)
#define _OMC_LIT15_data "checkModel"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT15,10,_OMC_LIT15_data);
#define _OMC_LIT15 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT15)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT16,1,3) {&Flags_FlagVisibility_INTERNAL__desc,}};
#define _OMC_LIT16 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT16)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT17,2,4) {&Flags_FlagData_BOOL__FLAG__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(0))}};
#define _OMC_LIT17 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT17)
#define _OMC_LIT18_data "Set when checkModel is used to turn on specific features for checking."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT18,70,_OMC_LIT18_data);
#define _OMC_LIT18 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT18)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT19,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT18}};
#define _OMC_LIT19 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT19)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT20,8,3) {&Flags_ConfigFlag_CONFIG__FLAG__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(31)),_OMC_LIT15,MMC_REFSTRUCTLIT(mmc_none),_OMC_LIT16,_OMC_LIT17,MMC_REFSTRUCTLIT(mmc_none),_OMC_LIT19}};
#define _OMC_LIT20 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT20)
#define _OMC_LIT21_data "Incompatible argument types to operation %s in component %s, left type: %s, right type: %s"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT21,90,_OMC_LIT21_data);
#define _OMC_LIT21 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT21)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT22,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT21}};
#define _OMC_LIT22 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT22)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT23,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(85)),_OMC_LIT2,_OMC_LIT3,_OMC_LIT22}};
#define _OMC_LIT23 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT23)
#define _OMC_LIT24_data "vector addition"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT24,15,_OMC_LIT24_data);
#define _OMC_LIT24 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT24)
#define _OMC_LIT25_data "vector subtraction"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT25,18,_OMC_LIT25_data);
#define _OMC_LIT25 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT25)
#define _OMC_LIT26_data "vector elementwise multiplication"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT26,33,_OMC_LIT26_data);
#define _OMC_LIT26 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT26)
#define _OMC_LIT27_data "vector elementwise division"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT27,27,_OMC_LIT27_data);
#define _OMC_LIT27 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT27)
#define _OMC_LIT28_data "elementwise vector^vector"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT28,25,_OMC_LIT28_data);
#define _OMC_LIT28 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT28)
#define _OMC_LIT29_data "scalar product"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT29,14,_OMC_LIT29_data);
#define _OMC_LIT29 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT29)
#define _OMC_LIT30_data "matrix multiplication"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT30,21,_OMC_LIT30_data);
#define _OMC_LIT30 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT30)
#define _OMC_LIT31_data "and"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT31,3,_OMC_LIT31_data);
#define _OMC_LIT31 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT31)
#define _OMC_LIT32_data "or"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT32,2,_OMC_LIT32_data);
#define _OMC_LIT32 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT32)
#define _OMC_LIT33_data ", "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT33,2,_OMC_LIT33_data);
#define _OMC_LIT33 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT33)
#define _OMC_LIT34_data "Cannot resolve type of expression %s. The operands have types %s in component %s."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT34,81,_OMC_LIT34_data);
#define _OMC_LIT34 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT34)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT35,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT34}};
#define _OMC_LIT35 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT35)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT36,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(84)),_OMC_LIT2,_OMC_LIT3,_OMC_LIT35}};
#define _OMC_LIT36 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT36)
#define _OMC_LIT37_data "Operator %s is not an input to the overloaded function: %s"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT37,58,_OMC_LIT37_data);
#define _OMC_LIT37 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT37)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT38,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT37}};
#define _OMC_LIT38 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT38)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT39,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(271)),_OMC_LIT2,_OMC_LIT3,_OMC_LIT38}};
#define _OMC_LIT39 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT39)
#define _OMC_LIT40_data "'0'"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT40,3,_OMC_LIT40_data);
#define _OMC_LIT40 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT40)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT41,1,5) {&OperatorOverloading_AvlTreePathOperatorTypes_Tree_EMPTY__desc,}};
#define _OMC_LIT41 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT41)
#define _OMC_LIT42_data "."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT42,1,_OMC_LIT42_data);
#define _OMC_LIT42 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT42)
#define _OMC_LIT43_data "("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT43,1,_OMC_LIT43_data);
#define _OMC_LIT43 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT43)
#define _OMC_LIT44_data ")"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT44,1,_OMC_LIT44_data);
#define _OMC_LIT44 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT44)
#define _OMC_LIT45_data "EMPTY()"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT45,7,_OMC_LIT45_data);
#define _OMC_LIT45 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT45)
#define _OMC_LIT46_data ""
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT46,0,_OMC_LIT46_data);
#define _OMC_LIT46 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT46)
#define _OMC_LIT47_data "\n"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT47,1,_OMC_LIT47_data);
#define _OMC_LIT47 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT47)
#define _OMC_LIT48_data "     "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT48,5,_OMC_LIT48_data);
#define _OMC_LIT48 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT48)
#define _OMC_LIT49_data " │   "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT49,7,_OMC_LIT49_data);
#define _OMC_LIT49 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT49)
#define _OMC_LIT50_data " ┌"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT50,4,_OMC_LIT50_data);
#define _OMC_LIT50 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT50)
#define _OMC_LIT51_data " └"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT51,4,_OMC_LIT51_data);
#define _OMC_LIT51 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT51)
#define _OMC_LIT52_data "────"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT52,12,_OMC_LIT52_data);
#define _OMC_LIT52 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT52)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT53,1,5) {&OperatorOverloading_AvlTreePathPathEnv_Tree_EMPTY__desc,}};
#define _OMC_LIT53 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT53)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT54,1,3) {&Util_Status_SUCCESS__desc,}};
#define _OMC_LIT54 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT54)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT55,2,6) {&DAE_Type_T__BOOL__desc,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT55 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT55)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT56,2,4) {&Absyn_Path_IDENT__desc,_OMC_LIT46}};
#define _OMC_LIT56 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT56)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT57,6,8) {&DAE_Type_T__ENUMERATION__desc,MMC_REFSTRUCTLIT(mmc_none),_OMC_LIT56,MMC_REFSTRUCTLIT(mmc_nil),MMC_REFSTRUCTLIT(mmc_nil),MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT57 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT57)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT58,2,1) {_OMC_LIT57,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT58 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT58)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT59,2,1) {_OMC_LIT57,_OMC_LIT58}};
#define _OMC_LIT59 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT59)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT60,2,3) {&DAE_Type_T__INTEGER__desc,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT60 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT60)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT61,2,8) {&DAE_Operator_UMINUS__desc,_OMC_LIT60}};
#define _OMC_LIT61 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT61)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT62,2,1) {_OMC_LIT60,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT62 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT62)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT63,3,0) {_OMC_LIT61,_OMC_LIT62,_OMC_LIT60}};
#define _OMC_LIT63 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT63)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT64,2,4) {&DAE_Type_T__REAL__desc,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT64 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT64)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT65,2,8) {&DAE_Operator_UMINUS__desc,_OMC_LIT64}};
#define _OMC_LIT65 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT65)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT66,2,1) {_OMC_LIT64,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT66 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT66)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT67,3,0) {_OMC_LIT65,_OMC_LIT66,_OMC_LIT64}};
#define _OMC_LIT67 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT67)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT68,2,1) {_OMC_LIT67,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT68 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT68)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT69,2,1) {_OMC_LIT63,_OMC_LIT68}};
#define _OMC_LIT69 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT69)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT70,1,7) {&DAE_Dimension_DIM__UNKNOWN__desc,}};
#define _OMC_LIT70 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT70)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT71,2,1) {_OMC_LIT70,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT71 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT71)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT72,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT60,_OMC_LIT71}};
#define _OMC_LIT72 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT72)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT73,2,9) {&DAE_Operator_UMINUS__ARR__desc,_OMC_LIT72}};
#define _OMC_LIT73 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT73)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT74,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT72,_OMC_LIT71}};
#define _OMC_LIT74 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT74)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT75,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT74,_OMC_LIT71}};
#define _OMC_LIT75 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT75)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT76,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT75,_OMC_LIT71}};
#define _OMC_LIT76 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT76)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT77,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT76,_OMC_LIT71}};
#define _OMC_LIT77 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT77)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT78,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT77,_OMC_LIT71}};
#define _OMC_LIT78 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT78)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT79,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT78,_OMC_LIT71}};
#define _OMC_LIT79 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT79)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT80,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT79,_OMC_LIT71}};
#define _OMC_LIT80 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT80)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT81,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT80,_OMC_LIT71}};
#define _OMC_LIT81 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT81)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT82,2,1) {_OMC_LIT81,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT82 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT82)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT83,2,1) {_OMC_LIT80,_OMC_LIT82}};
#define _OMC_LIT83 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT83)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT84,2,1) {_OMC_LIT79,_OMC_LIT83}};
#define _OMC_LIT84 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT84)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT85,2,1) {_OMC_LIT78,_OMC_LIT84}};
#define _OMC_LIT85 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT85)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT86,2,1) {_OMC_LIT77,_OMC_LIT85}};
#define _OMC_LIT86 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT86)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT87,2,1) {_OMC_LIT76,_OMC_LIT86}};
#define _OMC_LIT87 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT87)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT88,2,1) {_OMC_LIT75,_OMC_LIT87}};
#define _OMC_LIT88 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT88)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT89,2,1) {_OMC_LIT74,_OMC_LIT88}};
#define _OMC_LIT89 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT89)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT90,2,1) {_OMC_LIT72,_OMC_LIT89}};
#define _OMC_LIT90 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT90)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT91,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT64,_OMC_LIT71}};
#define _OMC_LIT91 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT91)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT92,2,9) {&DAE_Operator_UMINUS__ARR__desc,_OMC_LIT91}};
#define _OMC_LIT92 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT92)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT93,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT91,_OMC_LIT71}};
#define _OMC_LIT93 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT93)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT94,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT93,_OMC_LIT71}};
#define _OMC_LIT94 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT94)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT95,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT94,_OMC_LIT71}};
#define _OMC_LIT95 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT95)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT96,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT95,_OMC_LIT71}};
#define _OMC_LIT96 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT96)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT97,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT96,_OMC_LIT71}};
#define _OMC_LIT97 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT97)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT98,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT97,_OMC_LIT71}};
#define _OMC_LIT98 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT98)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT99,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT98,_OMC_LIT71}};
#define _OMC_LIT99 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT99)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT100,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT99,_OMC_LIT71}};
#define _OMC_LIT100 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT100)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT101,2,1) {_OMC_LIT100,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT101 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT101)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT102,2,1) {_OMC_LIT99,_OMC_LIT101}};
#define _OMC_LIT102 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT102)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT103,2,1) {_OMC_LIT98,_OMC_LIT102}};
#define _OMC_LIT103 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT103)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT104,2,1) {_OMC_LIT97,_OMC_LIT103}};
#define _OMC_LIT104 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT104)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT105,2,1) {_OMC_LIT96,_OMC_LIT104}};
#define _OMC_LIT105 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT105)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT106,2,1) {_OMC_LIT95,_OMC_LIT105}};
#define _OMC_LIT106 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT106)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT107,2,1) {_OMC_LIT94,_OMC_LIT106}};
#define _OMC_LIT107 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT107)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT108,2,1) {_OMC_LIT93,_OMC_LIT107}};
#define _OMC_LIT108 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT108)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT109,2,1) {_OMC_LIT91,_OMC_LIT108}};
#define _OMC_LIT109 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT109)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT110,2,27) {&DAE_Operator_NOT__desc,_OMC_LIT55}};
#define _OMC_LIT110 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT110)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT111,2,1) {_OMC_LIT55,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT111 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT111)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT112,3,0) {_OMC_LIT110,_OMC_LIT111,_OMC_LIT55}};
#define _OMC_LIT112 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT112)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT113,2,1) {_OMC_LIT112,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT113 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT113)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT114,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT55,_OMC_LIT71}};
#define _OMC_LIT114 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT114)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT115,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT114,_OMC_LIT71}};
#define _OMC_LIT115 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT115)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT116,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT115,_OMC_LIT71}};
#define _OMC_LIT116 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT116)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT117,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT116,_OMC_LIT71}};
#define _OMC_LIT117 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT117)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT118,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT117,_OMC_LIT71}};
#define _OMC_LIT118 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT118)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT119,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT118,_OMC_LIT71}};
#define _OMC_LIT119 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT119)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT120,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT119,_OMC_LIT71}};
#define _OMC_LIT120 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT120)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT121,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT120,_OMC_LIT71}};
#define _OMC_LIT121 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT121)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT122,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT121,_OMC_LIT71}};
#define _OMC_LIT122 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT122)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT123,2,1) {_OMC_LIT122,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT123 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT123)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT124,2,1) {_OMC_LIT121,_OMC_LIT123}};
#define _OMC_LIT124 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT124)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT125,2,1) {_OMC_LIT120,_OMC_LIT124}};
#define _OMC_LIT125 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT125)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT126,2,1) {_OMC_LIT119,_OMC_LIT125}};
#define _OMC_LIT126 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT126)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT127,2,1) {_OMC_LIT118,_OMC_LIT126}};
#define _OMC_LIT127 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT127)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT128,2,1) {_OMC_LIT117,_OMC_LIT127}};
#define _OMC_LIT128 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT128)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT129,2,1) {_OMC_LIT116,_OMC_LIT128}};
#define _OMC_LIT129 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT129)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT130,2,1) {_OMC_LIT115,_OMC_LIT129}};
#define _OMC_LIT130 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT130)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT131,2,1) {_OMC_LIT114,_OMC_LIT130}};
#define _OMC_LIT131 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT131)
#define _OMC_LIT132_data "failtrace"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT132,9,_OMC_LIT132_data);
#define _OMC_LIT132 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT132)
#define _OMC_LIT133_data "Sets whether to print a failtrace or not."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT133,41,_OMC_LIT133_data);
#define _OMC_LIT133 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT133)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT134,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT133}};
#define _OMC_LIT134 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT134)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT135,5,3) {&Flags_DebugFlag_DEBUG__FLAG__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(1)),_OMC_LIT132,MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),_OMC_LIT134}};
#define _OMC_LIT135 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT135)
#define _OMC_LIT136_data "OperatorOverloading.operatorsUnary failed, op: "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT136,47,_OMC_LIT136_data);
#define _OMC_LIT136 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT136)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT137,1,10) {&Absyn_Operator_ADD__EW__desc,}};
#define _OMC_LIT137 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT137)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT138,2,3) {&DAE_Operator_ADD__desc,_OMC_LIT60}};
#define _OMC_LIT138 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT138)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT139,2,1) {_OMC_LIT60,_OMC_LIT62}};
#define _OMC_LIT139 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT139)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT140,3,0) {_OMC_LIT138,_OMC_LIT139,_OMC_LIT60}};
#define _OMC_LIT140 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT140)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT141,2,3) {&DAE_Operator_ADD__desc,_OMC_LIT64}};
#define _OMC_LIT141 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT141)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT142,2,1) {_OMC_LIT64,_OMC_LIT66}};
#define _OMC_LIT142 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT142)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT143,3,0) {_OMC_LIT141,_OMC_LIT142,_OMC_LIT64}};
#define _OMC_LIT143 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT143)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT144,2,5) {&DAE_Type_T__STRING__desc,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT144 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT144)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT145,2,3) {&DAE_Operator_ADD__desc,_OMC_LIT144}};
#define _OMC_LIT145 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT145)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT146,2,1) {_OMC_LIT144,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT146 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT146)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT147,2,1) {_OMC_LIT144,_OMC_LIT146}};
#define _OMC_LIT147 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT147)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT148,3,0) {_OMC_LIT145,_OMC_LIT147,_OMC_LIT144}};
#define _OMC_LIT148 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT148)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT149,2,10) {&DAE_Operator_ADD__ARR__desc,_OMC_LIT72}};
#define _OMC_LIT149 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT149)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT150,2,1) {_OMC_LIT72,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT150 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT150)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT151,2,1) {_OMC_LIT72,_OMC_LIT150}};
#define _OMC_LIT151 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT151)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT152,3,0) {_OMC_LIT149,_OMC_LIT151,_OMC_LIT72}};
#define _OMC_LIT152 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT152)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT153,2,1) {_OMC_LIT74,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT153 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT153)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT154,2,1) {_OMC_LIT74,_OMC_LIT153}};
#define _OMC_LIT154 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT154)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT155,3,0) {_OMC_LIT149,_OMC_LIT154,_OMC_LIT74}};
#define _OMC_LIT155 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT155)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT156,2,1) {_OMC_LIT75,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT156 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT156)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT157,2,1) {_OMC_LIT75,_OMC_LIT156}};
#define _OMC_LIT157 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT157)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT158,3,0) {_OMC_LIT149,_OMC_LIT157,_OMC_LIT75}};
#define _OMC_LIT158 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT158)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT159,2,1) {_OMC_LIT76,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT159 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT159)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT160,2,1) {_OMC_LIT76,_OMC_LIT159}};
#define _OMC_LIT160 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT160)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT161,3,0) {_OMC_LIT149,_OMC_LIT160,_OMC_LIT76}};
#define _OMC_LIT161 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT161)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT162,2,1) {_OMC_LIT77,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT162 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT162)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT163,2,1) {_OMC_LIT77,_OMC_LIT162}};
#define _OMC_LIT163 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT163)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT164,3,0) {_OMC_LIT149,_OMC_LIT163,_OMC_LIT77}};
#define _OMC_LIT164 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT164)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT165,2,1) {_OMC_LIT78,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT165 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT165)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT166,2,1) {_OMC_LIT78,_OMC_LIT165}};
#define _OMC_LIT166 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT166)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT167,3,0) {_OMC_LIT149,_OMC_LIT166,_OMC_LIT78}};
#define _OMC_LIT167 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT167)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT168,2,1) {_OMC_LIT79,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT168 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT168)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT169,2,1) {_OMC_LIT79,_OMC_LIT168}};
#define _OMC_LIT169 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT169)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT170,3,0) {_OMC_LIT149,_OMC_LIT169,_OMC_LIT79}};
#define _OMC_LIT170 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT170)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT171,2,1) {_OMC_LIT80,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT171 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT171)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT172,2,1) {_OMC_LIT80,_OMC_LIT171}};
#define _OMC_LIT172 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT172)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT173,3,0) {_OMC_LIT149,_OMC_LIT172,_OMC_LIT80}};
#define _OMC_LIT173 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT173)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT174,2,1) {_OMC_LIT81,_OMC_LIT82}};
#define _OMC_LIT174 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT174)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT175,3,0) {_OMC_LIT149,_OMC_LIT174,_OMC_LIT81}};
#define _OMC_LIT175 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT175)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT176,2,10) {&DAE_Operator_ADD__ARR__desc,_OMC_LIT91}};
#define _OMC_LIT176 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT176)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT177,2,1) {_OMC_LIT91,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT177 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT177)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT178,2,1) {_OMC_LIT91,_OMC_LIT177}};
#define _OMC_LIT178 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT178)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT179,3,0) {_OMC_LIT176,_OMC_LIT178,_OMC_LIT91}};
#define _OMC_LIT179 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT179)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT180,2,1) {_OMC_LIT93,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT180 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT180)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT181,2,1) {_OMC_LIT93,_OMC_LIT180}};
#define _OMC_LIT181 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT181)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT182,3,0) {_OMC_LIT176,_OMC_LIT181,_OMC_LIT93}};
#define _OMC_LIT182 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT182)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT183,2,1) {_OMC_LIT94,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT183 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT183)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT184,2,1) {_OMC_LIT94,_OMC_LIT183}};
#define _OMC_LIT184 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT184)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT185,3,0) {_OMC_LIT176,_OMC_LIT184,_OMC_LIT94}};
#define _OMC_LIT185 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT185)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT186,2,1) {_OMC_LIT95,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT186 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT186)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT187,2,1) {_OMC_LIT95,_OMC_LIT186}};
#define _OMC_LIT187 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT187)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT188,3,0) {_OMC_LIT176,_OMC_LIT187,_OMC_LIT95}};
#define _OMC_LIT188 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT188)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT189,2,1) {_OMC_LIT96,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT189 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT189)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT190,2,1) {_OMC_LIT96,_OMC_LIT189}};
#define _OMC_LIT190 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT190)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT191,3,0) {_OMC_LIT176,_OMC_LIT190,_OMC_LIT96}};
#define _OMC_LIT191 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT191)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT192,2,1) {_OMC_LIT97,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT192 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT192)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT193,2,1) {_OMC_LIT97,_OMC_LIT192}};
#define _OMC_LIT193 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT193)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT194,3,0) {_OMC_LIT176,_OMC_LIT193,_OMC_LIT97}};
#define _OMC_LIT194 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT194)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT195,2,1) {_OMC_LIT98,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT195 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT195)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT196,2,1) {_OMC_LIT98,_OMC_LIT195}};
#define _OMC_LIT196 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT196)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT197,3,0) {_OMC_LIT176,_OMC_LIT196,_OMC_LIT98}};
#define _OMC_LIT197 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT197)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT198,2,1) {_OMC_LIT99,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT198 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT198)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT199,2,1) {_OMC_LIT99,_OMC_LIT198}};
#define _OMC_LIT199 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT199)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT200,3,0) {_OMC_LIT176,_OMC_LIT199,_OMC_LIT99}};
#define _OMC_LIT200 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT200)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT201,2,1) {_OMC_LIT100,_OMC_LIT101}};
#define _OMC_LIT201 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT201)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT202,3,0) {_OMC_LIT176,_OMC_LIT201,_OMC_LIT100}};
#define _OMC_LIT202 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT202)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT203,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT144,_OMC_LIT71}};
#define _OMC_LIT203 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT203)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT204,2,10) {&DAE_Operator_ADD__ARR__desc,_OMC_LIT203}};
#define _OMC_LIT204 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT204)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT205,2,1) {_OMC_LIT203,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT205 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT205)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT206,2,1) {_OMC_LIT203,_OMC_LIT205}};
#define _OMC_LIT206 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT206)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT207,3,0) {_OMC_LIT204,_OMC_LIT206,_OMC_LIT203}};
#define _OMC_LIT207 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT207)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT208,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT203,_OMC_LIT71}};
#define _OMC_LIT208 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT208)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT209,2,1) {_OMC_LIT208,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT209 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT209)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT210,2,1) {_OMC_LIT208,_OMC_LIT209}};
#define _OMC_LIT210 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT210)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT211,3,0) {_OMC_LIT204,_OMC_LIT210,_OMC_LIT208}};
#define _OMC_LIT211 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT211)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT212,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT208,_OMC_LIT71}};
#define _OMC_LIT212 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT212)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT213,2,1) {_OMC_LIT212,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT213 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT213)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT214,2,1) {_OMC_LIT212,_OMC_LIT213}};
#define _OMC_LIT214 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT214)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT215,3,0) {_OMC_LIT204,_OMC_LIT214,_OMC_LIT212}};
#define _OMC_LIT215 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT215)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT216,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT212,_OMC_LIT71}};
#define _OMC_LIT216 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT216)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT217,2,1) {_OMC_LIT216,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT217 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT217)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT218,2,1) {_OMC_LIT216,_OMC_LIT217}};
#define _OMC_LIT218 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT218)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT219,3,0) {_OMC_LIT204,_OMC_LIT218,_OMC_LIT216}};
#define _OMC_LIT219 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT219)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT220,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT216,_OMC_LIT71}};
#define _OMC_LIT220 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT220)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT221,2,1) {_OMC_LIT220,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT221 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT221)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT222,2,1) {_OMC_LIT220,_OMC_LIT221}};
#define _OMC_LIT222 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT222)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT223,3,0) {_OMC_LIT204,_OMC_LIT222,_OMC_LIT220}};
#define _OMC_LIT223 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT223)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT224,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT220,_OMC_LIT71}};
#define _OMC_LIT224 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT224)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT225,2,1) {_OMC_LIT224,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT225 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT225)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT226,2,1) {_OMC_LIT224,_OMC_LIT225}};
#define _OMC_LIT226 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT226)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT227,3,0) {_OMC_LIT204,_OMC_LIT226,_OMC_LIT224}};
#define _OMC_LIT227 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT227)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT228,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT224,_OMC_LIT71}};
#define _OMC_LIT228 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT228)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT229,2,1) {_OMC_LIT228,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT229 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT229)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT230,2,1) {_OMC_LIT228,_OMC_LIT229}};
#define _OMC_LIT230 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT230)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT231,3,0) {_OMC_LIT204,_OMC_LIT230,_OMC_LIT228}};
#define _OMC_LIT231 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT231)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT232,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT228,_OMC_LIT71}};
#define _OMC_LIT232 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT232)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT233,2,1) {_OMC_LIT232,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT233 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT233)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT234,2,1) {_OMC_LIT232,_OMC_LIT233}};
#define _OMC_LIT234 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT234)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT235,3,0) {_OMC_LIT204,_OMC_LIT234,_OMC_LIT232}};
#define _OMC_LIT235 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT235)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT236,3,9) {&DAE_Type_T__ARRAY__desc,_OMC_LIT232,_OMC_LIT71}};
#define _OMC_LIT236 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT236)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT237,2,1) {_OMC_LIT236,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT237 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT237)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT238,2,1) {_OMC_LIT236,_OMC_LIT237}};
#define _OMC_LIT238 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT238)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT239,3,0) {_OMC_LIT204,_OMC_LIT238,_OMC_LIT236}};
#define _OMC_LIT239 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT239)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_1,2,1) {_OMC_LIT239,MMC_REFSTRUCTLIT(mmc_nil)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_2,2,1) {_OMC_LIT235,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_1)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_3,2,1) {_OMC_LIT231,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_2)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_4,2,1) {_OMC_LIT227,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_3)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_5,2,1) {_OMC_LIT223,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_4)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_6,2,1) {_OMC_LIT219,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_5)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_7,2,1) {_OMC_LIT215,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_6)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_8,2,1) {_OMC_LIT211,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_7)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_9,2,1) {_OMC_LIT207,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_8)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_10,2,1) {_OMC_LIT202,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_9)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_11,2,1) {_OMC_LIT200,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_10)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_12,2,1) {_OMC_LIT197,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_11)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_13,2,1) {_OMC_LIT194,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_12)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_14,2,1) {_OMC_LIT191,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_13)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_15,2,1) {_OMC_LIT188,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_14)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_16,2,1) {_OMC_LIT185,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_15)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_17,2,1) {_OMC_LIT182,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_16)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_18,2,1) {_OMC_LIT179,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_17)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_19,2,1) {_OMC_LIT175,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_18)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_20,2,1) {_OMC_LIT173,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_19)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_21,2,1) {_OMC_LIT170,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_20)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_22,2,1) {_OMC_LIT167,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_21)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_23,2,1) {_OMC_LIT164,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_22)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_24,2,1) {_OMC_LIT161,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_23)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_25,2,1) {_OMC_LIT158,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_24)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_26,2,1) {_OMC_LIT155,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_25)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_27,2,1) {_OMC_LIT152,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_26)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_28,2,1) {_OMC_LIT148,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_27)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_29,2,1) {_OMC_LIT143,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_28)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_30,2,1) {_OMC_LIT140,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_29)}};
#define _OMC_LIT240 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT240_cons_30)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT241,2,15) {&DAE_Operator_ADD__ARRAY__SCALAR__desc,_OMC_LIT72}};
#define _OMC_LIT241 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT241)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT242,2,1) {_OMC_LIT72,_OMC_LIT62}};
#define _OMC_LIT242 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT242)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT243,3,0) {_OMC_LIT241,_OMC_LIT242,_OMC_LIT72}};
#define _OMC_LIT243 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT243)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT244,2,1) {_OMC_LIT74,_OMC_LIT62}};
#define _OMC_LIT244 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT244)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT245,3,0) {_OMC_LIT241,_OMC_LIT244,_OMC_LIT74}};
#define _OMC_LIT245 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT245)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT246,2,1) {_OMC_LIT75,_OMC_LIT62}};
#define _OMC_LIT246 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT246)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT247,3,0) {_OMC_LIT241,_OMC_LIT246,_OMC_LIT75}};
#define _OMC_LIT247 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT247)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT248,2,1) {_OMC_LIT76,_OMC_LIT62}};
#define _OMC_LIT248 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT248)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT249,3,0) {_OMC_LIT241,_OMC_LIT248,_OMC_LIT76}};
#define _OMC_LIT249 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT249)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT250,2,1) {_OMC_LIT77,_OMC_LIT62}};
#define _OMC_LIT250 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT250)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT251,3,0) {_OMC_LIT241,_OMC_LIT250,_OMC_LIT77}};
#define _OMC_LIT251 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT251)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT252,2,1) {_OMC_LIT78,_OMC_LIT62}};
#define _OMC_LIT252 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT252)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT253,3,0) {_OMC_LIT241,_OMC_LIT252,_OMC_LIT78}};
#define _OMC_LIT253 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT253)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT254,2,1) {_OMC_LIT79,_OMC_LIT62}};
#define _OMC_LIT254 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT254)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT255,3,0) {_OMC_LIT241,_OMC_LIT254,_OMC_LIT79}};
#define _OMC_LIT255 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT255)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT256,2,1) {_OMC_LIT80,_OMC_LIT62}};
#define _OMC_LIT256 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT256)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT257,3,0) {_OMC_LIT241,_OMC_LIT256,_OMC_LIT80}};
#define _OMC_LIT257 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT257)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT258,2,1) {_OMC_LIT81,_OMC_LIT62}};
#define _OMC_LIT258 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT258)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT259,3,0) {_OMC_LIT241,_OMC_LIT258,_OMC_LIT81}};
#define _OMC_LIT259 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT259)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT260,2,15) {&DAE_Operator_ADD__ARRAY__SCALAR__desc,_OMC_LIT91}};
#define _OMC_LIT260 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT260)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT261,2,1) {_OMC_LIT91,_OMC_LIT66}};
#define _OMC_LIT261 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT261)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT262,3,0) {_OMC_LIT260,_OMC_LIT261,_OMC_LIT91}};
#define _OMC_LIT262 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT262)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT263,2,1) {_OMC_LIT93,_OMC_LIT66}};
#define _OMC_LIT263 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT263)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT264,3,0) {_OMC_LIT260,_OMC_LIT263,_OMC_LIT93}};
#define _OMC_LIT264 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT264)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT265,2,1) {_OMC_LIT94,_OMC_LIT66}};
#define _OMC_LIT265 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT265)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT266,3,0) {_OMC_LIT260,_OMC_LIT265,_OMC_LIT94}};
#define _OMC_LIT266 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT266)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT267,2,1) {_OMC_LIT95,_OMC_LIT66}};
#define _OMC_LIT267 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT267)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT268,3,0) {_OMC_LIT260,_OMC_LIT267,_OMC_LIT95}};
#define _OMC_LIT268 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT268)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT269,2,1) {_OMC_LIT96,_OMC_LIT66}};
#define _OMC_LIT269 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT269)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT270,3,0) {_OMC_LIT260,_OMC_LIT269,_OMC_LIT96}};
#define _OMC_LIT270 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT270)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT271,2,1) {_OMC_LIT97,_OMC_LIT66}};
#define _OMC_LIT271 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT271)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT272,3,0) {_OMC_LIT260,_OMC_LIT271,_OMC_LIT97}};
#define _OMC_LIT272 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT272)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT273,2,1) {_OMC_LIT98,_OMC_LIT66}};
#define _OMC_LIT273 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT273)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT274,3,0) {_OMC_LIT260,_OMC_LIT273,_OMC_LIT98}};
#define _OMC_LIT274 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT274)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT275,2,1) {_OMC_LIT99,_OMC_LIT66}};
#define _OMC_LIT275 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT275)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT276,3,0) {_OMC_LIT260,_OMC_LIT275,_OMC_LIT99}};
#define _OMC_LIT276 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT276)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT277,2,1) {_OMC_LIT100,_OMC_LIT66}};
#define _OMC_LIT277 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT277)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT278,3,0) {_OMC_LIT260,_OMC_LIT277,_OMC_LIT100}};
#define _OMC_LIT278 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT278)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_1,2,1) {_OMC_LIT239,MMC_REFSTRUCTLIT(mmc_nil)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_2,2,1) {_OMC_LIT235,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_1)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_3,2,1) {_OMC_LIT231,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_2)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_4,2,1) {_OMC_LIT227,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_3)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_5,2,1) {_OMC_LIT223,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_4)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_6,2,1) {_OMC_LIT219,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_5)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_7,2,1) {_OMC_LIT215,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_6)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_8,2,1) {_OMC_LIT211,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_7)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_9,2,1) {_OMC_LIT207,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_8)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_10,2,1) {_OMC_LIT202,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_9)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_11,2,1) {_OMC_LIT200,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_10)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_12,2,1) {_OMC_LIT197,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_11)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_13,2,1) {_OMC_LIT194,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_12)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_14,2,1) {_OMC_LIT191,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_13)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_15,2,1) {_OMC_LIT188,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_14)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_16,2,1) {_OMC_LIT185,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_15)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_17,2,1) {_OMC_LIT182,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_16)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_18,2,1) {_OMC_LIT179,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_17)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_19,2,1) {_OMC_LIT175,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_18)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_20,2,1) {_OMC_LIT173,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_19)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_21,2,1) {_OMC_LIT170,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_20)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_22,2,1) {_OMC_LIT167,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_21)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_23,2,1) {_OMC_LIT164,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_22)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_24,2,1) {_OMC_LIT161,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_23)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_25,2,1) {_OMC_LIT158,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_24)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_26,2,1) {_OMC_LIT155,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_25)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_27,2,1) {_OMC_LIT152,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_26)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_28,2,1) {_OMC_LIT148,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_27)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_29,2,1) {_OMC_LIT143,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_28)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_30,2,1) {_OMC_LIT140,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_29)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_31,2,1) {_OMC_LIT278,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_30)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_32,2,1) {_OMC_LIT276,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_31)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_33,2,1) {_OMC_LIT274,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_32)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_34,2,1) {_OMC_LIT272,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_33)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_35,2,1) {_OMC_LIT270,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_34)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_36,2,1) {_OMC_LIT268,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_35)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_37,2,1) {_OMC_LIT266,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_36)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_38,2,1) {_OMC_LIT264,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_37)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_39,2,1) {_OMC_LIT262,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_38)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_40,2,1) {_OMC_LIT259,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_39)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_41,2,1) {_OMC_LIT257,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_40)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_42,2,1) {_OMC_LIT255,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_41)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_43,2,1) {_OMC_LIT253,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_42)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_44,2,1) {_OMC_LIT251,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_43)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_45,2,1) {_OMC_LIT249,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_44)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_46,2,1) {_OMC_LIT247,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_45)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_47,2,1) {_OMC_LIT245,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_46)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_48,2,1) {_OMC_LIT243,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_47)}};
#define _OMC_LIT279 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT279_cons_48)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT280,2,4) {&DAE_Operator_SUB__desc,_OMC_LIT60}};
#define _OMC_LIT280 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT280)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT281,3,0) {_OMC_LIT280,_OMC_LIT139,_OMC_LIT60}};
#define _OMC_LIT281 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT281)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT282,2,4) {&DAE_Operator_SUB__desc,_OMC_LIT64}};
#define _OMC_LIT282 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT282)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT283,3,0) {_OMC_LIT282,_OMC_LIT142,_OMC_LIT64}};
#define _OMC_LIT283 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT283)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT284,2,11) {&DAE_Operator_SUB__ARR__desc,_OMC_LIT72}};
#define _OMC_LIT284 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT284)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT285,3,0) {_OMC_LIT284,_OMC_LIT151,_OMC_LIT72}};
#define _OMC_LIT285 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT285)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT286,3,0) {_OMC_LIT284,_OMC_LIT154,_OMC_LIT74}};
#define _OMC_LIT286 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT286)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT287,3,0) {_OMC_LIT284,_OMC_LIT157,_OMC_LIT75}};
#define _OMC_LIT287 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT287)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT288,3,0) {_OMC_LIT284,_OMC_LIT160,_OMC_LIT76}};
#define _OMC_LIT288 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT288)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT289,3,0) {_OMC_LIT284,_OMC_LIT163,_OMC_LIT77}};
#define _OMC_LIT289 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT289)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT290,3,0) {_OMC_LIT284,_OMC_LIT166,_OMC_LIT78}};
#define _OMC_LIT290 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT290)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT291,3,0) {_OMC_LIT284,_OMC_LIT169,_OMC_LIT79}};
#define _OMC_LIT291 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT291)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT292,3,0) {_OMC_LIT284,_OMC_LIT172,_OMC_LIT80}};
#define _OMC_LIT292 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT292)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT293,3,0) {_OMC_LIT284,_OMC_LIT174,_OMC_LIT81}};
#define _OMC_LIT293 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT293)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT294,2,11) {&DAE_Operator_SUB__ARR__desc,_OMC_LIT91}};
#define _OMC_LIT294 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT294)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT295,3,0) {_OMC_LIT294,_OMC_LIT178,_OMC_LIT91}};
#define _OMC_LIT295 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT295)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT296,3,0) {_OMC_LIT294,_OMC_LIT181,_OMC_LIT93}};
#define _OMC_LIT296 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT296)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT297,3,0) {_OMC_LIT294,_OMC_LIT184,_OMC_LIT94}};
#define _OMC_LIT297 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT297)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT298,3,0) {_OMC_LIT294,_OMC_LIT187,_OMC_LIT95}};
#define _OMC_LIT298 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT298)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT299,3,0) {_OMC_LIT294,_OMC_LIT190,_OMC_LIT96}};
#define _OMC_LIT299 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT299)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT300,3,0) {_OMC_LIT294,_OMC_LIT193,_OMC_LIT97}};
#define _OMC_LIT300 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT300)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT301,3,0) {_OMC_LIT294,_OMC_LIT196,_OMC_LIT98}};
#define _OMC_LIT301 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT301)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT302,3,0) {_OMC_LIT294,_OMC_LIT199,_OMC_LIT99}};
#define _OMC_LIT302 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT302)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT303,3,0) {_OMC_LIT294,_OMC_LIT201,_OMC_LIT100}};
#define _OMC_LIT303 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT303)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT304,2,1) {_OMC_LIT303,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT304 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT304)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT305,2,1) {_OMC_LIT302,_OMC_LIT304}};
#define _OMC_LIT305 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT305)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT306,2,1) {_OMC_LIT301,_OMC_LIT305}};
#define _OMC_LIT306 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT306)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT307,2,1) {_OMC_LIT300,_OMC_LIT306}};
#define _OMC_LIT307 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT307)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT308,2,1) {_OMC_LIT299,_OMC_LIT307}};
#define _OMC_LIT308 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT308)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT309,2,1) {_OMC_LIT298,_OMC_LIT308}};
#define _OMC_LIT309 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT309)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT310,2,1) {_OMC_LIT297,_OMC_LIT309}};
#define _OMC_LIT310 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT310)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT311,2,1) {_OMC_LIT296,_OMC_LIT310}};
#define _OMC_LIT311 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT311)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT312,2,1) {_OMC_LIT295,_OMC_LIT311}};
#define _OMC_LIT312 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT312)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT313,2,1) {_OMC_LIT293,_OMC_LIT312}};
#define _OMC_LIT313 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT313)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT314,2,1) {_OMC_LIT292,_OMC_LIT313}};
#define _OMC_LIT314 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT314)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT315,2,1) {_OMC_LIT291,_OMC_LIT314}};
#define _OMC_LIT315 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT315)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT316,2,1) {_OMC_LIT290,_OMC_LIT315}};
#define _OMC_LIT316 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT316)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT317,2,1) {_OMC_LIT289,_OMC_LIT316}};
#define _OMC_LIT317 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT317)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT318,2,1) {_OMC_LIT288,_OMC_LIT317}};
#define _OMC_LIT318 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT318)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT319,2,1) {_OMC_LIT287,_OMC_LIT318}};
#define _OMC_LIT319 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT319)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT320,2,1) {_OMC_LIT286,_OMC_LIT319}};
#define _OMC_LIT320 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT320)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT321,2,1) {_OMC_LIT285,_OMC_LIT320}};
#define _OMC_LIT321 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT321)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT322,2,1) {_OMC_LIT283,_OMC_LIT321}};
#define _OMC_LIT322 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT322)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT323,2,1) {_OMC_LIT281,_OMC_LIT322}};
#define _OMC_LIT323 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT323)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT324,2,16) {&DAE_Operator_SUB__SCALAR__ARRAY__desc,_OMC_LIT72}};
#define _OMC_LIT324 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT324)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT325,2,1) {_OMC_LIT60,_OMC_LIT150}};
#define _OMC_LIT325 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT325)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT326,3,0) {_OMC_LIT324,_OMC_LIT325,_OMC_LIT72}};
#define _OMC_LIT326 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT326)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT327,2,1) {_OMC_LIT60,_OMC_LIT153}};
#define _OMC_LIT327 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT327)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT328,3,0) {_OMC_LIT324,_OMC_LIT327,_OMC_LIT74}};
#define _OMC_LIT328 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT328)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT329,2,1) {_OMC_LIT60,_OMC_LIT156}};
#define _OMC_LIT329 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT329)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT330,3,0) {_OMC_LIT324,_OMC_LIT329,_OMC_LIT75}};
#define _OMC_LIT330 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT330)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT331,2,1) {_OMC_LIT60,_OMC_LIT159}};
#define _OMC_LIT331 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT331)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT332,3,0) {_OMC_LIT324,_OMC_LIT331,_OMC_LIT76}};
#define _OMC_LIT332 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT332)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT333,2,1) {_OMC_LIT60,_OMC_LIT162}};
#define _OMC_LIT333 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT333)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT334,3,0) {_OMC_LIT324,_OMC_LIT333,_OMC_LIT77}};
#define _OMC_LIT334 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT334)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT335,2,1) {_OMC_LIT60,_OMC_LIT165}};
#define _OMC_LIT335 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT335)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT336,3,0) {_OMC_LIT324,_OMC_LIT335,_OMC_LIT78}};
#define _OMC_LIT336 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT336)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT337,2,1) {_OMC_LIT60,_OMC_LIT168}};
#define _OMC_LIT337 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT337)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT338,3,0) {_OMC_LIT324,_OMC_LIT337,_OMC_LIT79}};
#define _OMC_LIT338 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT338)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT339,2,1) {_OMC_LIT60,_OMC_LIT171}};
#define _OMC_LIT339 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT339)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT340,3,0) {_OMC_LIT324,_OMC_LIT339,_OMC_LIT80}};
#define _OMC_LIT340 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT340)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT341,2,1) {_OMC_LIT60,_OMC_LIT82}};
#define _OMC_LIT341 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT341)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT342,3,0) {_OMC_LIT324,_OMC_LIT341,_OMC_LIT81}};
#define _OMC_LIT342 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT342)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT343,2,16) {&DAE_Operator_SUB__SCALAR__ARRAY__desc,_OMC_LIT91}};
#define _OMC_LIT343 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT343)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT344,2,1) {_OMC_LIT64,_OMC_LIT177}};
#define _OMC_LIT344 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT344)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT345,3,0) {_OMC_LIT343,_OMC_LIT344,_OMC_LIT91}};
#define _OMC_LIT345 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT345)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT346,2,1) {_OMC_LIT64,_OMC_LIT180}};
#define _OMC_LIT346 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT346)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT347,3,0) {_OMC_LIT343,_OMC_LIT346,_OMC_LIT93}};
#define _OMC_LIT347 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT347)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT348,2,1) {_OMC_LIT64,_OMC_LIT183}};
#define _OMC_LIT348 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT348)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT349,3,0) {_OMC_LIT343,_OMC_LIT348,_OMC_LIT94}};
#define _OMC_LIT349 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT349)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT350,2,1) {_OMC_LIT64,_OMC_LIT186}};
#define _OMC_LIT350 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT350)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT351,3,0) {_OMC_LIT343,_OMC_LIT350,_OMC_LIT95}};
#define _OMC_LIT351 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT351)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT352,2,1) {_OMC_LIT64,_OMC_LIT189}};
#define _OMC_LIT352 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT352)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT353,3,0) {_OMC_LIT343,_OMC_LIT352,_OMC_LIT96}};
#define _OMC_LIT353 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT353)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT354,2,1) {_OMC_LIT64,_OMC_LIT192}};
#define _OMC_LIT354 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT354)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT355,3,0) {_OMC_LIT343,_OMC_LIT354,_OMC_LIT97}};
#define _OMC_LIT355 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT355)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT356,2,1) {_OMC_LIT64,_OMC_LIT195}};
#define _OMC_LIT356 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT356)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT357,3,0) {_OMC_LIT343,_OMC_LIT356,_OMC_LIT98}};
#define _OMC_LIT357 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT357)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT358,2,1) {_OMC_LIT64,_OMC_LIT198}};
#define _OMC_LIT358 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT358)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT359,3,0) {_OMC_LIT343,_OMC_LIT358,_OMC_LIT99}};
#define _OMC_LIT359 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT359)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT360,2,1) {_OMC_LIT64,_OMC_LIT101}};
#define _OMC_LIT360 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT360)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT361,3,0) {_OMC_LIT343,_OMC_LIT360,_OMC_LIT100}};
#define _OMC_LIT361 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT361)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_1,2,1) {_OMC_LIT303,MMC_REFSTRUCTLIT(mmc_nil)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_2,2,1) {_OMC_LIT302,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_1)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_3,2,1) {_OMC_LIT301,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_2)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_4,2,1) {_OMC_LIT300,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_3)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_5,2,1) {_OMC_LIT299,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_4)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_6,2,1) {_OMC_LIT298,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_5)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_7,2,1) {_OMC_LIT297,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_6)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_8,2,1) {_OMC_LIT296,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_7)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_9,2,1) {_OMC_LIT295,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_8)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_10,2,1) {_OMC_LIT293,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_9)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_11,2,1) {_OMC_LIT292,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_10)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_12,2,1) {_OMC_LIT291,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_11)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_13,2,1) {_OMC_LIT290,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_12)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_14,2,1) {_OMC_LIT289,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_13)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_15,2,1) {_OMC_LIT288,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_14)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_16,2,1) {_OMC_LIT287,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_15)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_17,2,1) {_OMC_LIT286,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_16)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_18,2,1) {_OMC_LIT285,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_17)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_19,2,1) {_OMC_LIT361,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_18)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_20,2,1) {_OMC_LIT359,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_19)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_21,2,1) {_OMC_LIT357,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_20)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_22,2,1) {_OMC_LIT355,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_21)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_23,2,1) {_OMC_LIT353,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_22)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_24,2,1) {_OMC_LIT351,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_23)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_25,2,1) {_OMC_LIT349,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_24)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_26,2,1) {_OMC_LIT347,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_25)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_27,2,1) {_OMC_LIT345,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_26)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_28,2,1) {_OMC_LIT342,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_27)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_29,2,1) {_OMC_LIT340,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_28)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_30,2,1) {_OMC_LIT338,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_29)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_31,2,1) {_OMC_LIT336,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_30)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_32,2,1) {_OMC_LIT334,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_31)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_33,2,1) {_OMC_LIT332,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_32)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_34,2,1) {_OMC_LIT330,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_33)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_35,2,1) {_OMC_LIT328,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_34)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_36,2,1) {_OMC_LIT326,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_35)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_37,2,1) {_OMC_LIT283,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_36)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_38,2,1) {_OMC_LIT281,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_37)}};
#define _OMC_LIT362 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT362_cons_38)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT363,2,5) {&DAE_Operator_MUL__desc,_OMC_LIT60}};
#define _OMC_LIT363 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT363)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT364,3,0) {_OMC_LIT363,_OMC_LIT139,_OMC_LIT60}};
#define _OMC_LIT364 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT364)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT365,2,5) {&DAE_Operator_MUL__desc,_OMC_LIT64}};
#define _OMC_LIT365 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT365)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT366,3,0) {_OMC_LIT365,_OMC_LIT142,_OMC_LIT64}};
#define _OMC_LIT366 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT366)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT367,2,14) {&DAE_Operator_MUL__ARRAY__SCALAR__desc,_OMC_LIT72}};
#define _OMC_LIT367 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT367)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT368,3,0) {_OMC_LIT367,_OMC_LIT242,_OMC_LIT72}};
#define _OMC_LIT368 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT368)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT369,3,0) {_OMC_LIT367,_OMC_LIT244,_OMC_LIT74}};
#define _OMC_LIT369 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT369)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT370,3,0) {_OMC_LIT367,_OMC_LIT246,_OMC_LIT75}};
#define _OMC_LIT370 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT370)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT371,3,0) {_OMC_LIT367,_OMC_LIT248,_OMC_LIT76}};
#define _OMC_LIT371 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT371)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT372,3,0) {_OMC_LIT367,_OMC_LIT250,_OMC_LIT77}};
#define _OMC_LIT372 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT372)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT373,3,0) {_OMC_LIT367,_OMC_LIT252,_OMC_LIT78}};
#define _OMC_LIT373 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT373)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT374,3,0) {_OMC_LIT367,_OMC_LIT254,_OMC_LIT79}};
#define _OMC_LIT374 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT374)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT375,3,0) {_OMC_LIT367,_OMC_LIT256,_OMC_LIT80}};
#define _OMC_LIT375 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT375)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT376,3,0) {_OMC_LIT367,_OMC_LIT258,_OMC_LIT81}};
#define _OMC_LIT376 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT376)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT377,2,14) {&DAE_Operator_MUL__ARRAY__SCALAR__desc,_OMC_LIT91}};
#define _OMC_LIT377 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT377)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT378,3,0) {_OMC_LIT377,_OMC_LIT261,_OMC_LIT91}};
#define _OMC_LIT378 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT378)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT379,3,0) {_OMC_LIT377,_OMC_LIT263,_OMC_LIT93}};
#define _OMC_LIT379 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT379)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT380,3,0) {_OMC_LIT377,_OMC_LIT265,_OMC_LIT94}};
#define _OMC_LIT380 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT380)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT381,3,0) {_OMC_LIT377,_OMC_LIT267,_OMC_LIT95}};
#define _OMC_LIT381 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT381)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT382,3,0) {_OMC_LIT377,_OMC_LIT269,_OMC_LIT96}};
#define _OMC_LIT382 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT382)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT383,3,0) {_OMC_LIT377,_OMC_LIT271,_OMC_LIT97}};
#define _OMC_LIT383 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT383)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT384,3,0) {_OMC_LIT377,_OMC_LIT273,_OMC_LIT98}};
#define _OMC_LIT384 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT384)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT385,3,0) {_OMC_LIT377,_OMC_LIT275,_OMC_LIT99}};
#define _OMC_LIT385 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT385)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT386,3,0) {_OMC_LIT377,_OMC_LIT277,_OMC_LIT100}};
#define _OMC_LIT386 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT386)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT387,2,17) {&DAE_Operator_MUL__SCALAR__PRODUCT__desc,_OMC_LIT60}};
#define _OMC_LIT387 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT387)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT388,3,0) {_OMC_LIT387,_OMC_LIT151,_OMC_LIT60}};
#define _OMC_LIT388 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT388)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT389,2,17) {&DAE_Operator_MUL__SCALAR__PRODUCT__desc,_OMC_LIT64}};
#define _OMC_LIT389 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT389)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT390,3,0) {_OMC_LIT389,_OMC_LIT178,_OMC_LIT64}};
#define _OMC_LIT390 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT390)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT391,2,18) {&DAE_Operator_MUL__MATRIX__PRODUCT__desc,_OMC_LIT60}};
#define _OMC_LIT391 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT391)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT392,2,1) {_OMC_LIT72,_OMC_LIT153}};
#define _OMC_LIT392 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT392)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT393,3,0) {_OMC_LIT391,_OMC_LIT392,_OMC_LIT72}};
#define _OMC_LIT393 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT393)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT394,2,1) {_OMC_LIT74,_OMC_LIT150}};
#define _OMC_LIT394 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT394)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT395,3,0) {_OMC_LIT391,_OMC_LIT394,_OMC_LIT72}};
#define _OMC_LIT395 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT395)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT396,3,0) {_OMC_LIT391,_OMC_LIT154,_OMC_LIT74}};
#define _OMC_LIT396 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT396)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT397,2,18) {&DAE_Operator_MUL__MATRIX__PRODUCT__desc,_OMC_LIT64}};
#define _OMC_LIT397 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT397)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT398,2,1) {_OMC_LIT91,_OMC_LIT180}};
#define _OMC_LIT398 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT398)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT399,3,0) {_OMC_LIT397,_OMC_LIT398,_OMC_LIT91}};
#define _OMC_LIT399 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT399)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT400,2,1) {_OMC_LIT93,_OMC_LIT177}};
#define _OMC_LIT400 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT400)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT401,3,0) {_OMC_LIT397,_OMC_LIT400,_OMC_LIT91}};
#define _OMC_LIT401 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT401)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT402,3,0) {_OMC_LIT397,_OMC_LIT181,_OMC_LIT93}};
#define _OMC_LIT402 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT402)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_1,2,1) {_OMC_LIT402,MMC_REFSTRUCTLIT(mmc_nil)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_2,2,1) {_OMC_LIT401,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_1)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_3,2,1) {_OMC_LIT399,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_2)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_4,2,1) {_OMC_LIT396,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_3)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_5,2,1) {_OMC_LIT395,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_4)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_6,2,1) {_OMC_LIT393,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_5)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_7,2,1) {_OMC_LIT390,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_6)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_8,2,1) {_OMC_LIT388,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_7)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_9,2,1) {_OMC_LIT386,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_8)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_10,2,1) {_OMC_LIT385,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_9)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_11,2,1) {_OMC_LIT384,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_10)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_12,2,1) {_OMC_LIT383,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_11)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_13,2,1) {_OMC_LIT382,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_12)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_14,2,1) {_OMC_LIT381,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_13)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_15,2,1) {_OMC_LIT380,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_14)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_16,2,1) {_OMC_LIT379,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_15)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_17,2,1) {_OMC_LIT378,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_16)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_18,2,1) {_OMC_LIT376,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_17)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_19,2,1) {_OMC_LIT375,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_18)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_20,2,1) {_OMC_LIT374,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_19)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_21,2,1) {_OMC_LIT373,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_20)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_22,2,1) {_OMC_LIT372,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_21)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_23,2,1) {_OMC_LIT371,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_22)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_24,2,1) {_OMC_LIT370,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_23)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_25,2,1) {_OMC_LIT369,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_24)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_26,2,1) {_OMC_LIT368,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_25)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_27,2,1) {_OMC_LIT366,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_26)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_28,2,1) {_OMC_LIT364,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_27)}};
#define _OMC_LIT403 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT403_cons_28)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT404,2,12) {&DAE_Operator_MUL__ARR__desc,_OMC_LIT72}};
#define _OMC_LIT404 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT404)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT405,3,0) {_OMC_LIT404,_OMC_LIT151,_OMC_LIT72}};
#define _OMC_LIT405 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT405)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT406,3,0) {_OMC_LIT404,_OMC_LIT154,_OMC_LIT74}};
#define _OMC_LIT406 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT406)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT407,3,0) {_OMC_LIT404,_OMC_LIT157,_OMC_LIT75}};
#define _OMC_LIT407 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT407)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT408,3,0) {_OMC_LIT404,_OMC_LIT160,_OMC_LIT76}};
#define _OMC_LIT408 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT408)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT409,3,0) {_OMC_LIT404,_OMC_LIT163,_OMC_LIT77}};
#define _OMC_LIT409 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT409)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT410,3,0) {_OMC_LIT404,_OMC_LIT166,_OMC_LIT78}};
#define _OMC_LIT410 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT410)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT411,3,0) {_OMC_LIT404,_OMC_LIT169,_OMC_LIT79}};
#define _OMC_LIT411 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT411)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT412,3,0) {_OMC_LIT404,_OMC_LIT172,_OMC_LIT80}};
#define _OMC_LIT412 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT412)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT413,3,0) {_OMC_LIT404,_OMC_LIT174,_OMC_LIT81}};
#define _OMC_LIT413 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT413)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT414,2,12) {&DAE_Operator_MUL__ARR__desc,_OMC_LIT91}};
#define _OMC_LIT414 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT414)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT415,3,0) {_OMC_LIT414,_OMC_LIT178,_OMC_LIT91}};
#define _OMC_LIT415 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT415)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT416,3,0) {_OMC_LIT414,_OMC_LIT181,_OMC_LIT93}};
#define _OMC_LIT416 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT416)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT417,3,0) {_OMC_LIT414,_OMC_LIT184,_OMC_LIT94}};
#define _OMC_LIT417 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT417)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT418,3,0) {_OMC_LIT414,_OMC_LIT187,_OMC_LIT95}};
#define _OMC_LIT418 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT418)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT419,3,0) {_OMC_LIT414,_OMC_LIT190,_OMC_LIT96}};
#define _OMC_LIT419 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT419)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT420,3,0) {_OMC_LIT414,_OMC_LIT193,_OMC_LIT97}};
#define _OMC_LIT420 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT420)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT421,3,0) {_OMC_LIT414,_OMC_LIT196,_OMC_LIT98}};
#define _OMC_LIT421 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT421)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT422,3,0) {_OMC_LIT414,_OMC_LIT199,_OMC_LIT99}};
#define _OMC_LIT422 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT422)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT423,3,0) {_OMC_LIT414,_OMC_LIT201,_OMC_LIT100}};
#define _OMC_LIT423 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT423)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_1,2,1) {_OMC_LIT423,MMC_REFSTRUCTLIT(mmc_nil)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_2,2,1) {_OMC_LIT422,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_1)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_3,2,1) {_OMC_LIT421,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_2)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_4,2,1) {_OMC_LIT420,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_3)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_5,2,1) {_OMC_LIT419,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_4)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_6,2,1) {_OMC_LIT418,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_5)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_7,2,1) {_OMC_LIT417,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_6)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_8,2,1) {_OMC_LIT416,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_7)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_9,2,1) {_OMC_LIT415,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_8)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_10,2,1) {_OMC_LIT413,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_9)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_11,2,1) {_OMC_LIT412,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_10)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_12,2,1) {_OMC_LIT411,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_11)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_13,2,1) {_OMC_LIT410,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_12)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_14,2,1) {_OMC_LIT409,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_13)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_15,2,1) {_OMC_LIT408,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_14)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_16,2,1) {_OMC_LIT407,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_15)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_17,2,1) {_OMC_LIT406,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_16)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_18,2,1) {_OMC_LIT405,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_17)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_19,2,1) {_OMC_LIT386,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_18)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_20,2,1) {_OMC_LIT385,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_19)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_21,2,1) {_OMC_LIT384,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_20)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_22,2,1) {_OMC_LIT383,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_21)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_23,2,1) {_OMC_LIT382,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_22)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_24,2,1) {_OMC_LIT381,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_23)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_25,2,1) {_OMC_LIT380,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_24)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_26,2,1) {_OMC_LIT379,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_25)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_27,2,1) {_OMC_LIT378,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_26)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_28,2,1) {_OMC_LIT376,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_27)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_29,2,1) {_OMC_LIT375,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_28)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_30,2,1) {_OMC_LIT374,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_29)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_31,2,1) {_OMC_LIT373,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_30)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_32,2,1) {_OMC_LIT372,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_31)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_33,2,1) {_OMC_LIT371,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_32)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_34,2,1) {_OMC_LIT370,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_33)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_35,2,1) {_OMC_LIT369,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_34)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_36,2,1) {_OMC_LIT368,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_35)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_37,2,1) {_OMC_LIT366,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_36)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_38,2,1) {_OMC_LIT364,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_37)}};
#define _OMC_LIT424 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT424_cons_38)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT425,2,6) {&DAE_Operator_DIV__desc,_OMC_LIT64}};
#define _OMC_LIT425 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT425)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT426,3,0) {_OMC_LIT425,_OMC_LIT142,_OMC_LIT64}};
#define _OMC_LIT426 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT426)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT427,2,19) {&DAE_Operator_DIV__ARRAY__SCALAR__desc,_OMC_LIT91}};
#define _OMC_LIT427 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT427)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT428,3,0) {_OMC_LIT427,_OMC_LIT261,_OMC_LIT91}};
#define _OMC_LIT428 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT428)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT429,3,0) {_OMC_LIT427,_OMC_LIT263,_OMC_LIT93}};
#define _OMC_LIT429 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT429)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT430,3,0) {_OMC_LIT427,_OMC_LIT265,_OMC_LIT94}};
#define _OMC_LIT430 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT430)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT431,3,0) {_OMC_LIT427,_OMC_LIT267,_OMC_LIT95}};
#define _OMC_LIT431 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT431)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT432,3,0) {_OMC_LIT427,_OMC_LIT269,_OMC_LIT96}};
#define _OMC_LIT432 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT432)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT433,3,0) {_OMC_LIT427,_OMC_LIT271,_OMC_LIT97}};
#define _OMC_LIT433 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT433)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT434,3,0) {_OMC_LIT427,_OMC_LIT273,_OMC_LIT98}};
#define _OMC_LIT434 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT434)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT435,3,0) {_OMC_LIT427,_OMC_LIT275,_OMC_LIT99}};
#define _OMC_LIT435 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT435)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT436,3,0) {_OMC_LIT427,_OMC_LIT277,_OMC_LIT100}};
#define _OMC_LIT436 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT436)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT437,2,1) {_OMC_LIT436,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT437 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT437)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT438,2,1) {_OMC_LIT435,_OMC_LIT437}};
#define _OMC_LIT438 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT438)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT439,2,1) {_OMC_LIT434,_OMC_LIT438}};
#define _OMC_LIT439 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT439)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT440,2,1) {_OMC_LIT433,_OMC_LIT439}};
#define _OMC_LIT440 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT440)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT441,2,1) {_OMC_LIT432,_OMC_LIT440}};
#define _OMC_LIT441 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT441)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT442,2,1) {_OMC_LIT431,_OMC_LIT441}};
#define _OMC_LIT442 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT442)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT443,2,1) {_OMC_LIT430,_OMC_LIT442}};
#define _OMC_LIT443 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT443)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT444,2,1) {_OMC_LIT429,_OMC_LIT443}};
#define _OMC_LIT444 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT444)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT445,2,1) {_OMC_LIT428,_OMC_LIT444}};
#define _OMC_LIT445 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT445)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT446,2,1) {_OMC_LIT426,_OMC_LIT445}};
#define _OMC_LIT446 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT446)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT447,2,20) {&DAE_Operator_DIV__SCALAR__ARRAY__desc,_OMC_LIT91}};
#define _OMC_LIT447 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT447)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT448,3,0) {_OMC_LIT447,_OMC_LIT344,_OMC_LIT91}};
#define _OMC_LIT448 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT448)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT449,3,0) {_OMC_LIT447,_OMC_LIT346,_OMC_LIT93}};
#define _OMC_LIT449 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT449)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT450,3,0) {_OMC_LIT447,_OMC_LIT348,_OMC_LIT94}};
#define _OMC_LIT450 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT450)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT451,3,0) {_OMC_LIT447,_OMC_LIT350,_OMC_LIT95}};
#define _OMC_LIT451 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT451)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT452,3,0) {_OMC_LIT447,_OMC_LIT352,_OMC_LIT96}};
#define _OMC_LIT452 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT452)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT453,3,0) {_OMC_LIT447,_OMC_LIT354,_OMC_LIT97}};
#define _OMC_LIT453 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT453)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT454,3,0) {_OMC_LIT447,_OMC_LIT356,_OMC_LIT98}};
#define _OMC_LIT454 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT454)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT455,3,0) {_OMC_LIT447,_OMC_LIT358,_OMC_LIT99}};
#define _OMC_LIT455 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT455)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT456,3,0) {_OMC_LIT447,_OMC_LIT360,_OMC_LIT100}};
#define _OMC_LIT456 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT456)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT457,2,13) {&DAE_Operator_DIV__ARR__desc,_OMC_LIT91}};
#define _OMC_LIT457 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT457)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT458,3,0) {_OMC_LIT457,_OMC_LIT178,_OMC_LIT91}};
#define _OMC_LIT458 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT458)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT459,3,0) {_OMC_LIT457,_OMC_LIT181,_OMC_LIT93}};
#define _OMC_LIT459 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT459)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT460,3,0) {_OMC_LIT457,_OMC_LIT184,_OMC_LIT94}};
#define _OMC_LIT460 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT460)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT461,3,0) {_OMC_LIT457,_OMC_LIT187,_OMC_LIT95}};
#define _OMC_LIT461 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT461)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT462,3,0) {_OMC_LIT457,_OMC_LIT190,_OMC_LIT96}};
#define _OMC_LIT462 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT462)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT463,3,0) {_OMC_LIT457,_OMC_LIT193,_OMC_LIT97}};
#define _OMC_LIT463 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT463)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT464,3,0) {_OMC_LIT457,_OMC_LIT196,_OMC_LIT98}};
#define _OMC_LIT464 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT464)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT465,3,0) {_OMC_LIT457,_OMC_LIT199,_OMC_LIT99}};
#define _OMC_LIT465 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT465)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT466,3,0) {_OMC_LIT457,_OMC_LIT201,_OMC_LIT100}};
#define _OMC_LIT466 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT466)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_1,2,1) {_OMC_LIT466,MMC_REFSTRUCTLIT(mmc_nil)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_2,2,1) {_OMC_LIT465,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_1)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_3,2,1) {_OMC_LIT464,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_2)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_4,2,1) {_OMC_LIT463,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_3)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_5,2,1) {_OMC_LIT462,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_4)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_6,2,1) {_OMC_LIT461,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_5)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_7,2,1) {_OMC_LIT460,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_6)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_8,2,1) {_OMC_LIT459,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_7)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_9,2,1) {_OMC_LIT458,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_8)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_10,2,1) {_OMC_LIT456,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_9)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_11,2,1) {_OMC_LIT455,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_10)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_12,2,1) {_OMC_LIT454,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_11)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_13,2,1) {_OMC_LIT453,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_12)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_14,2,1) {_OMC_LIT452,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_13)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_15,2,1) {_OMC_LIT451,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_14)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_16,2,1) {_OMC_LIT450,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_15)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_17,2,1) {_OMC_LIT449,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_16)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_18,2,1) {_OMC_LIT448,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_17)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_19,2,1) {_OMC_LIT436,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_18)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_20,2,1) {_OMC_LIT435,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_19)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_21,2,1) {_OMC_LIT434,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_20)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_22,2,1) {_OMC_LIT433,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_21)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_23,2,1) {_OMC_LIT432,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_22)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_24,2,1) {_OMC_LIT431,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_23)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_25,2,1) {_OMC_LIT430,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_24)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_26,2,1) {_OMC_LIT429,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_25)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_27,2,1) {_OMC_LIT428,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_26)}};
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_28,2,1) {_OMC_LIT426,MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_27)}};
#define _OMC_LIT467 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT467_cons_28)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT468,2,7) {&DAE_Operator_POW__desc,_OMC_LIT64}};
#define _OMC_LIT468 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT468)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT469,3,0) {_OMC_LIT468,_OMC_LIT142,_OMC_LIT64}};
#define _OMC_LIT469 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT469)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT470,2,23) {&DAE_Operator_POW__ARR__desc,_OMC_LIT64}};
#define _OMC_LIT470 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT470)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT471,2,1) {_OMC_LIT93,_OMC_LIT62}};
#define _OMC_LIT471 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT471)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT472,3,0) {_OMC_LIT470,_OMC_LIT471,_OMC_LIT93}};
#define _OMC_LIT472 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT472)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT473,2,1) {_OMC_LIT472,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT473 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT473)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT474,2,1) {_OMC_LIT469,_OMC_LIT473}};
#define _OMC_LIT474 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT474)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT475,2,24) {&DAE_Operator_POW__ARR2__desc,_OMC_LIT91}};
#define _OMC_LIT475 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT475)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT476,2,1) {_OMC_LIT469,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT476 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT476)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT477,2,22) {&DAE_Operator_POW__SCALAR__ARRAY__desc,_OMC_LIT91}};
#define _OMC_LIT477 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT477)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT478,2,1) {_OMC_LIT64,_OMC_LIT142}};
#define _OMC_LIT478 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT478)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT479,2,1) {_OMC_LIT64,_OMC_LIT478}};
#define _OMC_LIT479 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT479)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT480,2,1) {_OMC_LIT64,_OMC_LIT479}};
#define _OMC_LIT480 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT480)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT481,2,1) {_OMC_LIT64,_OMC_LIT480}};
#define _OMC_LIT481 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT481)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT482,2,1) {_OMC_LIT64,_OMC_LIT481}};
#define _OMC_LIT482 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT482)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT483,2,1) {_OMC_LIT64,_OMC_LIT482}};
#define _OMC_LIT483 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT483)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT484,2,1) {_OMC_LIT64,_OMC_LIT483}};
#define _OMC_LIT484 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT484)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT485,2,21) {&DAE_Operator_POW__ARRAY__SCALAR__desc,_OMC_LIT91}};
#define _OMC_LIT485 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT485)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT486,2,25) {&DAE_Operator_AND__desc,_OMC_LIT55}};
#define _OMC_LIT486 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT486)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT487,2,1) {_OMC_LIT55,_OMC_LIT111}};
#define _OMC_LIT487 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT487)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT488,3,0) {_OMC_LIT486,_OMC_LIT487,_OMC_LIT55}};
#define _OMC_LIT488 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT488)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT489,2,1) {_OMC_LIT114,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT489 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT489)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT490,2,1) {_OMC_LIT114,_OMC_LIT489}};
#define _OMC_LIT490 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT490)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT491,3,0) {_OMC_LIT486,_OMC_LIT490,_OMC_LIT114}};
#define _OMC_LIT491 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT491)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT492,2,1) {_OMC_LIT115,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT492 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT492)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT493,2,1) {_OMC_LIT115,_OMC_LIT492}};
#define _OMC_LIT493 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT493)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT494,3,0) {_OMC_LIT486,_OMC_LIT493,_OMC_LIT115}};
#define _OMC_LIT494 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT494)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT495,2,1) {_OMC_LIT116,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT495 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT495)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT496,2,1) {_OMC_LIT116,_OMC_LIT495}};
#define _OMC_LIT496 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT496)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT497,3,0) {_OMC_LIT486,_OMC_LIT496,_OMC_LIT116}};
#define _OMC_LIT497 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT497)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT498,2,1) {_OMC_LIT117,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT498 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT498)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT499,2,1) {_OMC_LIT117,_OMC_LIT498}};
#define _OMC_LIT499 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT499)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT500,3,0) {_OMC_LIT486,_OMC_LIT499,_OMC_LIT117}};
#define _OMC_LIT500 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT500)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT501,2,1) {_OMC_LIT118,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT501 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT501)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT502,2,1) {_OMC_LIT118,_OMC_LIT501}};
#define _OMC_LIT502 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT502)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT503,3,0) {_OMC_LIT486,_OMC_LIT502,_OMC_LIT118}};
#define _OMC_LIT503 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT503)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT504,2,1) {_OMC_LIT119,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT504 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT504)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT505,2,1) {_OMC_LIT119,_OMC_LIT504}};
#define _OMC_LIT505 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT505)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT506,3,0) {_OMC_LIT486,_OMC_LIT505,_OMC_LIT119}};
#define _OMC_LIT506 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT506)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT507,2,1) {_OMC_LIT120,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT507 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT507)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT508,2,1) {_OMC_LIT120,_OMC_LIT507}};
#define _OMC_LIT508 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT508)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT509,3,0) {_OMC_LIT486,_OMC_LIT508,_OMC_LIT120}};
#define _OMC_LIT509 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT509)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT510,2,1) {_OMC_LIT121,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT510 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT510)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT511,2,1) {_OMC_LIT121,_OMC_LIT510}};
#define _OMC_LIT511 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT511)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT512,3,0) {_OMC_LIT486,_OMC_LIT511,_OMC_LIT121}};
#define _OMC_LIT512 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT512)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT513,2,1) {_OMC_LIT122,_OMC_LIT123}};
#define _OMC_LIT513 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT513)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT514,3,0) {_OMC_LIT486,_OMC_LIT513,_OMC_LIT122}};
#define _OMC_LIT514 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT514)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT515,2,1) {_OMC_LIT514,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT515 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT515)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT516,2,1) {_OMC_LIT512,_OMC_LIT515}};
#define _OMC_LIT516 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT516)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT517,2,1) {_OMC_LIT509,_OMC_LIT516}};
#define _OMC_LIT517 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT517)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT518,2,1) {_OMC_LIT506,_OMC_LIT517}};
#define _OMC_LIT518 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT518)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT519,2,1) {_OMC_LIT503,_OMC_LIT518}};
#define _OMC_LIT519 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT519)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT520,2,1) {_OMC_LIT500,_OMC_LIT519}};
#define _OMC_LIT520 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT520)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT521,2,1) {_OMC_LIT497,_OMC_LIT520}};
#define _OMC_LIT521 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT521)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT522,2,1) {_OMC_LIT494,_OMC_LIT521}};
#define _OMC_LIT522 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT522)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT523,2,1) {_OMC_LIT491,_OMC_LIT522}};
#define _OMC_LIT523 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT523)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT524,2,1) {_OMC_LIT488,_OMC_LIT523}};
#define _OMC_LIT524 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT524)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT525,2,26) {&DAE_Operator_OR__desc,_OMC_LIT55}};
#define _OMC_LIT525 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT525)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT526,3,0) {_OMC_LIT525,_OMC_LIT487,_OMC_LIT55}};
#define _OMC_LIT526 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT526)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT527,3,0) {_OMC_LIT525,_OMC_LIT490,_OMC_LIT114}};
#define _OMC_LIT527 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT527)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT528,3,0) {_OMC_LIT525,_OMC_LIT493,_OMC_LIT115}};
#define _OMC_LIT528 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT528)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT529,3,0) {_OMC_LIT525,_OMC_LIT496,_OMC_LIT116}};
#define _OMC_LIT529 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT529)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT530,3,0) {_OMC_LIT525,_OMC_LIT499,_OMC_LIT117}};
#define _OMC_LIT530 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT530)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT531,3,0) {_OMC_LIT525,_OMC_LIT502,_OMC_LIT118}};
#define _OMC_LIT531 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT531)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT532,3,0) {_OMC_LIT525,_OMC_LIT505,_OMC_LIT119}};
#define _OMC_LIT532 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT532)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT533,3,0) {_OMC_LIT525,_OMC_LIT508,_OMC_LIT120}};
#define _OMC_LIT533 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT533)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT534,3,0) {_OMC_LIT525,_OMC_LIT511,_OMC_LIT121}};
#define _OMC_LIT534 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT534)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT535,3,0) {_OMC_LIT525,_OMC_LIT513,_OMC_LIT122}};
#define _OMC_LIT535 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT535)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT536,2,1) {_OMC_LIT535,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT536 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT536)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT537,2,1) {_OMC_LIT534,_OMC_LIT536}};
#define _OMC_LIT537 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT537)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT538,2,1) {_OMC_LIT533,_OMC_LIT537}};
#define _OMC_LIT538 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT538)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT539,2,1) {_OMC_LIT532,_OMC_LIT538}};
#define _OMC_LIT539 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT539)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT540,2,1) {_OMC_LIT531,_OMC_LIT539}};
#define _OMC_LIT540 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT540)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT541,2,1) {_OMC_LIT530,_OMC_LIT540}};
#define _OMC_LIT541 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT541)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT542,2,1) {_OMC_LIT529,_OMC_LIT541}};
#define _OMC_LIT542 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT542)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT543,2,1) {_OMC_LIT528,_OMC_LIT542}};
#define _OMC_LIT543 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT543)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT544,2,1) {_OMC_LIT527,_OMC_LIT543}};
#define _OMC_LIT544 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT544)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT545,2,1) {_OMC_LIT526,_OMC_LIT544}};
#define _OMC_LIT545 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT545)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT546,2,28) {&DAE_Operator_LESS__desc,_OMC_LIT57}};
#define _OMC_LIT546 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT546)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT547,2,28) {&DAE_Operator_LESS__desc,_OMC_LIT60}};
#define _OMC_LIT547 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT547)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT548,3,0) {_OMC_LIT547,_OMC_LIT139,_OMC_LIT55}};
#define _OMC_LIT548 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT548)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT549,2,28) {&DAE_Operator_LESS__desc,_OMC_LIT64}};
#define _OMC_LIT549 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT549)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT550,3,0) {_OMC_LIT549,_OMC_LIT142,_OMC_LIT55}};
#define _OMC_LIT550 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT550)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT551,2,28) {&DAE_Operator_LESS__desc,_OMC_LIT55}};
#define _OMC_LIT551 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT551)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT552,3,0) {_OMC_LIT551,_OMC_LIT487,_OMC_LIT55}};
#define _OMC_LIT552 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT552)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT553,2,28) {&DAE_Operator_LESS__desc,_OMC_LIT144}};
#define _OMC_LIT553 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT553)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT554,3,0) {_OMC_LIT553,_OMC_LIT147,_OMC_LIT55}};
#define _OMC_LIT554 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT554)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT555,2,29) {&DAE_Operator_LESSEQ__desc,_OMC_LIT57}};
#define _OMC_LIT555 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT555)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT556,2,29) {&DAE_Operator_LESSEQ__desc,_OMC_LIT60}};
#define _OMC_LIT556 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT556)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT557,3,0) {_OMC_LIT556,_OMC_LIT139,_OMC_LIT55}};
#define _OMC_LIT557 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT557)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT558,2,29) {&DAE_Operator_LESSEQ__desc,_OMC_LIT64}};
#define _OMC_LIT558 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT558)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT559,3,0) {_OMC_LIT558,_OMC_LIT142,_OMC_LIT55}};
#define _OMC_LIT559 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT559)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT560,2,29) {&DAE_Operator_LESSEQ__desc,_OMC_LIT55}};
#define _OMC_LIT560 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT560)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT561,3,0) {_OMC_LIT560,_OMC_LIT487,_OMC_LIT55}};
#define _OMC_LIT561 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT561)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT562,2,29) {&DAE_Operator_LESSEQ__desc,_OMC_LIT144}};
#define _OMC_LIT562 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT562)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT563,3,0) {_OMC_LIT562,_OMC_LIT147,_OMC_LIT55}};
#define _OMC_LIT563 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT563)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT564,2,30) {&DAE_Operator_GREATER__desc,_OMC_LIT57}};
#define _OMC_LIT564 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT564)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT565,2,30) {&DAE_Operator_GREATER__desc,_OMC_LIT60}};
#define _OMC_LIT565 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT565)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT566,3,0) {_OMC_LIT565,_OMC_LIT139,_OMC_LIT55}};
#define _OMC_LIT566 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT566)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT567,2,30) {&DAE_Operator_GREATER__desc,_OMC_LIT64}};
#define _OMC_LIT567 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT567)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT568,3,0) {_OMC_LIT567,_OMC_LIT142,_OMC_LIT55}};
#define _OMC_LIT568 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT568)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT569,2,30) {&DAE_Operator_GREATER__desc,_OMC_LIT55}};
#define _OMC_LIT569 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT569)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT570,3,0) {_OMC_LIT569,_OMC_LIT487,_OMC_LIT55}};
#define _OMC_LIT570 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT570)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT571,2,30) {&DAE_Operator_GREATER__desc,_OMC_LIT144}};
#define _OMC_LIT571 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT571)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT572,3,0) {_OMC_LIT571,_OMC_LIT147,_OMC_LIT55}};
#define _OMC_LIT572 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT572)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT573,2,31) {&DAE_Operator_GREATEREQ__desc,_OMC_LIT57}};
#define _OMC_LIT573 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT573)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT574,2,31) {&DAE_Operator_GREATEREQ__desc,_OMC_LIT60}};
#define _OMC_LIT574 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT574)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT575,3,0) {_OMC_LIT574,_OMC_LIT139,_OMC_LIT55}};
#define _OMC_LIT575 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT575)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT576,2,31) {&DAE_Operator_GREATEREQ__desc,_OMC_LIT64}};
#define _OMC_LIT576 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT576)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT577,3,0) {_OMC_LIT576,_OMC_LIT142,_OMC_LIT55}};
#define _OMC_LIT577 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT577)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT578,2,31) {&DAE_Operator_GREATEREQ__desc,_OMC_LIT55}};
#define _OMC_LIT578 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT578)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT579,3,0) {_OMC_LIT578,_OMC_LIT487,_OMC_LIT55}};
#define _OMC_LIT579 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT579)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT580,2,31) {&DAE_Operator_GREATEREQ__desc,_OMC_LIT144}};
#define _OMC_LIT580 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT580)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT581,3,0) {_OMC_LIT580,_OMC_LIT147,_OMC_LIT55}};
#define _OMC_LIT581 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT581)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT582,2,32) {&DAE_Operator_EQUAL__desc,_OMC_LIT57}};
#define _OMC_LIT582 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT582)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT583,2,32) {&DAE_Operator_EQUAL__desc,_OMC_LIT60}};
#define _OMC_LIT583 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT583)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT584,3,0) {_OMC_LIT583,_OMC_LIT139,_OMC_LIT55}};
#define _OMC_LIT584 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT584)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT585,2,32) {&DAE_Operator_EQUAL__desc,_OMC_LIT64}};
#define _OMC_LIT585 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT585)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT586,3,0) {_OMC_LIT585,_OMC_LIT142,_OMC_LIT55}};
#define _OMC_LIT586 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT586)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT587,2,32) {&DAE_Operator_EQUAL__desc,_OMC_LIT144}};
#define _OMC_LIT587 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT587)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT588,3,0) {_OMC_LIT587,_OMC_LIT147,_OMC_LIT55}};
#define _OMC_LIT588 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT588)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT589,2,32) {&DAE_Operator_EQUAL__desc,_OMC_LIT55}};
#define _OMC_LIT589 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT589)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT590,3,0) {_OMC_LIT589,_OMC_LIT487,_OMC_LIT55}};
#define _OMC_LIT590 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT590)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT591,2,33) {&DAE_Operator_NEQUAL__desc,_OMC_LIT57}};
#define _OMC_LIT591 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT591)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT592,2,33) {&DAE_Operator_NEQUAL__desc,_OMC_LIT60}};
#define _OMC_LIT592 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT592)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT593,3,0) {_OMC_LIT592,_OMC_LIT139,_OMC_LIT55}};
#define _OMC_LIT593 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT593)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT594,2,33) {&DAE_Operator_NEQUAL__desc,_OMC_LIT64}};
#define _OMC_LIT594 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT594)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT595,3,0) {_OMC_LIT594,_OMC_LIT142,_OMC_LIT55}};
#define _OMC_LIT595 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT595)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT596,2,33) {&DAE_Operator_NEQUAL__desc,_OMC_LIT144}};
#define _OMC_LIT596 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT596)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT597,3,0) {_OMC_LIT596,_OMC_LIT147,_OMC_LIT55}};
#define _OMC_LIT597 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT597)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT598,2,33) {&DAE_Operator_NEQUAL__desc,_OMC_LIT55}};
#define _OMC_LIT598 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT598)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT599,3,0) {_OMC_LIT598,_OMC_LIT487,_OMC_LIT55}};
#define _OMC_LIT599 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT599)
#define _OMC_LIT600_data "OperatorOverloading.operatorsBinary failed, op: "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT600,48,_OMC_LIT600_data);
#define _OMC_LIT600 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT600)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT601,2,0) {_OMC_LIT137,_OMC_LIT137}};
#define _OMC_LIT601 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT601)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT602,1,11) {&Absyn_Operator_SUB__EW__desc,}};
#define _OMC_LIT602 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT602)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT603,2,0) {_OMC_LIT602,_OMC_LIT602}};
#define _OMC_LIT603 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT603)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT604,1,5) {&Absyn_Operator_MUL__desc,}};
#define _OMC_LIT604 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT604)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT605,1,12) {&Absyn_Operator_MUL__EW__desc,}};
#define _OMC_LIT605 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT605)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT606,2,0) {_OMC_LIT604,_OMC_LIT605}};
#define _OMC_LIT606 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT606)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT607,2,0) {_OMC_LIT605,_OMC_LIT605}};
#define _OMC_LIT607 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT607)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT608,1,6) {&Absyn_Operator_DIV__desc,}};
#define _OMC_LIT608 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT608)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT609,1,13) {&Absyn_Operator_DIV__EW__desc,}};
#define _OMC_LIT609 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT609)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT610,2,0) {_OMC_LIT608,_OMC_LIT609}};
#define _OMC_LIT610 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT610)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT611,2,0) {_OMC_LIT609,_OMC_LIT609}};
#define _OMC_LIT611 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT611)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT612,1,14) {&Absyn_Operator_POW__EW__desc,}};
#define _OMC_LIT612 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT612)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT613,2,0) {_OMC_LIT612,_OMC_LIT612}};
#define _OMC_LIT613 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT613)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT614,2,1) {_OMC_LIT613,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT614 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT614)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT615,2,1) {_OMC_LIT611,_OMC_LIT614}};
#define _OMC_LIT615 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT615)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT616,2,1) {_OMC_LIT610,_OMC_LIT615}};
#define _OMC_LIT616 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT616)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT617,2,1) {_OMC_LIT607,_OMC_LIT616}};
#define _OMC_LIT617 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT617)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT618,2,1) {_OMC_LIT606,_OMC_LIT617}};
#define _OMC_LIT618 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT618)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT619,2,1) {_OMC_LIT603,_OMC_LIT618}};
#define _OMC_LIT619 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT619)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT620,2,1) {_OMC_LIT601,_OMC_LIT619}};
#define _OMC_LIT620 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT620)
#define _OMC_LIT621_data "array"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT621,5,_OMC_LIT621_data);
#define _OMC_LIT621 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT621)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT622,2,4) {&Absyn_Path_IDENT__desc,_OMC_LIT621}};
#define _OMC_LIT622 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT622)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT623,1,3) {&Absyn_ReductionIterType_COMBINE__desc,}};
#define _OMC_LIT623 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT623)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT624,2,1) {_OMC_LIT607,_OMC_LIT615}};
#define _OMC_LIT624 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT624)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT625,2,1) {_OMC_LIT606,_OMC_LIT624}};
#define _OMC_LIT625 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT625)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT626,2,1) {_OMC_LIT603,_OMC_LIT625}};
#define _OMC_LIT626 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT626)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT627,2,1) {_OMC_LIT601,_OMC_LIT626}};
#define _OMC_LIT627 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT627)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT628,1,3) {&Absyn_Operator_ADD__desc,}};
#define _OMC_LIT628 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT628)
#define _OMC_LIT629_data "sum"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT629,3,_OMC_LIT629_data);
#define _OMC_LIT629 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT629)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT630,2,4) {&Absyn_Path_IDENT__desc,_OMC_LIT629}};
#define _OMC_LIT630 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT630)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT631,1,4) {&Absyn_ReductionIterType_THREAD__desc,}};
#define _OMC_LIT631 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT631)
#define _OMC_LIT632_data "transpose"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT632,9,_OMC_LIT632_data);
#define _OMC_LIT632 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT632)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT633,2,0) {_OMC_LIT628,_OMC_LIT137}};
#define _OMC_LIT633 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT633)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT634,1,4) {&Absyn_Operator_SUB__desc,}};
#define _OMC_LIT634 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT634)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT635,2,0) {_OMC_LIT634,_OMC_LIT602}};
#define _OMC_LIT635 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT635)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT636,1,17) {&Absyn_Operator_AND__desc,}};
#define _OMC_LIT636 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT636)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT637,2,0) {_OMC_LIT636,_OMC_LIT636}};
#define _OMC_LIT637 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT637)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT638,1,18) {&Absyn_Operator_OR__desc,}};
#define _OMC_LIT638 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT638)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT639,2,0) {_OMC_LIT638,_OMC_LIT638}};
#define _OMC_LIT639 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT639)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT640,2,1) {_OMC_LIT639,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT640 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT640)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT641,2,1) {_OMC_LIT637,_OMC_LIT640}};
#define _OMC_LIT641 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT641)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT642,2,1) {_OMC_LIT613,_OMC_LIT641}};
#define _OMC_LIT642 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT642)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT643,2,1) {_OMC_LIT611,_OMC_LIT642}};
#define _OMC_LIT643 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT643)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT644,2,1) {_OMC_LIT607,_OMC_LIT643}};
#define _OMC_LIT644 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT644)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT645,2,1) {_OMC_LIT603,_OMC_LIT644}};
#define _OMC_LIT645 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT645)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT646,2,1) {_OMC_LIT635,_OMC_LIT645}};
#define _OMC_LIT646 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT646)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT647,2,1) {_OMC_LIT601,_OMC_LIT646}};
#define _OMC_LIT647 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT647)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT648,2,1) {_OMC_LIT633,_OMC_LIT647}};
#define _OMC_LIT648 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT648)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT649,1,20) {&Absyn_Operator_LESS__desc,}};
#define _OMC_LIT649 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT649)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT650,1,21) {&Absyn_Operator_LESSEQ__desc,}};
#define _OMC_LIT650 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT650)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT651,1,22) {&Absyn_Operator_GREATER__desc,}};
#define _OMC_LIT651 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT651)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT652,1,23) {&Absyn_Operator_GREATEREQ__desc,}};
#define _OMC_LIT652 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT652)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT653,1,24) {&Absyn_Operator_EQUAL__desc,}};
#define _OMC_LIT653 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT653)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT654,1,25) {&Absyn_Operator_NEQUAL__desc,}};
#define _OMC_LIT654 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT654)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT655,2,1) {_OMC_LIT654,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT655 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT655)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT656,2,1) {_OMC_LIT653,_OMC_LIT655}};
#define _OMC_LIT656 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT656)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT657,2,1) {_OMC_LIT652,_OMC_LIT656}};
#define _OMC_LIT657 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT657)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT658,2,1) {_OMC_LIT651,_OMC_LIT657}};
#define _OMC_LIT658 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT658)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT659,2,1) {_OMC_LIT650,_OMC_LIT658}};
#define _OMC_LIT659 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT659)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT660,2,1) {_OMC_LIT649,_OMC_LIT659}};
#define _OMC_LIT660 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT660)
#define _OMC_LIT661_data "%s"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT661,2,_OMC_LIT661_data);
#define _OMC_LIT661 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT661)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT662,2,4) {&Gettext_TranslatableContent_notrans__desc,_OMC_LIT661}};
#define _OMC_LIT662 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT662)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT663,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(5999)),_OMC_LIT2,_OMC_LIT3,_OMC_LIT662}};
#define _OMC_LIT663 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT663)
#define _OMC_LIT664_data "Not supporting overloading of relation array operations"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT664,55,_OMC_LIT664_data);
#define _OMC_LIT664 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT664)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT665,2,1) {_OMC_LIT664,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT665 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT665)
#define _OMC_LIT666_data "'"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT666,1,_OMC_LIT666_data);
#define _OMC_LIT666 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT666)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT667,2,0) {_OMC_LIT53,_OMC_LIT41}};
#define _OMC_LIT667 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT667)
#define _OMC_LIT668_data "'String'"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT668,8,_OMC_LIT668_data);
#define _OMC_LIT668 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT668)
#define _OMC_LIT669_data "String"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT669,6,_OMC_LIT669_data);
#define _OMC_LIT669 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT669)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT670,1,4) {&DAE_InlineType_BUILTIN__EARLY__INLINE__desc,}};
#define _OMC_LIT670 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT670)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT671,1,5) {&DAE_InlineType_EARLY__INLINE__desc,}};
#define _OMC_LIT671 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT671)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT672,2,1) {_OMC_LIT671,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT672 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT672)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT673,2,1) {_OMC_LIT670,_OMC_LIT672}};
#define _OMC_LIT673 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT673)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT674,0.0);
#define _OMC_LIT674 MMC_REFREALLIT(_OMC_LIT_STRUCT674)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT675,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT46,MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),_OMC_LIT674}};
#define _OMC_LIT675 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT675)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT676,1,4) {&DAE_ComponentPrefix_NOCOMPPRE__desc,}};
#define _OMC_LIT676 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT676)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT677,8,3) {&DAE_ElementSource_SOURCE__desc,_OMC_LIT675,MMC_REFSTRUCTLIT(mmc_nil),_OMC_LIT676,MMC_REFSTRUCTLIT(mmc_nil),MMC_REFSTRUCTLIT(mmc_nil),MMC_REFSTRUCTLIT(mmc_nil),MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT677 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT677)
#include "util/modelica.h"
#include "OperatorOverloading_includes.h"
#if !defined(PROTECTED_FUNCTION_STATIC)
#define PROTECTED_FUNCTION_STATIC
#endif
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_getZeroConstructor(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _zexps, modelica_boolean _impl, modelica_metatype _info, modelica_metatype *out_zeroExpression);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_getZeroConstructor(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _zexps, modelica_metatype _impl, modelica_metatype _info, modelica_metatype *out_zeroExpression);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_getZeroConstructor,2,0) {(void*) boxptr_OperatorOverloading_getZeroConstructor,0}};
#define boxvar_OperatorOverloading_getZeroConstructor MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_getZeroConstructor)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_binaryCastConstructor(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_metatype _exps, modelica_metatype _types, modelica_metatype _info, modelica_metatype *out_resExps);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_binaryCastConstructor,2,0) {(void*) boxptr_OperatorOverloading_binaryCastConstructor,0}};
#define boxvar_OperatorOverloading_binaryCastConstructor MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_binaryCastConstructor)
PROTECTED_FUNCTION_STATIC void omc_OperatorOverloading_errorMultipleValid(threadData_t *threadData, modelica_metatype _exps, modelica_metatype _info);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_errorMultipleValid,2,0) {(void*) boxptr_OperatorOverloading_errorMultipleValid,0}};
#define boxvar_OperatorOverloading_errorMultipleValid MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_errorMultipleValid)
PROTECTED_FUNCTION_STATIC void omc_OperatorOverloading_verifyOp(threadData_t *threadData, modelica_metatype _op);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_verifyOp,2,0) {(void*) boxptr_OperatorOverloading_verifyOp,0}};
#define boxvar_OperatorOverloading_verifyOp MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_verifyOp)
PROTECTED_FUNCTION_STATIC void omc_OperatorOverloading_warnUnsafeRelations(threadData_t *threadData, modelica_metatype _inEnv, modelica_metatype _inExp, modelica_metatype _variability, modelica_metatype _t1, modelica_metatype _t2, modelica_metatype _e1, modelica_metatype _e2, modelica_metatype _op, modelica_metatype _inPrefix, modelica_metatype _inInfo);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_warnUnsafeRelations,2,0) {(void*) boxptr_OperatorOverloading_warnUnsafeRelations,0}};
#define boxvar_OperatorOverloading_warnUnsafeRelations MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_warnUnsafeRelations)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_replaceOperatorWithFcall(threadData_t *threadData, modelica_metatype _AbExp, modelica_metatype _inExp1, modelica_metatype _inOper, modelica_metatype _inExp2, modelica_metatype _inConst);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_replaceOperatorWithFcall,2,0) {(void*) boxptr_OperatorOverloading_replaceOperatorWithFcall,0}};
#define boxvar_OperatorOverloading_replaceOperatorWithFcall MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_replaceOperatorWithFcall)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_elementType(threadData_t *threadData, modelica_metatype _inType);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_elementType,2,0) {(void*) boxptr_OperatorOverloading_elementType,0}};
#define boxvar_OperatorOverloading_elementType MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_elementType)
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_isValidMatrixProductDims(threadData_t *threadData, modelica_metatype _dim1, modelica_metatype _dim2);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_isValidMatrixProductDims(threadData_t *threadData, modelica_metatype _dim1, modelica_metatype _dim2);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_isValidMatrixProductDims,2,0) {(void*) boxptr_OperatorOverloading_isValidMatrixProductDims,0}};
#define boxvar_OperatorOverloading_isValidMatrixProductDims MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_isValidMatrixProductDims)
PROTECTED_FUNCTION_STATIC modelica_integer omc_OperatorOverloading_nDims(threadData_t *threadData, modelica_metatype _inType);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_nDims(threadData_t *threadData, modelica_metatype _inType);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_nDims,2,0) {(void*) boxptr_OperatorOverloading_nDims,0}};
#define boxvar_OperatorOverloading_nDims MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_nDims)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_computeReturnType(threadData_t *threadData, modelica_metatype _inOperator, modelica_metatype _inTypesTypeLst, modelica_metatype _inType, modelica_metatype _inPrefix, modelica_metatype _inInfo);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_computeReturnType,2,0) {(void*) boxptr_OperatorOverloading_computeReturnType,0}};
#define boxvar_OperatorOverloading_computeReturnType MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_computeReturnType)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_deoverload(threadData_t *threadData, modelica_metatype _inOperators, modelica_metatype _inArgs, modelica_metatype _aexp, modelica_metatype _inPrefix, modelica_metatype _info, modelica_metatype *out_outArgs, modelica_metatype *out_outType);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_deoverload,2,0) {(void*) boxptr_OperatorOverloading_deoverload,0}};
#define boxvar_OperatorOverloading_deoverload MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_deoverload)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_getRecordPath(threadData_t *threadData, modelica_metatype _inType1);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_getRecordPath,2,0) {(void*) boxptr_OperatorOverloading_getRecordPath,0}};
#define boxvar_OperatorOverloading_getRecordPath MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_getRecordPath)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_makeCallFillRestDefaults(threadData_t *threadData, modelica_metatype _path, modelica_metatype _inExps, modelica_metatype _restArgs, modelica_metatype _attr);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_makeCallFillRestDefaults,2,0) {(void*) boxptr_OperatorOverloading_makeCallFillRestDefaults,0}};
#define boxvar_OperatorOverloading_makeCallFillRestDefaults MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_makeCallFillRestDefaults)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_getZeroConstructorExpression(threadData_t *threadData, modelica_metatype _ty);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_getZeroConstructorExpression,2,0) {(void*) boxptr_OperatorOverloading_getZeroConstructorExpression,0}};
#define boxvar_OperatorOverloading_getZeroConstructorExpression MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_getZeroConstructorExpression)
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_isOperatorUnaryFunction(threadData_t *threadData, modelica_metatype _ty);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_isOperatorUnaryFunction(threadData_t *threadData, modelica_metatype _ty);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_isOperatorUnaryFunction,2,0) {(void*) boxptr_OperatorOverloading_isOperatorUnaryFunction,0}};
#define boxvar_OperatorOverloading_isOperatorUnaryFunction MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_isOperatorUnaryFunction)
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_isOperatorBinaryFunctionOrWarn(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _info);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_isOperatorBinaryFunctionOrWarn(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _info);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_isOperatorBinaryFunctionOrWarn,2,0) {(void*) boxptr_OperatorOverloading_isOperatorBinaryFunctionOrWarn,0}};
#define boxvar_OperatorOverloading_isOperatorBinaryFunctionOrWarn MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_isOperatorBinaryFunctionOrWarn)
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_checkOperatorFunctionOutput(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _expected, modelica_metatype _info);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_checkOperatorFunctionOutput(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _expected, modelica_metatype _info);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_checkOperatorFunctionOutput,2,0) {(void*) boxptr_OperatorOverloading_checkOperatorFunctionOutput,0}};
#define boxvar_OperatorOverloading_checkOperatorFunctionOutput MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_checkOperatorFunctionOutput)
PROTECTED_FUNCTION_STATIC void omc_OperatorOverloading_checkOperatorFunctionOneOutputError(threadData_t *threadData, modelica_boolean _ok, modelica_metatype _opType, modelica_metatype _ty, modelica_metatype _info);
PROTECTED_FUNCTION_STATIC void boxptr_OperatorOverloading_checkOperatorFunctionOneOutputError(threadData_t *threadData, modelica_metatype _ok, modelica_metatype _opType, modelica_metatype _ty, modelica_metatype _info);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_checkOperatorFunctionOneOutputError,2,0) {(void*) boxptr_OperatorOverloading_checkOperatorFunctionOneOutputError,0}};
#define boxvar_OperatorOverloading_checkOperatorFunctionOneOutputError MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_checkOperatorFunctionOneOutputError)
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_checkOperatorFunctionOneOutput(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _opType, modelica_metatype _info);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_checkOperatorFunctionOneOutput(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _opType, modelica_metatype _info);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_checkOperatorFunctionOneOutput,2,0) {(void*) boxptr_OperatorOverloading_checkOperatorFunctionOneOutput,0}};
#define boxvar_OperatorOverloading_checkOperatorFunctionOneOutput MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_checkOperatorFunctionOneOutput)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_lookupOperatorBaseClass(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inClass, modelica_metatype *out_path, modelica_metatype *out_env);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_lookupOperatorBaseClass,2,0) {(void*) boxptr_OperatorOverloading_lookupOperatorBaseClass,0}};
#define boxvar_OperatorOverloading_lookupOperatorBaseClass MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_lookupOperatorBaseClass)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_getOperatorFuncsOrEmptySingleTy(threadData_t *threadData, modelica_metatype __omcQ_24in_5Fcache, modelica_metatype _env, modelica_metatype _ty, modelica_string _opName, modelica_metatype _info, modelica_metatype *out_funcs);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_getOperatorFuncsOrEmptySingleTy,2,0) {(void*) boxptr_OperatorOverloading_getOperatorFuncsOrEmptySingleTy,0}};
#define boxvar_OperatorOverloading_getOperatorFuncsOrEmptySingleTy MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_getOperatorFuncsOrEmptySingleTy)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_balance(threadData_t *threadData, modelica_metatype _inTree);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_balance,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathOperatorTypes_balance,0}};
#define boxvar_OperatorOverloading_AvlTreePathOperatorTypes_balance MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_balance)
PROTECTED_FUNCTION_STATIC modelica_integer omc_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance(threadData_t *threadData, modelica_metatype _inNode);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance(threadData_t *threadData, modelica_metatype _inNode);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance,0}};
#define boxvar_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance)
PROTECTED_FUNCTION_STATIC modelica_integer omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData_t *threadData, modelica_metatype _inNode);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData_t *threadData, modelica_metatype _inNode);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_height,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathOperatorTypes_height,0}};
#define boxvar_OperatorOverloading_AvlTreePathOperatorTypes_height MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_height)
PROTECTED_FUNCTION_STATIC modelica_string omc_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2(threadData_t *threadData, modelica_metatype _inTree, modelica_boolean _isLeft, modelica_string _inIndent);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype _isLeft, modelica_metatype _inIndent);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2,0}};
#define boxvar_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2 MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2)
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty(threadData_t *threadData, modelica_metatype _t1, modelica_metatype _t2);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty(threadData_t *threadData, modelica_metatype _t1, modelica_metatype _t2);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty,0}};
#define boxvar_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_rotateLeft(threadData_t *threadData, modelica_metatype _inNode);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_rotateLeft,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathOperatorTypes_rotateLeft,0}};
#define boxvar_OperatorOverloading_AvlTreePathOperatorTypes_rotateLeft MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_rotateLeft)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_rotateRight(threadData_t *threadData, modelica_metatype _inNode);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_rotateRight,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathOperatorTypes_rotateRight,0}};
#define boxvar_OperatorOverloading_AvlTreePathOperatorTypes_rotateRight MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathOperatorTypes_rotateRight)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_balance(threadData_t *threadData, modelica_metatype _inTree);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_balance,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathPathEnv_balance,0}};
#define boxvar_OperatorOverloading_AvlTreePathPathEnv_balance MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_balance)
PROTECTED_FUNCTION_STATIC modelica_integer omc_OperatorOverloading_AvlTreePathPathEnv_calculateBalance(threadData_t *threadData, modelica_metatype _inNode);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_calculateBalance(threadData_t *threadData, modelica_metatype _inNode);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_calculateBalance,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathPathEnv_calculateBalance,0}};
#define boxvar_OperatorOverloading_AvlTreePathPathEnv_calculateBalance MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_calculateBalance)
PROTECTED_FUNCTION_STATIC modelica_integer omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData_t *threadData, modelica_metatype _inNode);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_height(threadData_t *threadData, modelica_metatype _inNode);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_height,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathPathEnv_height,0}};
#define boxvar_OperatorOverloading_AvlTreePathPathEnv_height MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_height)
PROTECTED_FUNCTION_STATIC modelica_string omc_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2(threadData_t *threadData, modelica_metatype _inTree, modelica_boolean _isLeft, modelica_string _inIndent);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype _isLeft, modelica_metatype _inIndent);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2,0}};
#define boxvar_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2 MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2)
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty(threadData_t *threadData, modelica_metatype _t1, modelica_metatype _t2);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty(threadData_t *threadData, modelica_metatype _t1, modelica_metatype _t2);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty,0}};
#define boxvar_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_rotateLeft(threadData_t *threadData, modelica_metatype _inNode);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_rotateLeft,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathPathEnv_rotateLeft,0}};
#define boxvar_OperatorOverloading_AvlTreePathPathEnv_rotateLeft MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_rotateLeft)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_rotateRight(threadData_t *threadData, modelica_metatype _inNode);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_rotateRight,2,0) {(void*) boxptr_OperatorOverloading_AvlTreePathPathEnv_rotateRight,0}};
#define boxvar_OperatorOverloading_AvlTreePathPathEnv_rotateRight MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_AvlTreePathPathEnv_rotateRight)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_getOperatorFuncsOrEmpty(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _tys, modelica_string _opName, modelica_metatype _info, modelica_metatype _acc, modelica_metatype *out_funcs);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_getOperatorFuncsOrEmpty,2,0) {(void*) boxptr_OperatorOverloading_getOperatorFuncsOrEmpty,0}};
#define boxvar_OperatorOverloading_getOperatorFuncsOrEmpty MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_getOperatorFuncsOrEmpty)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_operatorReturnUnary(threadData_t *threadData, modelica_metatype _inOperator, modelica_metatype _inArgTypes, modelica_metatype _inReturnTypes);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_operatorReturnUnary,2,0) {(void*) boxptr_OperatorOverloading_operatorReturnUnary,0}};
#define boxvar_OperatorOverloading_operatorReturnUnary MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_operatorReturnUnary)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_operatorReturn(threadData_t *threadData, modelica_metatype _inOperator, modelica_metatype _inLhsTypes, modelica_metatype _inRhsTypes, modelica_metatype _inReturnTypes);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_operatorReturn,2,0) {(void*) boxptr_OperatorOverloading_operatorReturn,0}};
#define boxvar_OperatorOverloading_operatorReturn MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_operatorReturn)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_buildOperatorTypes(threadData_t *threadData, modelica_metatype _inTypes, modelica_metatype _inPath);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_buildOperatorTypes,2,0) {(void*) boxptr_OperatorOverloading_buildOperatorTypes,0}};
#define boxvar_OperatorOverloading_buildOperatorTypes MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_buildOperatorTypes)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_makeEnumOperator(threadData_t *threadData, modelica_metatype _inOp, modelica_metatype _inType1, modelica_metatype _inType2);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_makeEnumOperator,2,0) {(void*) boxptr_OperatorOverloading_makeEnumOperator,0}};
#define boxvar_OperatorOverloading_makeEnumOperator MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_makeEnumOperator)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_operatorsUnary(threadData_t *threadData, modelica_metatype _op);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_operatorsUnary,2,0) {(void*) boxptr_OperatorOverloading_operatorsUnary,0}};
#define boxvar_OperatorOverloading_operatorsUnary MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_operatorsUnary)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_operatorsBinary(threadData_t *threadData, modelica_metatype _inOperator, modelica_metatype __omcQ_24in_5Ft1, modelica_metatype __omcQ_24in_5Fe1, modelica_metatype __omcQ_24in_5Ft2, modelica_metatype __omcQ_24in_5Fe2, modelica_metatype *out_t1, modelica_metatype *out_e1, modelica_metatype *out_t2, modelica_metatype *out_e2, modelica_metatype *out_oty1, modelica_metatype *out_oe1, modelica_metatype *out_oty2, modelica_metatype *out_oe2);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_operatorsBinary,2,0) {(void*) boxptr_OperatorOverloading_operatorsBinary,0}};
#define boxvar_OperatorOverloading_operatorsBinary MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_operatorsBinary)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_binaryUserdefArray2(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_boolean _isScalar1, modelica_boolean _isVector1, modelica_boolean _isMatrix1, modelica_boolean _isScalar2, modelica_boolean _isVector2, modelica_boolean _isMatrix2, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_boolean _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_exps);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_binaryUserdefArray2(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _isScalar1, modelica_metatype _isVector1, modelica_metatype _isMatrix1, modelica_metatype _isScalar2, modelica_metatype _isVector2, modelica_metatype _isMatrix2, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_metatype _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_exps);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_binaryUserdefArray2,2,0) {(void*) boxptr_OperatorOverloading_binaryUserdefArray2,0}};
#define boxvar_OperatorOverloading_binaryUserdefArray2 MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_binaryUserdefArray2)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_binaryUserdefArray(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _inExps, modelica_boolean _isArray, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_boolean _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_exps);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_binaryUserdefArray(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _inExps, modelica_metatype _isArray, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_metatype _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_exps);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_binaryUserdefArray,2,0) {(void*) boxptr_OperatorOverloading_binaryUserdefArray,0}};
#define boxvar_OperatorOverloading_binaryUserdefArray MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_binaryUserdefArray)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_binaryUserdef(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_boolean _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_outExp, modelica_metatype *out_foldType, modelica_metatype *out_outType);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_binaryUserdef(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_metatype _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_outExp, modelica_metatype *out_foldType, modelica_metatype *out_outType);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_binaryUserdef,2,0) {(void*) boxptr_OperatorOverloading_binaryUserdef,0}};
#define boxvar_OperatorOverloading_binaryUserdef MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_binaryUserdef)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_deoverloadUnaryUserdefNoConstructor(threadData_t *threadData, modelica_metatype _inTypeList, modelica_metatype _inExp, modelica_metatype _inType, modelica_metatype _inAcc);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_deoverloadUnaryUserdefNoConstructor,2,0) {(void*) boxptr_OperatorOverloading_deoverloadUnaryUserdefNoConstructor,0}};
#define boxvar_OperatorOverloading_deoverloadUnaryUserdefNoConstructor MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_deoverloadUnaryUserdefNoConstructor)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListRhs(threadData_t *threadData, modelica_metatype _types, modelica_metatype _inLhs, modelica_metatype _inRhs, modelica_metatype _lhsType, modelica_metatype _inAcc);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListRhs,2,0) {(void*) boxptr_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListRhs,0}};
#define boxvar_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListRhs MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListRhs)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListLhs(threadData_t *threadData, modelica_metatype _types, modelica_metatype _inLhs, modelica_metatype _inRhs, modelica_metatype _rhsType, modelica_metatype _inAcc);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListLhs,2,0) {(void*) boxptr_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListLhs,0}};
#define boxvar_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListLhs MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListLhs)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_overloadFoldType(threadData_t *threadData, modelica_metatype _inType1, modelica_metatype _inType2, modelica_metatype _inType3);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_overloadFoldType,2,0) {(void*) boxptr_OperatorOverloading_overloadFoldType,0}};
#define boxvar_OperatorOverloading_overloadFoldType MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_overloadFoldType)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructor(threadData_t *threadData, modelica_metatype _inTypeList, modelica_metatype _inLhs, modelica_metatype _inRhs, modelica_metatype _lhsType, modelica_metatype _rhsType, modelica_metatype _inAcc);
static const MMC_DEFSTRUCTLIT(boxvar_lit_OperatorOverloading_deoverloadBinaryUserdefNoConstructor,2,0) {(void*) boxptr_OperatorOverloading_deoverloadBinaryUserdefNoConstructor,0}};
#define boxvar_OperatorOverloading_deoverloadBinaryUserdefNoConstructor MMC_REFSTRUCTLIT(boxvar_lit_OperatorOverloading_deoverloadBinaryUserdefNoConstructor)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_getZeroConstructor(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _zexps, modelica_boolean _impl, modelica_metatype _info, modelica_metatype *out_zeroExpression)
{
modelica_metatype _cache = NULL;
modelica_metatype _zeroExpression = NULL;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _zexps;
{
modelica_metatype _zc = NULL;
modelica_metatype _v = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 3; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (!listEmpty(tmp4_1)) goto tmp3_end;
tmpMeta[0+0] = _inCache;
tmpMeta[0+1] = mmc_mk_none();
goto tmp3_done;
}
case 1: {
if (listEmpty(tmp4_1)) goto tmp3_end;
tmpMeta[2] = MMC_CAR(tmp4_1);
tmpMeta[3] = MMC_CDR(tmp4_1);
if (!listEmpty(tmpMeta[3])) goto tmp3_end;
_zc = tmpMeta[2];
tmpMeta[2] = mmc_mk_box2(3, &Absyn_Msg_MSG__desc, _info);
_cache = omc_Ceval_ceval(threadData, _inCache, _env, _zc, _impl, tmpMeta[2], ((modelica_integer) 0) ,&_v);
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = mmc_mk_some(_v);
goto tmp3_done;
}
case 2: {
omc_OperatorOverloading_errorMultipleValid(threadData, _zexps, _info);
goto goto_2;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_cache = tmpMeta[0+0];
_zeroExpression = tmpMeta[0+1];
_return: OMC_LABEL_UNUSED
if (out_zeroExpression) { *out_zeroExpression = _zeroExpression; }
return _cache;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_getZeroConstructor(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _zexps, modelica_metatype _impl, modelica_metatype _info, modelica_metatype *out_zeroExpression)
{
modelica_integer tmp1;
modelica_metatype _cache = NULL;
tmp1 = mmc_unbox_integer(_impl);
_cache = omc_OperatorOverloading_getZeroConstructor(threadData, _inCache, _env, _zexps, tmp1, _info, out_zeroExpression);
return _cache;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_binaryCastConstructor(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_metatype _exps, modelica_metatype _types, modelica_metatype _info, modelica_metatype *out_resExps)
{
modelica_metatype _cache = NULL;
modelica_metatype _resExps = NULL;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _exps;
{
modelica_metatype _args = NULL;
modelica_metatype _tys1 = NULL;
modelica_metatype _tys2 = NULL;
modelica_metatype _exps1 = NULL;
modelica_metatype _exps2 = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 3; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (listEmpty(tmp4_1)) goto tmp3_end;
tmpMeta[2] = MMC_CAR(tmp4_1);
tmpMeta[3] = MMC_CDR(tmp4_1);
if (!listEmpty(tmpMeta[3])) goto tmp3_end;
tmpMeta[0+0] = _inCache;
tmpMeta[0+1] = _exps;
goto tmp3_done;
}
case 1: {
if (!listEmpty(tmp4_1)) goto tmp3_end;
_args = omc_List_map(threadData, _types, boxvar_Types_getFuncArg);
_tys1 = omc_List_mapMap(threadData, _args, boxvar_listHead, boxvar_Types_funcArgType);
_args = omc_List_map(threadData, _args, boxvar_List_rest);
_tys2 = omc_List_mapMap(threadData, _args, boxvar_listHead, boxvar_Types_funcArgType);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_cons(_inType1, MMC_REFSTRUCTLIT(mmc_nil));
_tys1 = omc_List_setDifference(threadData, omc_List_union(threadData, _tys1, tmpMeta[2]), tmpMeta[3]);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_cons(_inType2, MMC_REFSTRUCTLIT(mmc_nil));
_tys2 = omc_List_setDifference(threadData, omc_List_union(threadData, _tys2, tmpMeta[2]), tmpMeta[3]);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
_cache = omc_OperatorOverloading_getOperatorFuncsOrEmpty(threadData, _inCache, _env, _tys1, _OMC_LIT0, _info, tmpMeta[2] ,&_tys1);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
_cache = omc_OperatorOverloading_getOperatorFuncsOrEmpty(threadData, _cache, _env, _tys2, _OMC_LIT0, _info, tmpMeta[2] ,&_tys2);
_tys1 = omc_List_select(threadData, _tys1, boxvar_OperatorOverloading_isOperatorUnaryFunction);
_tys2 = omc_List_select(threadData, _tys2, boxvar_OperatorOverloading_isOperatorUnaryFunction);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
_exps1 = omc_OperatorOverloading_deoverloadUnaryUserdefNoConstructor(threadData, _tys1, _inExp1, _inType1, tmpMeta[2]);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
_exps2 = omc_OperatorOverloading_deoverloadUnaryUserdefNoConstructor(threadData, _tys2, _inExp2, _inType2, tmpMeta[2]);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
_resExps = omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListLhs(threadData, _types, _exps1, _inExp2, _inType2, tmpMeta[2]);
_resExps = omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListRhs(threadData, _types, _inExp1, _exps2, _inType1, _resExps);
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = _resExps;
goto tmp3_done;
}
case 2: {
omc_OperatorOverloading_errorMultipleValid(threadData, omc_List_map(threadData, _exps, boxvar_Util_tuple21), _info);
goto goto_2;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_cache = tmpMeta[0+0];
_resExps = tmpMeta[0+1];
_return: OMC_LABEL_UNUSED
if (out_resExps) { *out_resExps = _resExps; }
return _cache;
}
PROTECTED_FUNCTION_STATIC void omc_OperatorOverloading_errorMultipleValid(threadData_t *threadData, modelica_metatype _exps, modelica_metatype _info)
{
modelica_string _str1 = NULL;
modelica_string _str2 = NULL;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_str1 = intString(listLength(_exps));
_str2 = stringDelimitList(omc_List_map(threadData, _exps, boxvar_ExpressionDump_printExpStr), _OMC_LIT1);
tmpMeta[0] = mmc_mk_cons(_str1, mmc_mk_cons(_str2, MMC_REFSTRUCTLIT(mmc_nil)));
omc_Error_addSourceMessage(threadData, _OMC_LIT6, tmpMeta[0], _info);
_return: OMC_LABEL_UNUSED
return;
}
PROTECTED_FUNCTION_STATIC void omc_OperatorOverloading_verifyOp(threadData_t *threadData, modelica_metatype _op)
{
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;
tmp3_1 = _op;
{
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,29,1) == 0) goto tmp2_end;
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,30,1) == 0) goto tmp2_end;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
;
_return: OMC_LABEL_UNUSED
return;
}
PROTECTED_FUNCTION_STATIC void omc_OperatorOverloading_warnUnsafeRelations(threadData_t *threadData, modelica_metatype _inEnv, modelica_metatype _inExp, modelica_metatype _variability, modelica_metatype _t1, modelica_metatype _t2, modelica_metatype _e1, modelica_metatype _e2, modelica_metatype _op, modelica_metatype _inPrefix, modelica_metatype _inInfo)
{
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
volatile modelica_metatype tmp3_1;volatile modelica_metatype tmp3_2;
tmp3_1 = _inExp;
tmp3_2 = _variability;
{
modelica_boolean _b1;
modelica_boolean _b2;
modelica_string _stmtString = NULL;
modelica_string _opString = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp2_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp3 < 3; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
modelica_boolean tmp5;
tmp5 = omc_FGraph_inFunctionScope(threadData, _inEnv);
if (1 != tmp5) goto goto_1;
goto tmp2_done;
}
case 1: {
modelica_boolean tmp6;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,9,3) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_2,2,0) == 0) goto tmp2_end;
_b1 = omc_Types_isReal(threadData, _t1);
_b2 = omc_Types_isReal(threadData, _t1);
tmp6 = (_b1 || _b2);
if (1 != tmp6) goto goto_1;
omc_OperatorOverloading_verifyOp(threadData, _op);
_opString = omc_ExpressionDump_relopSymbol(threadData, _op);
tmpMeta[0] = stringAppend(omc_ExpressionDump_printExpStr(threadData, _e1),_opString);
tmpMeta[1] = stringAppend(tmpMeta[0],omc_ExpressionDump_printExpStr(threadData, _e2));
_stmtString = tmpMeta[1];
tmpMeta[0] = mmc_mk_cons(_stmtString, mmc_mk_cons(_opString, MMC_REFSTRUCTLIT(mmc_nil)));
omc_Error_addSourceMessage(threadData, _OMC_LIT10, tmpMeta[0], _inInfo);
goto tmp2_done;
}
case 2: {
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
tmp2_done:
(void)tmp3;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp2_done2;
goto_1:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp3 < 3) {
goto tmp2_top;
}
MMC_THROW_INTERNAL();
tmp2_done2:;
}
}
;
_return: OMC_LABEL_UNUSED
return;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_replaceOperatorWithFcall(threadData_t *threadData, modelica_metatype _AbExp, modelica_metatype _inExp1, modelica_metatype _inOper, modelica_metatype _inExp2, modelica_metatype _inConst)
{
modelica_metatype _outExp = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
volatile modelica_metatype tmp3_1;volatile modelica_metatype tmp3_2;volatile modelica_metatype tmp3_3;volatile modelica_metatype tmp3_4;
tmp3_1 = _AbExp;
tmp3_2 = _inExp1;
tmp3_3 = _inOper;
tmp3_4 = _inExp2;
{
modelica_metatype _e1 = NULL;
modelica_metatype _e2 = NULL;
modelica_metatype _funcname = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp2_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp3 < 10; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,5,3) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_3,31,1) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_3), 2));
if (optionNone(tmp3_4)) goto tmp2_end;
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_4), 1));
_funcname = tmpMeta[1];
_e2 = tmpMeta[2];
_e1 = tmp3_2;
tmpMeta[1] = mmc_mk_cons(_e1, mmc_mk_cons(_e2, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[2] = mmc_mk_box4(16, &DAE_Exp_CALL__desc, _funcname, tmpMeta[1], _OMC_LIT14);
tmpMeta[0] = tmpMeta[2];
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,5,3) == 0) goto tmp2_end;
if (optionNone(tmp3_4)) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_4), 1));
_e2 = tmpMeta[1];
_e1 = tmp3_2;
tmp3 += 8;
tmpMeta[1] = mmc_mk_box4(10, &DAE_Exp_BINARY__desc, _e1, _inOper, _e2);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 2: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,6,2) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_3,31,1) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_3), 2));
if (!optionNone(tmp3_4)) goto tmp2_end;
_funcname = tmpMeta[1];
_e1 = tmp3_2;
tmpMeta[1] = mmc_mk_cons(_e1, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[2] = mmc_mk_box4(16, &DAE_Exp_CALL__desc, _funcname, tmpMeta[1], _OMC_LIT14);
tmpMeta[0] = tmpMeta[2];
goto tmp2_done;
}
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,6,2) == 0) goto tmp2_end;
if (!optionNone(tmp3_4)) goto tmp2_end;
_e1 = tmp3_2;
tmp3 += 6;
tmpMeta[1] = mmc_mk_box3(11, &DAE_Exp_UNARY__desc, _inOper, _e1);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,7,3) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_3,31,1) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_3), 2));
if (optionNone(tmp3_4)) goto tmp2_end;
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_4), 1));
_funcname = tmpMeta[1];
_e2 = tmpMeta[2];
_e1 = tmp3_2;
tmpMeta[1] = mmc_mk_cons(_e1, mmc_mk_cons(_e2, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[2] = mmc_mk_box4(16, &DAE_Exp_CALL__desc, _funcname, tmpMeta[1], _OMC_LIT14);
tmpMeta[0] = tmpMeta[2];
goto tmp2_done;
}
case 5: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,7,3) == 0) goto tmp2_end;
if (optionNone(tmp3_4)) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_4), 1));
_e2 = tmpMeta[1];
_e1 = tmp3_2;
tmp3 += 4;
tmpMeta[1] = mmc_mk_box4(12, &DAE_Exp_LBINARY__desc, _e1, _inOper, _e2);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 6: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,8,2) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_3,31,1) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_3), 2));
if (!optionNone(tmp3_4)) goto tmp2_end;
_funcname = tmpMeta[1];
_e1 = tmp3_2;
tmpMeta[1] = mmc_mk_cons(_e1, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[2] = mmc_mk_box4(16, &DAE_Exp_CALL__desc, _funcname, tmpMeta[1], _OMC_LIT14);
tmpMeta[0] = tmpMeta[2];
goto tmp2_done;
}
case 7: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,8,2) == 0) goto tmp2_end;
if (!optionNone(tmp3_4)) goto tmp2_end;
_e1 = tmp3_2;
tmp3 += 2;
tmpMeta[1] = mmc_mk_box3(13, &DAE_Exp_LUNARY__desc, _inOper, _e1);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 8: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,9,3) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_3,31,1) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_3), 2));
if (optionNone(tmp3_4)) goto tmp2_end;
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_4), 1));
_funcname = tmpMeta[1];
_e2 = tmpMeta[2];
_e1 = tmp3_2;
tmpMeta[1] = mmc_mk_cons(_e1, mmc_mk_cons(_e2, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[2] = mmc_mk_box4(16, &DAE_Exp_CALL__desc, _funcname, tmpMeta[1], _OMC_LIT14);
tmpMeta[0] = tmpMeta[2];
goto tmp2_done;
}
case 9: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,9,3) == 0) goto tmp2_end;
if (optionNone(tmp3_4)) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_4), 1));
_e2 = tmpMeta[1];
_e1 = tmp3_2;
tmpMeta[1] = mmc_mk_box6(14, &DAE_Exp_RELATION__desc, _e1, _inOper, _e2, mmc_mk_integer(((modelica_integer) -1)), mmc_mk_none());
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
tmp2_done:
(void)tmp3;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp2_done2;
goto_1:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp3 < 10) {
goto tmp2_top;
}
MMC_THROW_INTERNAL();
tmp2_done2:;
}
}
_outExp = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outExp;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_elementType(threadData_t *threadData, modelica_metatype _inType)
{
modelica_metatype _outType = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;
tmp3_1 = _inType;
{
modelica_metatype _t = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 6; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,1) == 0) goto tmp2_end;
_t = tmp3_1;
tmpMeta[0] = _t;
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,1) == 0) goto tmp2_end;
_t = tmp3_1;
tmpMeta[0] = _t;
goto tmp2_done;
}
case 2: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,2,1) == 0) goto tmp2_end;
_t = tmp3_1;
tmpMeta[0] = _t;
goto tmp2_done;
}
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,3,1) == 0) goto tmp2_end;
_t = tmp3_1;
tmpMeta[0] = _t;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,6,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
_t = tmpMeta[1];
_inType = _t;
goto _tailrecursive;
goto tmp2_done;
}
case 5: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,10,4) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 4));
_t = tmpMeta[1];
_inType = _t;
goto _tailrecursive;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outType = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outType;
}
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_isValidMatrixProductDims(threadData_t *threadData, modelica_metatype _dim1, modelica_metatype _dim2)
{
modelica_boolean _res;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_res = ((omc_Expression_dimensionsKnownAndEqual(threadData, _dim1, _dim2) || (!(omc_Expression_dimensionKnown(threadData, _dim1) || omc_Expression_dimensionKnown(threadData, _dim2)))) || (omc_Flags_getConfigBool(threadData, _OMC_LIT20) && omc_Expression_dimensionsEqual(threadData, _dim1, _dim2)));
_return: OMC_LABEL_UNUSED
return _res;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_isValidMatrixProductDims(threadData_t *threadData, modelica_metatype _dim1, modelica_metatype _dim2)
{
modelica_boolean _res;
modelica_metatype out_res;
_res = omc_OperatorOverloading_isValidMatrixProductDims(threadData, _dim1, _dim2);
out_res = mmc_mk_icon(_res);
return out_res;
}
PROTECTED_FUNCTION_STATIC modelica_integer omc_OperatorOverloading_nDims(threadData_t *threadData, modelica_metatype _inType)
{
modelica_integer _outInteger;
modelica_integer tmp1 = 0;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inType;
{
modelica_integer _ns;
modelica_metatype _t = NULL;
int tmp4;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
case 3: {
tmp1 = ((modelica_integer) 0);
goto tmp3_done;
}
case 4: {
tmp1 = ((modelica_integer) 0);
goto tmp3_done;
}
case 5: {
tmp1 = ((modelica_integer) 0);
goto tmp3_done;
}
case 6: {
tmp1 = ((modelica_integer) 0);
goto tmp3_done;
}
case 9: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,6,2) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
_t = tmpMeta[0];
_ns = omc_OperatorOverloading_nDims(threadData, _t);
tmp1 = ((modelica_integer) 1) + _ns;
goto tmp3_done;
}
case 13: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,10,4) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
_t = tmpMeta[0];
_inType = _t;
goto _tailrecursive;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outInteger = tmp1;
_return: OMC_LABEL_UNUSED
return _outInteger;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_nDims(threadData_t *threadData, modelica_metatype _inType)
{
modelica_integer _outInteger;
modelica_metatype out_outInteger;
_outInteger = omc_OperatorOverloading_nDims(threadData, _inType);
out_outInteger = mmc_mk_icon(_outInteger);
return out_outInteger;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_computeReturnType(threadData_t *threadData, modelica_metatype _inOperator, modelica_metatype _inTypesTypeLst, modelica_metatype _inType, modelica_metatype _inPrefix, modelica_metatype _inInfo)
{
modelica_metatype _outType = NULL;
modelica_metatype tmpMeta[5] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
volatile modelica_metatype tmp3_1;volatile modelica_metatype tmp3_2;volatile modelica_metatype tmp3_3;volatile modelica_metatype tmp3_4;
tmp3_1 = _inOperator;
tmp3_2 = _inTypesTypeLst;
tmp3_3 = _inType;
tmp3_4 = _inPrefix;
{
modelica_metatype _typ1 = NULL;
modelica_metatype _typ2 = NULL;
modelica_metatype _rtype = NULL;
modelica_metatype _etype = NULL;
modelica_metatype _typ = NULL;
modelica_string _t1_str = NULL;
modelica_string _t2_str = NULL;
modelica_string _pre_str = NULL;
modelica_metatype _n1 = NULL;
modelica_metatype _n2 = NULL;
modelica_metatype _m = NULL;
modelica_metatype _n = NULL;
modelica_metatype _m1 = NULL;
modelica_metatype _m2 = NULL;
modelica_metatype _p = NULL;
modelica_metatype _pre = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp2_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp3 < 49; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
modelica_boolean tmp5;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,7,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp5 = omc_Types_subtype(threadData, _typ1, _typ2, 1);
if (1 != tmp5) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 1: {
modelica_boolean tmp6;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,7,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp6 = omc_Types_subtype(threadData, _typ2, _typ1, 1);
if (1 != tmp6) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 2: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,7,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_pre = tmp3_4;
tmp3 += 46;
_t1_str = omc_Types_unparseType(threadData, _typ1);
_t2_str = omc_Types_unparseType(threadData, _typ2);
_pre_str = omc_PrefixUtil_printPrefixStr3(threadData, _pre);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT24, mmc_mk_cons(_pre_str, mmc_mk_cons(_t1_str, mmc_mk_cons(_t2_str, MMC_REFSTRUCTLIT(mmc_nil)))));
omc_Error_addSourceMessage(threadData, _OMC_LIT23, tmpMeta[1], _inInfo);
goto goto_1;
goto tmp2_done;
}
case 3: {
modelica_boolean tmp7;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,8,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp7 = omc_Types_subtype(threadData, _typ1, _typ2, 1);
if (1 != tmp7) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 4: {
modelica_boolean tmp8;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,8,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp8 = omc_Types_subtype(threadData, _typ2, _typ1, 1);
if (1 != tmp8) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 5: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,8,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_pre = tmp3_4;
tmp3 += 43;
_t1_str = omc_Types_unparseType(threadData, _typ1);
_t2_str = omc_Types_unparseType(threadData, _typ2);
_pre_str = omc_PrefixUtil_printPrefixStr3(threadData, _pre);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT25, mmc_mk_cons(_pre_str, mmc_mk_cons(_t1_str, mmc_mk_cons(_t2_str, MMC_REFSTRUCTLIT(mmc_nil)))));
omc_Error_addSourceMessage(threadData, _OMC_LIT23, tmpMeta[1], _inInfo);
goto goto_1;
goto tmp2_done;
}
case 6: {
modelica_boolean tmp9;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,9,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp9 = omc_Types_subtype(threadData, _typ1, _typ2, 1);
if (1 != tmp9) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 7: {
modelica_boolean tmp10;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,9,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp10 = omc_Types_subtype(threadData, _typ2, _typ1, 1);
if (1 != tmp10) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 8: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,9,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_pre = tmp3_4;
tmp3 += 40;
_t1_str = omc_Types_unparseType(threadData, _typ1);
_t2_str = omc_Types_unparseType(threadData, _typ2);
_pre_str = omc_PrefixUtil_printPrefixStr3(threadData, _pre);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT26, mmc_mk_cons(_pre_str, mmc_mk_cons(_t1_str, mmc_mk_cons(_t2_str, MMC_REFSTRUCTLIT(mmc_nil)))));
omc_Error_addSourceMessage(threadData, _OMC_LIT23, tmpMeta[1], _inInfo);
goto goto_1;
goto tmp2_done;
}
case 9: {
modelica_boolean tmp11;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,10,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp11 = omc_Types_subtype(threadData, _typ1, _typ2, 1);
if (1 != tmp11) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 10: {
modelica_boolean tmp12;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,10,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp12 = omc_Types_subtype(threadData, _typ2, _typ1, 1);
if (1 != tmp12) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 11: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,10,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_pre = tmp3_4;
tmp3 += 37;
_t1_str = omc_Types_unparseType(threadData, _typ1);
_t2_str = omc_Types_unparseType(threadData, _typ2);
_pre_str = omc_PrefixUtil_printPrefixStr3(threadData, _pre);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT27, mmc_mk_cons(_pre_str, mmc_mk_cons(_t1_str, mmc_mk_cons(_t2_str, MMC_REFSTRUCTLIT(mmc_nil)))));
omc_Error_addSourceMessage(threadData, _OMC_LIT23, tmpMeta[1], _inInfo);
goto goto_1;
goto tmp2_done;
}
case 12: {
modelica_integer tmp13;
modelica_boolean tmp14;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,20,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
tmp3 += 36;
tmp13 = omc_OperatorOverloading_nDims(threadData, _typ1);
if (2 != tmp13) goto goto_1;
_n = omc_Types_getDimensionNth(threadData, _typ1, ((modelica_integer) 1));
_m = omc_Types_getDimensionNth(threadData, _typ1, ((modelica_integer) 2));
tmp14 = omc_Expression_dimensionsKnownAndEqual(threadData, _n, _m);
if (1 != tmp14) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 13: {
modelica_boolean tmp15;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,21,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp15 = omc_Types_subtype(threadData, _typ1, _typ2, 1);
if (1 != tmp15) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 14: {
modelica_boolean tmp16;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,21,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp16 = omc_Types_subtype(threadData, _typ2, _typ1, 1);
if (1 != tmp16) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 15: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,21,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_pre = tmp3_4;
tmp3 += 33;
_t1_str = omc_Types_unparseType(threadData, _typ1);
_t2_str = omc_Types_unparseType(threadData, _typ2);
_pre_str = omc_PrefixUtil_printPrefixStr3(threadData, _pre);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT28, mmc_mk_cons(_pre_str, mmc_mk_cons(_t1_str, mmc_mk_cons(_t2_str, MMC_REFSTRUCTLIT(mmc_nil)))));
omc_Error_addSourceMessage(threadData, _OMC_LIT23, tmpMeta[1], _inInfo);
goto goto_1;
goto tmp2_done;
}
case 16: {
modelica_boolean tmp17;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,14,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_rtype = tmp3_3;
tmp17 = omc_Types_subtype(threadData, _typ1, _typ2, 1);
if (1 != tmp17) goto goto_1;
tmpMeta[0] = _rtype;
goto tmp2_done;
}
case 17: {
modelica_boolean tmp18;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,14,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_rtype = tmp3_3;
tmp18 = omc_Types_subtype(threadData, _typ2, _typ1, 1);
if (1 != tmp18) goto goto_1;
tmpMeta[0] = _rtype;
goto tmp2_done;
}
case 18: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,14,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_pre = tmp3_4;
tmp3 += 30;
_t1_str = omc_Types_unparseType(threadData, _typ1);
_t2_str = omc_Types_unparseType(threadData, _typ2);
_pre_str = omc_PrefixUtil_printPrefixStr3(threadData, _pre);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT29, mmc_mk_cons(_pre_str, mmc_mk_cons(_t1_str, mmc_mk_cons(_t2_str, MMC_REFSTRUCTLIT(mmc_nil)))));
omc_Error_addSourceMessage(threadData, _OMC_LIT23, tmpMeta[1], _inInfo);
goto goto_1;
goto tmp2_done;
}
case 19: {
modelica_integer tmp19;
modelica_integer tmp20;
modelica_boolean tmp21;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,15,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp19 = omc_OperatorOverloading_nDims(threadData, _typ1);
if (1 != tmp19) goto goto_1;
tmp20 = omc_OperatorOverloading_nDims(threadData, _typ2);
if (2 != tmp20) goto goto_1;
_n1 = omc_Types_getDimensionNth(threadData, _typ1, ((modelica_integer) 1));
_n2 = omc_Types_getDimensionNth(threadData, _typ2, ((modelica_integer) 1));
_m = omc_Types_getDimensionNth(threadData, _typ2, ((modelica_integer) 2));
tmp21 = omc_OperatorOverloading_isValidMatrixProductDims(threadData, _n1, _n2);
if (1 != tmp21) goto goto_1;
_etype = omc_OperatorOverloading_elementType(threadData, _typ1);
tmpMeta[0] = omc_Types_liftArray(threadData, _etype, _m);
goto tmp2_done;
}
case 20: {
modelica_integer tmp22;
modelica_integer tmp23;
modelica_boolean tmp24;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,15,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp22 = omc_OperatorOverloading_nDims(threadData, _typ1);
if (2 != tmp22) goto goto_1;
tmp23 = omc_OperatorOverloading_nDims(threadData, _typ2);
if (1 != tmp23) goto goto_1;
_n = omc_Types_getDimensionNth(threadData, _typ1, ((modelica_integer) 1));
_m1 = omc_Types_getDimensionNth(threadData, _typ1, ((modelica_integer) 2));
_m2 = omc_Types_getDimensionNth(threadData, _typ2, ((modelica_integer) 1));
tmp24 = omc_OperatorOverloading_isValidMatrixProductDims(threadData, _m1, _m2);
if (1 != tmp24) goto goto_1;
_etype = omc_OperatorOverloading_elementType(threadData, _typ2);
tmpMeta[0] = omc_Types_liftArray(threadData, _etype, _n);
goto tmp2_done;
}
case 21: {
modelica_integer tmp25;
modelica_integer tmp26;
modelica_boolean tmp27;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,15,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp25 = omc_OperatorOverloading_nDims(threadData, _typ1);
if (2 != tmp25) goto goto_1;
tmp26 = omc_OperatorOverloading_nDims(threadData, _typ2);
if (2 != tmp26) goto goto_1;
_n = omc_Types_getDimensionNth(threadData, _typ1, ((modelica_integer) 1));
_m1 = omc_Types_getDimensionNth(threadData, _typ1, ((modelica_integer) 2));
_m2 = omc_Types_getDimensionNth(threadData, _typ2, ((modelica_integer) 1));
_p = omc_Types_getDimensionNth(threadData, _typ2, ((modelica_integer) 2));
tmp27 = omc_OperatorOverloading_isValidMatrixProductDims(threadData, _m1, _m2);
if (1 != tmp27) goto goto_1;
_etype = omc_OperatorOverloading_elementType(threadData, _typ1);
tmpMeta[1] = mmc_mk_cons(_n, mmc_mk_cons(_p, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[0] = omc_Types_liftArrayListDims(threadData, _etype, tmpMeta[1]);
goto tmp2_done;
}
case 22: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,15,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_pre = tmp3_4;
tmp3 += 26;
_t1_str = omc_Types_unparseType(threadData, _typ1);
_t2_str = omc_Types_unparseType(threadData, _typ2);
_pre_str = omc_PrefixUtil_printPrefixStr3(threadData, _pre);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT30, mmc_mk_cons(_pre_str, mmc_mk_cons(_t1_str, mmc_mk_cons(_t2_str, MMC_REFSTRUCTLIT(mmc_nil)))));
omc_Error_addSourceMessage(threadData, _OMC_LIT23, tmpMeta[1], _inInfo);
goto goto_1;
goto tmp2_done;
}
case 23: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,11,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
tmp3 += 25;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 24: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,12,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
tmp3 += 24;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 25: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,13,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ2 = tmpMeta[3];
tmp3 += 23;
tmpMeta[0] = _typ2;
goto tmp2_done;
}
case 26: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,17,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ2 = tmpMeta[3];
tmp3 += 22;
tmpMeta[0] = _typ2;
goto tmp2_done;
}
case 27: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,16,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
tmp3 += 21;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 28: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,18,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
tmp3 += 20;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 29: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,19,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ2 = tmpMeta[3];
tmp3 += 19;
tmpMeta[0] = _typ2;
goto tmp2_done;
}
case 30: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 18;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 31: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 17;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 32: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,2,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 16;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 33: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,3,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 15;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 34: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,4,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 14;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 35: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,5,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 13;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 36: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,6,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
_typ1 = tmpMeta[1];
tmp3 += 12;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 37: {
modelica_boolean tmp28;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,22,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp28 = omc_Types_equivtypes(threadData, _typ1, _typ2);
if (1 != tmp28) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 38: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,22,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_pre = tmp3_4;
tmp3 += 10;
_t1_str = omc_Types_unparseType(threadData, _typ1);
_t2_str = omc_Types_unparseType(threadData, _typ2);
_pre_str = omc_PrefixUtil_printPrefixStr3(threadData, _pre);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT31, mmc_mk_cons(_pre_str, mmc_mk_cons(_t1_str, mmc_mk_cons(_t2_str, MMC_REFSTRUCTLIT(mmc_nil)))));
omc_Error_addSourceMessage(threadData, _OMC_LIT23, tmpMeta[1], _inInfo);
goto goto_1;
goto tmp2_done;
}
case 39: {
modelica_boolean tmp29;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,23,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
tmp29 = omc_Types_equivtypes(threadData, _typ1, _typ2);
if (1 != tmp29) goto goto_1;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 40: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,23,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmpMeta[2])) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmpMeta[2]);
tmpMeta[4] = MMC_CDR(tmpMeta[2]);
if (!listEmpty(tmpMeta[4])) goto tmp2_end;
_typ1 = tmpMeta[1];
_typ2 = tmpMeta[3];
_pre = tmp3_4;
tmp3 += 8;
_t1_str = omc_Types_unparseType(threadData, _typ1);
_t2_str = omc_Types_unparseType(threadData, _typ2);
_pre_str = omc_PrefixUtil_printPrefixStr3(threadData, _pre);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT32, mmc_mk_cons(_pre_str, mmc_mk_cons(_t1_str, mmc_mk_cons(_t2_str, MMC_REFSTRUCTLIT(mmc_nil)))));
omc_Error_addSourceMessage(threadData, _OMC_LIT23, tmpMeta[1], _inInfo);
goto goto_1;
goto tmp2_done;
}
case 41: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,24,1) == 0) goto tmp2_end;
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (!listEmpty(tmpMeta[2])) goto tmp2_end;
_typ1 = tmpMeta[1];
tmp3 += 7;
tmpMeta[0] = _typ1;
goto tmp2_done;
}
case 42: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,25,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 6;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 43: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,26,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 5;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 44: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,27,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 4;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 45: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,28,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 3;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 46: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,29,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 2;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 47: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,30,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmp3 += 1;
tmpMeta[0] = _typ;
goto tmp2_done;
}
case 48: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,31,1) == 0) goto tmp2_end;
_typ = tmp3_3;
tmpMeta[0] = _typ;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
tmp2_done:
(void)tmp3;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp2_done2;
goto_1:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp3 < 49) {
goto tmp2_top;
}
MMC_THROW_INTERNAL();
tmp2_done2:;
}
}
_outType = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outType;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_deoverload(threadData_t *threadData, modelica_metatype _inOperators, modelica_metatype _inArgs, modelica_metatype _aexp, modelica_metatype _inPrefix, modelica_metatype _info, modelica_metatype *out_outArgs, modelica_metatype *out_outType)
{
modelica_metatype _outOperator = NULL;
modelica_metatype _outArgs = NULL;
modelica_metatype _outType = NULL;
modelica_metatype tmpMeta[8] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
volatile modelica_metatype tmp4_1;volatile modelica_metatype tmp4_2;volatile modelica_metatype tmp4_3;
tmp4_1 = _inOperators;
tmp4_2 = _inArgs;
tmp4_3 = _inPrefix;
{
modelica_metatype _exps = NULL;
modelica_metatype _args_1 = NULL;
modelica_metatype _types_1 = NULL;
modelica_metatype _params = NULL;
modelica_metatype _tps = NULL;
modelica_metatype _rtype_1 = NULL;
modelica_metatype _rtype = NULL;
modelica_metatype _op = NULL;
modelica_metatype _args = NULL;
modelica_metatype _xs = NULL;
modelica_metatype _pre = NULL;
modelica_metatype _ty = NULL;
modelica_metatype _exps_str = NULL;
modelica_metatype _tps_str = NULL;
modelica_string _pre_str = NULL;
modelica_string _s = NULL;
modelica_string _tpsstr = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp3_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp4 < 3; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (listEmpty(tmp4_1)) goto tmp3_end;
tmpMeta[3] = MMC_CAR(tmp4_1);
tmpMeta[4] = MMC_CDR(tmp4_1);
tmpMeta[5] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 1));
tmpMeta[6] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 2));
tmpMeta[7] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 3));
_op = tmpMeta[5];
_params = tmpMeta[6];
_rtype = tmpMeta[7];
_args = tmp4_2;
_pre = tmp4_3;
_args_1 = omc_OperatorOverloading_elabArglist(threadData, _params, _args ,&_types_1);
_rtype_1 = omc_OperatorOverloading_computeReturnType(threadData, _op, _types_1, _rtype, _pre, _info);
_ty = omc_Types_simplifyType(threadData, _rtype_1);
_op = omc_Expression_setOpType(threadData, _op, _ty);
tmpMeta[0+0] = _op;
tmpMeta[0+1] = _args_1;
tmpMeta[0+2] = _rtype_1;
goto tmp3_done;
}
case 1: {
if (listEmpty(tmp4_1)) goto tmp3_end;
tmpMeta[3] = MMC_CAR(tmp4_1);
tmpMeta[4] = MMC_CDR(tmp4_1);
_xs = tmpMeta[4];
_args = tmp4_2;
_pre = tmp4_3;
tmp4 += 1;
tmpMeta[0+0] = omc_OperatorOverloading_deoverload(threadData, _xs, _args, _aexp, _pre, _info, &tmpMeta[0+1], &tmpMeta[0+2]);
goto tmp3_done;
}
case 2: {
if (!listEmpty(tmp4_1)) goto tmp3_end;
_args = tmp4_2;
_pre = tmp4_3;
_s = omc_Dump_printExpStr(threadData, _aexp);
_exps = omc_List_map(threadData, _args, boxvar_Util_tuple21);
_tps = omc_List_map(threadData, _args, boxvar_Util_tuple22);
_exps_str = omc_List_map(threadData, _exps, boxvar_ExpressionDump_printExpStr);
stringDelimitList(_exps_str, _OMC_LIT33);
_tps_str = omc_List_map(threadData, _tps, boxvar_Types_unparseType);
_tpsstr = stringDelimitList(_tps_str, _OMC_LIT33);
_pre_str = omc_PrefixUtil_printPrefixStr3(threadData, _pre);
tmpMeta[3] = mmc_mk_cons(_s, mmc_mk_cons(_tpsstr, mmc_mk_cons(_pre_str, MMC_REFSTRUCTLIT(mmc_nil))));
omc_Error_addSourceMessage(threadData, _OMC_LIT36, tmpMeta[3], _info);
goto goto_2;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
tmp3_done:
(void)tmp4;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp3_done2;
goto_2:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp4 < 3) {
goto tmp3_top;
}
MMC_THROW_INTERNAL();
tmp3_done2:;
}
}
_outOperator = tmpMeta[0+0];
_outArgs = tmpMeta[0+1];
_outType = tmpMeta[0+2];
_return: OMC_LABEL_UNUSED
if (out_outArgs) { *out_outArgs = _outArgs; }
if (out_outType) { *out_outType = _outType; }
return _outOperator;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_getRecordPath(threadData_t *threadData, modelica_metatype _inType1)
{
modelica_metatype _outPath = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
tmpMeta[0] = omc_Types_arrayElementType(threadData, _inType1);
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[0],9,3) == 0) MMC_THROW_INTERNAL();
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[0]), 2));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],3,1) == 0) MMC_THROW_INTERNAL();
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 2));
_outPath = tmpMeta[2];
_return: OMC_LABEL_UNUSED
return _outPath;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_makeCallFillRestDefaults(threadData_t *threadData, modelica_metatype _path, modelica_metatype _inExps, modelica_metatype _restArgs, modelica_metatype _attr)
{
modelica_metatype _exp = NULL;
modelica_metatype _exps = NULL;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_exps = listAppend(_inExps, omc_List_mapMap(threadData, _restArgs, boxvar_Types_funcArgDefaultBinding, boxvar_Util_getOption));
tmpMeta[0] = mmc_mk_box4(16, &DAE_Exp_CALL__desc, _path, _exps, _attr);
_exp = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _exp;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_getZeroConstructorExpression(threadData_t *threadData, modelica_metatype _ty)
{
modelica_metatype _result = NULL;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;
tmp3_1 = _ty;
{
modelica_metatype _args = NULL;
modelica_metatype _path = NULL;
modelica_metatype _attr = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 1; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,11,4) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 4));
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 5));
_args = tmpMeta[1];
_attr = tmpMeta[2];
_path = tmpMeta[3];
tmpMeta[1] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[0] = omc_OperatorOverloading_makeCallFillRestDefaults(threadData, _path, tmpMeta[1], _args, omc_Types_makeCallAttr(threadData, _ty, _attr));
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_result = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _result;
}
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_isOperatorUnaryFunction(threadData_t *threadData, modelica_metatype _ty)
{
modelica_boolean _isBinaryFunc;
modelica_boolean tmp1 = 0;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _ty;
{
modelica_metatype _rest = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,11,4) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
if (listEmpty(tmpMeta[0])) goto tmp3_end;
tmpMeta[1] = MMC_CAR(tmpMeta[0]);
tmpMeta[2] = MMC_CDR(tmpMeta[0]);
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 6));
if (!optionNone(tmpMeta[3])) goto tmp3_end;
_rest = tmpMeta[2];
tmp1 = omc_List_mapMapBoolAnd(threadData, _rest, boxvar_Types_funcArgDefaultBinding, boxvar_isSome);
goto tmp3_done;
}
case 1: {
tmp1 = 0;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_isBinaryFunc = tmp1;
_return: OMC_LABEL_UNUSED
return _isBinaryFunc;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_isOperatorUnaryFunction(threadData_t *threadData, modelica_metatype _ty)
{
modelica_boolean _isBinaryFunc;
modelica_metatype out_isBinaryFunc;
_isBinaryFunc = omc_OperatorOverloading_isOperatorUnaryFunction(threadData, _ty);
out_isBinaryFunc = mmc_mk_icon(_isBinaryFunc);
return out_isBinaryFunc;
}
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_isOperatorBinaryFunctionOrWarn(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _info)
{
modelica_boolean _isBinaryFunc;
modelica_boolean tmp1 = 0;
modelica_metatype tmpMeta[7] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _ty;
{
modelica_metatype _rest = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 3; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,11,4) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
if (listEmpty(tmpMeta[0])) goto tmp3_end;
tmpMeta[1] = MMC_CAR(tmpMeta[0]);
tmpMeta[2] = MMC_CDR(tmpMeta[0]);
if (!listEmpty(tmpMeta[2])) goto tmp3_end;
tmp1 = 0;
goto tmp3_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,11,4) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
if (listEmpty(tmpMeta[0])) goto tmp3_end;
tmpMeta[1] = MMC_CAR(tmpMeta[0]);
tmpMeta[2] = MMC_CDR(tmpMeta[0]);
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 6));
if (!optionNone(tmpMeta[3])) goto tmp3_end;
if (listEmpty(tmpMeta[2])) goto tmp3_end;
tmpMeta[4] = MMC_CAR(tmpMeta[2]);
tmpMeta[5] = MMC_CDR(tmpMeta[2]);
tmpMeta[6] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 6));
if (!optionNone(tmpMeta[6])) goto tmp3_end;
_rest = tmpMeta[5];
tmp1 = omc_List_mapMapBoolAnd(threadData, _rest, boxvar_Types_funcArgDefaultBinding, boxvar_isSome);
goto tmp3_done;
}
case 2: {
tmp1 = 0;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_isBinaryFunc = tmp1;
_return: OMC_LABEL_UNUSED
return _isBinaryFunc;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_isOperatorBinaryFunctionOrWarn(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _info)
{
modelica_boolean _isBinaryFunc;
modelica_metatype out_isBinaryFunc;
_isBinaryFunc = omc_OperatorOverloading_isOperatorBinaryFunctionOrWarn(threadData, _ty, _info);
out_isBinaryFunc = mmc_mk_icon(_isBinaryFunc);
return out_isBinaryFunc;
}
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_checkOperatorFunctionOutput(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _expected, modelica_metatype _info)
{
modelica_boolean _isOK;
modelica_boolean tmp1 = 0;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _ty;
{
modelica_metatype _actual = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,11,4) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
_actual = tmpMeta[0];
tmp1 = omc_Types_equivtypesOrRecordSubtypeOf(threadData, _actual, _expected);
goto tmp3_done;
}
case 1: {
tmp1 = 0;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_isOK = tmp1;
_return: OMC_LABEL_UNUSED
return _isOK;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_checkOperatorFunctionOutput(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _expected, modelica_metatype _info)
{
modelica_boolean _isOK;
modelica_metatype out_isOK;
_isOK = omc_OperatorOverloading_checkOperatorFunctionOutput(threadData, _ty, _expected, _info);
out_isOK = mmc_mk_icon(_isOK);
return out_isOK;
}
PROTECTED_FUNCTION_STATIC void omc_OperatorOverloading_checkOperatorFunctionOneOutputError(threadData_t *threadData, modelica_boolean _ok, modelica_metatype _opType, modelica_metatype _ty, modelica_metatype _info)
{
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_boolean tmp3_1;
tmp3_1 = _ok;
{
modelica_string _str1 = NULL;
modelica_string _str2 = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (1 != tmp3_1) goto tmp2_end;
goto tmp2_done;
}
case 1: {
_str1 = omc_Types_unparseType(threadData, _opType);
_str2 = omc_Types_unparseType(threadData, _ty);
tmpMeta[0] = mmc_mk_cons(_str1, mmc_mk_cons(_str2, MMC_REFSTRUCTLIT(mmc_nil)));
omc_Error_addSourceMessage(threadData, _OMC_LIT39, tmpMeta[0], _info);
goto goto_1;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
;
_return: OMC_LABEL_UNUSED
return;
}
PROTECTED_FUNCTION_STATIC void boxptr_OperatorOverloading_checkOperatorFunctionOneOutputError(threadData_t *threadData, modelica_metatype _ok, modelica_metatype _opType, modelica_metatype _ty, modelica_metatype _info)
{
modelica_integer tmp1;
tmp1 = mmc_unbox_integer(_ok);
omc_OperatorOverloading_checkOperatorFunctionOneOutputError(threadData, tmp1, _opType, _ty, _info);
return;
}
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_checkOperatorFunctionOneOutput(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _opType, modelica_metatype _info)
{
modelica_boolean _isOK;
modelica_boolean tmp1 = 0;
modelica_metatype tmpMeta[9] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _ty;
{
modelica_metatype _ty1 = NULL;
modelica_metatype _ty2 = NULL;
modelica_boolean _b;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 4; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,11,4) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[0],14,2) == 0) goto tmp3_end;
tmp1 = 0;
goto tmp3_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,11,4) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
if (listEmpty(tmpMeta[0])) goto tmp3_end;
tmpMeta[1] = MMC_CAR(tmpMeta[0]);
tmpMeta[2] = MMC_CDR(tmpMeta[0]);
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 3));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 6));
if (!optionNone(tmpMeta[4])) goto tmp3_end;
if (listEmpty(tmpMeta[2])) goto tmp3_end;
tmpMeta[5] = MMC_CAR(tmpMeta[2]);
tmpMeta[6] = MMC_CDR(tmpMeta[2]);
tmpMeta[7] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[5]), 3));
tmpMeta[8] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[5]), 6));
if (!optionNone(tmpMeta[8])) goto tmp3_end;
_ty1 = tmpMeta[3];
_ty2 = tmpMeta[7];
_b = (omc_Types_equivtypesOrRecordSubtypeOf(threadData, omc_Types_arrayElementType(threadData, _ty1), _opType) || omc_Types_equivtypesOrRecordSubtypeOf(threadData, omc_Types_arrayElementType(threadData, _ty2), _opType));
omc_OperatorOverloading_checkOperatorFunctionOneOutputError(threadData, _b, _opType, _ty, _info);
tmp1 = _b;
goto tmp3_done;
}
case 2: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,11,4) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
if (listEmpty(tmpMeta[0])) goto tmp3_end;
tmpMeta[1] = MMC_CAR(tmpMeta[0]);
tmpMeta[2] = MMC_CDR(tmpMeta[0]);
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 3));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 6));
if (!optionNone(tmpMeta[4])) goto tmp3_end;
_ty1 = tmpMeta[3];
_b = omc_Types_equivtypesOrRecordSubtypeOf(threadData, omc_Types_arrayElementType(threadData, _ty1), _opType);
omc_OperatorOverloading_checkOperatorFunctionOneOutputError(threadData, _b, _opType, _ty, _info);
tmp1 = _b;
goto tmp3_done;
}
case 3: {
tmp1 = 1;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_isOK = tmp1;
_return: OMC_LABEL_UNUSED
return _isOK;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_checkOperatorFunctionOneOutput(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _opType, modelica_metatype _info)
{
modelica_boolean _isOK;
modelica_metatype out_isOK;
_isOK = omc_OperatorOverloading_checkOperatorFunctionOneOutput(threadData, _ty, _opType, _info);
out_isOK = mmc_mk_icon(_isOK);
return out_isOK;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_lookupOperatorBaseClass(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inClass, modelica_metatype *out_path, modelica_metatype *out_env)
{
modelica_metatype _cache = NULL;
modelica_metatype _path = NULL;
modelica_metatype _env = NULL;
modelica_metatype tmpMeta[7] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;modelica_metatype tmp4_2;modelica_metatype tmp4_3;
tmp4_1 = _inCache;
tmp4_2 = _inEnv;
tmp4_3 = _inClass;
{
modelica_metatype _cl = NULL;
modelica_string _name = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_3,2,8) == 0) goto tmp3_end;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_3), 7));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[3],2,3) == 0) goto tmp3_end;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 2));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[4],0,2) == 0) goto tmp3_end;
tmpMeta[5] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 2));
tmpMeta[6] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 3));
if (!optionNone(tmpMeta[6])) goto tmp3_end;
_path = tmpMeta[5];
_cache = tmp4_1;
_env = tmp4_2;
_cache = omc_Lookup_lookupClass(threadData, _cache, _env, _path, mmc_mk_none() ,&_cl ,&_env);
_inCache = _cache;
_inEnv = _env;
_inClass = _cl;
goto _tailrecursive;
goto tmp3_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_3,2,8) == 0) goto tmp3_end;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_3), 2));
_name = tmpMeta[3];
_cache = tmp4_1;
_env = tmp4_2;
tmpMeta[3] = mmc_mk_box2(4, &Absyn_Path_IDENT__desc, _name);
_path = omc_FGraph_joinScopePath(threadData, _env, tmpMeta[3]);
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = _path;
tmpMeta[0+2] = _env;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_cache = tmpMeta[0+0];
_path = tmpMeta[0+1];
_env = tmpMeta[0+2];
_return: OMC_LABEL_UNUSED
if (out_path) { *out_path = _path; }
if (out_env) { *out_env = _env; }
return _cache;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_getOperatorFuncsOrEmptySingleTy(threadData_t *threadData, modelica_metatype __omcQ_24in_5Fcache, modelica_metatype _env, modelica_metatype _ty, modelica_string _opName, modelica_metatype _info, modelica_metatype *out_funcs)
{
modelica_metatype _cache = NULL;
modelica_metatype _funcs = NULL;
modelica_metatype _path = NULL;
modelica_metatype _pathIn = NULL;
modelica_metatype _opNamePath = NULL;
modelica_metatype _operatorCl = NULL;
modelica_metatype _recordEnv = NULL;
modelica_metatype _operEnv = NULL;
modelica_metatype _paths = NULL;
modelica_metatype _scalarType = NULL;
modelica_metatype _tree1 = NULL;
modelica_metatype _tree2 = NULL;
modelica_metatype _trees = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_cache = __omcQ_24in_5Fcache;
_scalarType = omc_Types_arrayElementType(threadData, _ty);
_pathIn = omc_AbsynUtil_makeFullyQualified(threadData, omc_OperatorOverloading_getRecordPath(threadData, _scalarType));
_trees = getGlobalRoot(((modelica_integer) 24));
tmpMeta[0] = _trees;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[0]), 1));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[0]), 2));
_tree1 = tmpMeta[1];
_tree2 = tmpMeta[2];
{
{
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp2_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
_path = omc_OperatorOverloading_AvlTreePathPathEnv_get(threadData, _tree1, _pathIn);
goto tmp2_done;
}
case 1: {
_cache = omc_Lookup_lookupClass(threadData, _cache, _env, _pathIn, mmc_mk_none() ,&_operatorCl ,&_recordEnv);
_cache = omc_OperatorOverloading_lookupOperatorBaseClass(threadData, _cache, _recordEnv, _operatorCl ,&_path ,&_recordEnv);
_tree1 = omc_OperatorOverloading_AvlTreePathPathEnv_add(threadData, _tree1, _pathIn, _path, boxvar_OperatorOverloading_AvlTreePathPathEnv_addConflictDefault);
tmpMeta[0] = mmc_mk_box2(0, _tree1, _tree2);
setGlobalRoot(((modelica_integer) 24), tmpMeta[0]);
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
tmp2_done:
(void)tmp3;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp2_done2;
goto_1:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp3 < 2) {
goto tmp2_top;
}
MMC_THROW_INTERNAL();
tmp2_done2:;
}
}
;
tmpMeta[0] = mmc_mk_box2(4, &Absyn_Path_IDENT__desc, _opName);
_opNamePath = tmpMeta[0];
_path = omc_AbsynUtil_makeFullyQualified(threadData, omc_AbsynUtil_joinPaths(threadData, _path, _opNamePath));
{
{
volatile mmc_switch_type tmp7;
int tmp8;
tmp7 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp6_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp7 < 2; tmp7++) {
switch (MMC_SWITCH_CAST(tmp7)) {
case 0: {
_funcs = omc_OperatorOverloading_AvlTreePathOperatorTypes_get(threadData, _tree2, _path);
goto tmp6_done;
}
case 1: {
modelica_boolean tmp9;
_cache = omc_Lookup_lookupClass(threadData, _cache, _env, _path, mmc_mk_none() ,&_operatorCl ,&_operEnv);
tmp9 = omc_SCodeUtil_isOperator(threadData, _operatorCl);
if (1 != tmp9) goto goto_5;
_paths = omc_AbsynToSCode_getListofQualOperatorFuncsfromOperator(threadData, _operatorCl);
tmpMeta[0] = MMC_REFSTRUCTLIT(mmc_nil);
_cache = omc_Lookup_lookupFunctionsListInEnv(threadData, _cache, _operEnv, _paths, _info, tmpMeta[0] ,&_funcs);
_funcs = omc_List_select2(threadData, _funcs, (((stringEqual(_opName, _OMC_LIT0)) || (stringEqual(_opName, _OMC_LIT40)))?boxvar_OperatorOverloading_checkOperatorFunctionOutput:boxvar_OperatorOverloading_checkOperatorFunctionOneOutput), _scalarType, _info);
_tree2 = omc_OperatorOverloading_AvlTreePathOperatorTypes_add(threadData, _tree2, _path, _funcs, boxvar_OperatorOverloading_AvlTreePathOperatorTypes_addConflictDefault);
tmpMeta[0] = mmc_mk_box2(0, _tree1, _tree2);
setGlobalRoot(((modelica_integer) 24), tmpMeta[0]);
goto tmp6_done;
}
}
goto tmp6_end;
tmp6_end: ;
}
goto goto_5;
tmp6_done:
(void)tmp7;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp6_done2;
goto_5:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp7 < 2) {
goto tmp6_top;
}
MMC_THROW_INTERNAL();
tmp6_done2:;
}
}
;
_return: OMC_LABEL_UNUSED
if (out_funcs) { *out_funcs = _funcs; }
return _cache;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_add(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype _inKey, modelica_metatype _inValue, modelica_fnptr _conflictFunc)
{
modelica_metatype _tree = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_tree = _inTree;
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
modelica_integer _key_comp;
modelica_metatype _outTree = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 5: {
tmpMeta[1] = mmc_mk_box3(4, &OperatorOverloading_AvlTreePathOperatorTypes_Tree_LEAF__desc, _inKey, _inValue);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
_key = tmpMeta[1];
_key_comp = omc_OperatorOverloading_AvlTreePathOperatorTypes_keyCompare(threadData, _inKey, _key);
if((_key_comp == ((modelica_integer) -1)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_tree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[5] = omc_OperatorOverloading_AvlTreePathOperatorTypes_add(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5))), _inKey, _inValue, ((modelica_fnptr) _conflictFunc));
_tree = tmpMeta[1];
}
else
{
if((_key_comp == ((modelica_integer) 1)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_tree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[6] = omc_OperatorOverloading_AvlTreePathOperatorTypes_add(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6))), _inKey, _inValue, ((modelica_fnptr) _conflictFunc));
_tree = tmpMeta[1];
}
else
{
_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 2))), _inValue, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _key) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 1)))) (threadData, _inValue, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _key);
if((!referenceEq((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_tree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _value;
_tree = tmpMeta[1];
}
}
}
tmpMeta[0] = ((_key_comp == ((modelica_integer) 0))?_tree:omc_OperatorOverloading_AvlTreePathOperatorTypes_balance(threadData, _tree));
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
_key = tmpMeta[1];
_key_comp = omc_OperatorOverloading_AvlTreePathOperatorTypes_keyCompare(threadData, _inKey, _key);
if((_key_comp == ((modelica_integer) -1)))
{
tmpMeta[1] = mmc_mk_box3(4, &OperatorOverloading_AvlTreePathOperatorTypes_Tree_LEAF__desc, _inKey, _inValue);
tmpMeta[2] = mmc_mk_box6(3, &OperatorOverloading_AvlTreePathOperatorTypes_Tree_NODE__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), mmc_mk_integer(((modelica_integer) 2)), tmpMeta[1], _OMC_LIT41);
_outTree = tmpMeta[2];
}
else
{
if((_key_comp == ((modelica_integer) 1)))
{
tmpMeta[1] = mmc_mk_box3(4, &OperatorOverloading_AvlTreePathOperatorTypes_Tree_LEAF__desc, _inKey, _inValue);
tmpMeta[2] = mmc_mk_box6(3, &OperatorOverloading_AvlTreePathOperatorTypes_Tree_NODE__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), mmc_mk_integer(((modelica_integer) 2)), _OMC_LIT41, tmpMeta[1]);
_outTree = tmpMeta[2];
}
else
{
_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 2))), _inValue, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _key) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 1)))) (threadData, _inValue, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _key);
if((!referenceEq((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(4));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_tree), 4*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _value;
_tree = tmpMeta[1];
}
_outTree = _tree;
}
}
tmpMeta[0] = ((_key_comp == ((modelica_integer) 0))?_outTree:omc_OperatorOverloading_AvlTreePathOperatorTypes_balance(threadData, _outTree));
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_tree = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _tree;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_addConflictDefault(threadData_t *threadData, modelica_metatype _newValue, modelica_metatype _oldValue, modelica_metatype _key)
{
modelica_metatype _value = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_value = _oldValue;
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_addConflictFail(threadData_t *threadData, modelica_metatype _newValue, modelica_metatype _oldValue, modelica_metatype _key)
{
modelica_metatype _value = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
MMC_THROW_INTERNAL();
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_addConflictKeep(threadData_t *threadData, modelica_metatype _newValue, modelica_metatype _oldValue, modelica_metatype _key)
{
modelica_metatype _value = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_value = _oldValue;
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_addConflictReplace(threadData_t *threadData, modelica_metatype _newValue, modelica_metatype _oldValue, modelica_metatype _key)
{
modelica_metatype _value = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_value = _newValue;
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_addList(threadData_t *threadData, modelica_metatype __omcQ_24in_5Ftree, modelica_metatype _inValues, modelica_fnptr _conflictFunc)
{
modelica_metatype _tree = NULL;
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_tree = __omcQ_24in_5Ftree;
{
modelica_metatype _t;
for (tmpMeta[0] = _inValues; !listEmpty(tmpMeta[0]); tmpMeta[0]=MMC_CDR(tmpMeta[0]))
{
_t = MMC_CAR(tmpMeta[0]);
tmpMeta[1] = _t;
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 1));
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 2));
_key = tmpMeta[2];
_value = tmpMeta[3];
_tree = omc_OperatorOverloading_AvlTreePathOperatorTypes_add(threadData, _tree, _key, _value, ((modelica_fnptr) _conflictFunc));
}
}
_return: OMC_LABEL_UNUSED
return _tree;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_balance(threadData_t *threadData, modelica_metatype _inTree)
{
modelica_metatype _outTree = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outTree = _inTree;
{
modelica_metatype tmp3_1;
tmp3_1 = _outTree;
{
modelica_integer _lh;
modelica_integer _rh;
modelica_integer _diff;
modelica_metatype _balanced_tree = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[0] = _inTree;
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
_lh = omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))));
_rh = omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))));
_diff = _lh - _rh;
if((_diff < ((modelica_integer) -1)))
{
_balanced_tree = ((omc_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6)))) > ((modelica_integer) 0))?omc_OperatorOverloading_AvlTreePathOperatorTypes_rotateLeft(threadData, omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData, _outTree, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))), omc_OperatorOverloading_AvlTreePathOperatorTypes_rotateRight(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6)))))):omc_OperatorOverloading_AvlTreePathOperatorTypes_rotateLeft(threadData, _outTree));
}
else
{
if((_diff > ((modelica_integer) 1)))
{
_balanced_tree = ((omc_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5)))) < ((modelica_integer) 0))?omc_OperatorOverloading_AvlTreePathOperatorTypes_rotateRight(threadData, omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData, _outTree, omc_OperatorOverloading_AvlTreePathOperatorTypes_rotateLeft(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5)))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))))):omc_OperatorOverloading_AvlTreePathOperatorTypes_rotateRight(threadData, _outTree));
}
else
{
if((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 4)))) != ((modelica_integer) 1) + modelica_integer_max((modelica_integer)(_lh),(modelica_integer)(_rh))))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[4] = mmc_mk_integer(((modelica_integer) 1) + modelica_integer_max((modelica_integer)(_lh),(modelica_integer)(_rh)));
_outTree = tmpMeta[1];
_balanced_tree = _outTree;
}
else
{
_balanced_tree = _outTree;
}
}
}
tmpMeta[0] = _balanced_tree;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outTree = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outTree;
}
PROTECTED_FUNCTION_STATIC modelica_integer omc_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_integer _outBalance;
modelica_integer tmp1 = 0;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inNode;
{
int tmp4;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
case 3: {
tmp1 = omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 5)))) - omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 6))));
goto tmp3_done;
}
case 4: {
tmp1 = ((modelica_integer) 0);
goto tmp3_done;
}
default:
tmp3_default: OMC_LABEL_UNUSED; {
tmp1 = ((modelica_integer) 0);
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outBalance = tmp1;
_return: OMC_LABEL_UNUSED
return _outBalance;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_integer _outBalance;
modelica_metatype out_outBalance;
_outBalance = omc_OperatorOverloading_AvlTreePathOperatorTypes_calculateBalance(threadData, _inNode);
out_outBalance = mmc_mk_icon(_outBalance);
return out_outBalance;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_fold(threadData_t *threadData, modelica_metatype _inTree, modelica_fnptr _inFunc, modelica_metatype _inStartValue)
{
modelica_metatype _outResult = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outResult = _inStartValue;
{
modelica_metatype tmp3_1;
tmp3_1 = _inTree;
{
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_outResult = omc_OperatorOverloading_AvlTreePathOperatorTypes_fold(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 5))), ((modelica_fnptr) _inFunc), _outResult);
_outResult = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value, _outResult) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value, _outResult);
_inTree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 6)));
_inStartValue = _outResult;
goto _tailrecursive;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value, _outResult) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value, _outResult);
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _outResult;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outResult = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outResult;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_foldCond(threadData_t *threadData, modelica_metatype _tree, modelica_fnptr _foldFunc, modelica_metatype __omcQ_24in_5Fvalue)
{
modelica_metatype _value = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_value = __omcQ_24in_5Fvalue;
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
modelica_boolean _c;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
modelica_integer tmp4;
tmpMeta[2] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value, &tmpMeta[1]) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value, &tmpMeta[1]);
_value = tmpMeta[2];
tmp4 = mmc_unbox_integer(tmpMeta[1]);
_c = tmp4;
if(_c)
{
_value = omc_OperatorOverloading_AvlTreePathOperatorTypes_foldCond(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5))), ((modelica_fnptr) _foldFunc), _value);
_value = omc_OperatorOverloading_AvlTreePathOperatorTypes_foldCond(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6))), ((modelica_fnptr) _foldFunc), _value);
}
tmpMeta[0] = _value;
goto tmp2_done;
}
case 4: {
tmpMeta[1] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value, NULL) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value, NULL);
_value = tmpMeta[1];
tmpMeta[0] = _value;
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _value;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_value = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_fold__2(threadData_t *threadData, modelica_metatype _tree, modelica_fnptr _foldFunc, modelica_metatype __omcQ_24in_5FfoldArg1, modelica_metatype __omcQ_24in_5FfoldArg2, modelica_metatype *out_foldArg2)
{
modelica_metatype _foldArg1 = NULL;
modelica_metatype _foldArg2 = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_foldArg1 = __omcQ_24in_5FfoldArg1;
_foldArg2 = __omcQ_24in_5FfoldArg2;
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
_foldArg1 = omc_OperatorOverloading_AvlTreePathOperatorTypes_fold__2(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5))), ((modelica_fnptr) _foldFunc), _foldArg1, _foldArg2 ,&_foldArg2);
_foldArg1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _foldArg1, _foldArg2 ,&_foldArg2) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _foldArg1, _foldArg2 ,&_foldArg2);
_foldArg1 = omc_OperatorOverloading_AvlTreePathOperatorTypes_fold__2(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6))), ((modelica_fnptr) _foldFunc), _foldArg1, _foldArg2 ,&_foldArg2);
goto tmp2_done;
}
case 4: {
_foldArg1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _foldArg1, _foldArg2 ,&_foldArg2) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _foldArg1, _foldArg2 ,&_foldArg2);
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
;
_return: OMC_LABEL_UNUSED
if (out_foldArg2) { *out_foldArg2 = _foldArg2; }
return _foldArg1;
}
DLLExport
void omc_OperatorOverloading_AvlTreePathOperatorTypes_forEach(threadData_t *threadData, modelica_metatype _tree, modelica_fnptr _func)
{
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
omc_OperatorOverloading_AvlTreePathOperatorTypes_forEach(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5))), ((modelica_fnptr) _func));
(MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 2))) ? ((void(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3)))) : ((void(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))));
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6)));
goto _tailrecursive;
;
goto tmp2_done;
}
case 4: {
(MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 2))) ? ((void(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3)))) : ((void(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))));
goto tmp2_done;
}
case 5: {
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
;
_return: OMC_LABEL_UNUSED
return;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_fromList(threadData_t *threadData, modelica_metatype _inValues, modelica_fnptr _conflictFunc)
{
modelica_metatype _tree = NULL;
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_tree = _OMC_LIT41;
{
modelica_metatype _t;
for (tmpMeta[0] = _inValues; !listEmpty(tmpMeta[0]); tmpMeta[0]=MMC_CDR(tmpMeta[0]))
{
_t = MMC_CAR(tmpMeta[0]);
tmpMeta[1] = _t;
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 1));
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 2));
_key = tmpMeta[2];
_value = tmpMeta[3];
_tree = omc_OperatorOverloading_AvlTreePathOperatorTypes_add(threadData, _tree, _key, _value, ((modelica_fnptr) _conflictFunc));
}
}
_return: OMC_LABEL_UNUSED
return _tree;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_get(threadData_t *threadData, modelica_metatype _tree, modelica_metatype _key)
{
modelica_metatype _value = NULL;
modelica_metatype _k = NULL;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2)));
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2)));
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_k = tmpMeta[0];
{
modelica_integer tmp7_1;modelica_metatype tmp7_2;
tmp7_1 = omc_OperatorOverloading_AvlTreePathOperatorTypes_keyCompare(threadData, _key, _k);
tmp7_2 = _tree;
{
volatile mmc_switch_type tmp7;
int tmp8;
tmp7 = 0;
for (; tmp7 < 4; tmp7++) {
switch (MMC_SWITCH_CAST(tmp7)) {
case 0: {
if (0 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,1,2) == 0) goto tmp6_end;
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3)));
goto tmp6_done;
}
case 1: {
if (0 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,0,5) == 0) goto tmp6_end;
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3)));
goto tmp6_done;
}
case 2: {
if (1 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,0,5) == 0) goto tmp6_end;
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6)));
goto _tailrecursive;
goto tmp6_done;
}
case 3: {
if (-1 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,0,5) == 0) goto tmp6_end;
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5)));
goto _tailrecursive;
goto tmp6_done;
}
}
goto tmp6_end;
tmp6_end: ;
}
goto goto_5;
goto_5:;
MMC_THROW_INTERNAL();
goto tmp6_done;
tmp6_done:;
}
}
_value = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_getOpt(threadData_t *threadData, modelica_metatype _tree, modelica_metatype _key)
{
modelica_metatype _value = NULL;
modelica_metatype _k = NULL;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2)));
goto tmp2_done;
}
case 4: {
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2)));
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _key;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_k = tmpMeta[0];
{
modelica_integer tmp6_1;modelica_metatype tmp6_2;
tmp6_1 = omc_OperatorOverloading_AvlTreePathOperatorTypes_keyCompare(threadData, _key, _k);
tmp6_2 = _tree;
{
volatile mmc_switch_type tmp6;
int tmp7;
tmp6 = 0;
for (; tmp6 < 5; tmp6++) {
switch (MMC_SWITCH_CAST(tmp6)) {
case 0: {
if (0 != tmp6_1) goto tmp5_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp6_2,1,2) == 0) goto tmp5_end;
tmpMeta[0] = mmc_mk_some((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))));
goto tmp5_done;
}
case 1: {
if (0 != tmp6_1) goto tmp5_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp6_2,0,5) == 0) goto tmp5_end;
tmpMeta[0] = mmc_mk_some((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))));
goto tmp5_done;
}
case 2: {
if (1 != tmp6_1) goto tmp5_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp6_2,0,5) == 0) goto tmp5_end;
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6)));
goto _tailrecursive;
goto tmp5_done;
}
case 3: {
if (-1 != tmp6_1) goto tmp5_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp6_2,0,5) == 0) goto tmp5_end;
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5)));
goto _tailrecursive;
goto tmp5_done;
}
case 4: {
tmpMeta[0] = mmc_mk_none();
goto tmp5_done;
}
}
goto tmp5_end;
tmp5_end: ;
}
goto goto_4;
goto_4:;
MMC_THROW_INTERNAL();
goto tmp5_done;
tmp5_done:;
}
}
_value = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_boolean omc_OperatorOverloading_AvlTreePathOperatorTypes_hasKey(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype _inKey)
{
modelica_boolean _comp;
modelica_metatype _key = NULL;
modelica_integer _key_comp;
modelica_metatype _tree = NULL;
modelica_boolean tmp4 = 0;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_comp = 0;
{
modelica_metatype tmp3_1;
tmp3_1 = _inTree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2)));
goto tmp2_done;
}
case 4: {
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2)));
goto tmp2_done;
}
case 5: {
goto _return;
goto goto_1;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_key = tmpMeta[0];
_key_comp = omc_OperatorOverloading_AvlTreePathOperatorTypes_keyCompare(threadData, _inKey, _key);
{
modelica_integer tmp7_1;modelica_metatype tmp7_2;
tmp7_1 = _key_comp;
tmp7_2 = _inTree;
{
volatile mmc_switch_type tmp7;
int tmp8;
tmp7 = 0;
for (; tmp7 < 4; tmp7++) {
switch (MMC_SWITCH_CAST(tmp7)) {
case 0: {
if (0 != tmp7_1) goto tmp6_end;
tmp4 = 1;
goto tmp6_done;
}
case 1: {
if (1 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,0,5) == 0) goto tmp6_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp7_2), 6));
_tree = tmpMeta[0];
_inTree = _tree;
goto _tailrecursive;
goto tmp6_done;
}
case 2: {
if (-1 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,0,5) == 0) goto tmp6_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp7_2), 5));
_tree = tmpMeta[0];
_inTree = _tree;
goto _tailrecursive;
goto tmp6_done;
}
case 3: {
tmp4 = 0;
goto tmp6_done;
}
}
goto tmp6_end;
tmp6_end: ;
}
goto goto_5;
goto_5:;
MMC_THROW_INTERNAL();
goto tmp6_done;
tmp6_done:;
}
}
_comp = tmp4;
_return: OMC_LABEL_UNUSED
return _comp;
}
modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_hasKey(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype _inKey)
{
modelica_boolean _comp;
modelica_metatype out_comp;
_comp = omc_OperatorOverloading_AvlTreePathOperatorTypes_hasKey(threadData, _inTree, _inKey);
out_comp = mmc_mk_icon(_comp);
return out_comp;
}
PROTECTED_FUNCTION_STATIC modelica_integer omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_integer _outHeight;
modelica_integer tmp1 = 0;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inNode;
{
int tmp4;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
case 3: {
tmp1 = mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 4))));
goto tmp3_done;
}
case 4: {
tmp1 = ((modelica_integer) 1);
goto tmp3_done;
}
default:
tmp3_default: OMC_LABEL_UNUSED; {
tmp1 = ((modelica_integer) 0);
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outHeight = tmp1;
_return: OMC_LABEL_UNUSED
return _outHeight;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_integer _outHeight;
modelica_metatype out_outHeight;
_outHeight = omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData, _inNode);
out_outHeight = mmc_mk_icon(_outHeight);
return out_outHeight;
}
DLLExport
void omc_OperatorOverloading_AvlTreePathOperatorTypes_intersection(threadData_t *threadData)
{
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
MMC_THROW_INTERNAL();
_return: OMC_LABEL_UNUSED
return;
}
DLLExport
modelica_boolean omc_OperatorOverloading_AvlTreePathOperatorTypes_isEmpty(threadData_t *threadData, modelica_metatype _tree)
{
modelica_boolean _isEmpty;
modelica_boolean tmp1 = 0;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _tree;
{
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,0) == 0) goto tmp3_end;
tmp1 = 1;
goto tmp3_done;
}
case 1: {
tmp1 = 0;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_isEmpty = tmp1;
_return: OMC_LABEL_UNUSED
return _isEmpty;
}
modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_isEmpty(threadData_t *threadData, modelica_metatype _tree)
{
modelica_boolean _isEmpty;
modelica_metatype out_isEmpty;
_isEmpty = omc_OperatorOverloading_AvlTreePathOperatorTypes_isEmpty(threadData, _tree);
out_isEmpty = mmc_mk_icon(_isEmpty);
return out_isEmpty;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_join(threadData_t *threadData, modelica_metatype __omcQ_24in_5Ftree, modelica_metatype _treeToJoin, modelica_fnptr _conflictFunc)
{
modelica_metatype _tree = NULL;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_tree = __omcQ_24in_5Ftree;
{
modelica_metatype tmp3_1;
tmp3_1 = _treeToJoin;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 5: {
tmpMeta[0] = _tree;
goto tmp2_done;
}
case 3: {
_tree = omc_OperatorOverloading_AvlTreePathOperatorTypes_add(threadData, _tree, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 3))), ((modelica_fnptr) _conflictFunc));
_tree = omc_OperatorOverloading_AvlTreePathOperatorTypes_join(threadData, _tree, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 5))), ((modelica_fnptr) _conflictFunc));
__omcQ_24in_5Ftree = _tree;
_treeToJoin = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 6)));
goto _tailrecursive;
goto tmp2_done;
}
case 4: {
tmpMeta[0] = omc_OperatorOverloading_AvlTreePathOperatorTypes_add(threadData, _tree, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 3))), ((modelica_fnptr) _conflictFunc));
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_tree = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _tree;
}
DLLExport
modelica_integer omc_OperatorOverloading_AvlTreePathOperatorTypes_keyCompare(threadData_t *threadData, modelica_metatype _inKey1, modelica_metatype _inKey2)
{
modelica_integer _outResult;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outResult = omc_AbsynUtil_pathCompareNoQual(threadData, _inKey1, _inKey2);
_return: OMC_LABEL_UNUSED
return _outResult;
}
modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_keyCompare(threadData_t *threadData, modelica_metatype _inKey1, modelica_metatype _inKey2)
{
modelica_integer _outResult;
modelica_metatype out_outResult;
_outResult = omc_OperatorOverloading_AvlTreePathOperatorTypes_keyCompare(threadData, _inKey1, _inKey2);
out_outResult = mmc_mk_icon(_outResult);
return out_outResult;
}
DLLExport
modelica_string omc_OperatorOverloading_AvlTreePathOperatorTypes_keyStr(threadData_t *threadData, modelica_metatype _inKey)
{
modelica_string _outString = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outString = omc_AbsynUtil_pathString(threadData, _inKey, _OMC_LIT42, 1, 0);
_return: OMC_LABEL_UNUSED
return _outString;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_listKeys(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype __omcQ_24in_5Flst)
{
modelica_metatype _lst = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_lst = __omcQ_24in_5Flst;
{
modelica_metatype tmp3_1;
tmp3_1 = _inTree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 4: {
tmpMeta[1] = mmc_mk_cons((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2))), _lst);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 3: {
_lst = omc_OperatorOverloading_AvlTreePathOperatorTypes_listKeys(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 6))), _lst);
tmpMeta[1] = mmc_mk_cons((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2))), _lst);
_lst = tmpMeta[1];
_inTree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 5)));
__omcQ_24in_5Flst = _lst;
goto _tailrecursive;
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _lst;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_lst = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _lst;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_listKeysReverse(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype __omcQ_24in_5Flst)
{
modelica_metatype _lst = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_lst = __omcQ_24in_5Flst;
{
modelica_metatype tmp3_1;
tmp3_1 = _inTree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 4: {
tmpMeta[1] = mmc_mk_cons((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2))), _lst);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 3: {
_lst = omc_OperatorOverloading_AvlTreePathOperatorTypes_listKeysReverse(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 5))), _lst);
tmpMeta[1] = mmc_mk_cons((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2))), _lst);
_lst = tmpMeta[1];
_inTree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 6)));
__omcQ_24in_5Flst = _lst;
goto _tailrecursive;
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _lst;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_lst = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _lst;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_listValues(threadData_t *threadData, modelica_metatype _tree, modelica_metatype __omcQ_24in_5Flst)
{
modelica_metatype _lst = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_lst = __omcQ_24in_5Flst;
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
modelica_metatype _value = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_value = tmpMeta[1];
_lst = omc_OperatorOverloading_AvlTreePathOperatorTypes_listValues(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6))), _lst);
tmpMeta[1] = mmc_mk_cons(_value, _lst);
_lst = tmpMeta[1];
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5)));
__omcQ_24in_5Flst = _lst;
goto _tailrecursive;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_value = tmpMeta[1];
tmpMeta[1] = mmc_mk_cons(_value, _lst);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _lst;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_lst = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _lst;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_map(threadData_t *threadData, modelica_metatype _inTree, modelica_fnptr _inFunc)
{
modelica_metatype _outTree = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outTree = _inTree;
{
modelica_metatype tmp3_1;
tmp3_1 = _outTree;
{
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
modelica_metatype _new_value = NULL;
modelica_metatype _new_branch = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_new_branch = omc_OperatorOverloading_AvlTreePathOperatorTypes_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))), ((modelica_fnptr) _inFunc));
if((!referenceEq(_new_branch, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))))))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[5] = _new_branch;
_outTree = tmpMeta[1];
}
_new_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value);
if((!referenceEq(_value, _new_value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _new_value;
_outTree = tmpMeta[1];
}
_new_branch = omc_OperatorOverloading_AvlTreePathOperatorTypes_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))), ((modelica_fnptr) _inFunc));
if((!referenceEq(_new_branch, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))))))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[6] = _new_branch;
_outTree = tmpMeta[1];
}
tmpMeta[0] = _outTree;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_new_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value);
if((!referenceEq(_value, _new_value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(4));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 4*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _new_value;
_outTree = tmpMeta[1];
}
tmpMeta[0] = _outTree;
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _inTree;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outTree = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outTree;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_mapFold(threadData_t *threadData, modelica_metatype _inTree, modelica_fnptr _inFunc, modelica_metatype _inStartValue, modelica_metatype *out_outResult)
{
modelica_metatype _outTree = NULL;
modelica_metatype _outResult = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outTree = _inTree;
_outResult = _inStartValue;
{
modelica_metatype tmp3_1;
tmp3_1 = _outTree;
{
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
modelica_metatype _new_value = NULL;
modelica_metatype _new_branch = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_new_branch = omc_OperatorOverloading_AvlTreePathOperatorTypes_mapFold(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))), ((modelica_fnptr) _inFunc), _outResult ,&_outResult);
if((!referenceEq(_new_branch, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))))))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[5] = _new_branch;
_outTree = tmpMeta[1];
}
_new_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value, _outResult ,&_outResult) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value, _outResult ,&_outResult);
if((!referenceEq(_value, _new_value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _new_value;
_outTree = tmpMeta[1];
}
_new_branch = omc_OperatorOverloading_AvlTreePathOperatorTypes_mapFold(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))), ((modelica_fnptr) _inFunc), _outResult ,&_outResult);
if((!referenceEq(_new_branch, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))))))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[6] = _new_branch;
_outTree = tmpMeta[1];
}
tmpMeta[0] = _outTree;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_new_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value, _outResult ,&_outResult) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value, _outResult ,&_outResult);
if((!referenceEq(_value, _new_value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(4));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 4*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _new_value;
_outTree = tmpMeta[1];
}
tmpMeta[0] = _outTree;
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _inTree;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outTree = tmpMeta[0];
_return: OMC_LABEL_UNUSED
if (out_outResult) { *out_outResult = _outResult; }
return _outTree;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_new(threadData_t *threadData)
{
modelica_metatype _outTree = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outTree = _OMC_LIT41;
_return: OMC_LABEL_UNUSED
return _outTree;
}
DLLExport
modelica_string omc_OperatorOverloading_AvlTreePathOperatorTypes_printNodeStr(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_string _outString = NULL;
modelica_string tmp1 = 0;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inNode;
{
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,5) == 0) goto tmp3_end;
tmpMeta[0] = stringAppend(_OMC_LIT43,omc_OperatorOverloading_AvlTreePathOperatorTypes_keyStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 2)))));
tmpMeta[1] = stringAppend(tmpMeta[0],_OMC_LIT33);
tmpMeta[2] = stringAppend(tmpMeta[1],omc_OperatorOverloading_AvlTreePathOperatorTypes_valueStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 3)))));
tmpMeta[3] = stringAppend(tmpMeta[2],_OMC_LIT44);
tmp1 = tmpMeta[3];
goto tmp3_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,2) == 0) goto tmp3_end;
tmpMeta[0] = stringAppend(_OMC_LIT43,omc_OperatorOverloading_AvlTreePathOperatorTypes_keyStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 2)))));
tmpMeta[1] = stringAppend(tmpMeta[0],_OMC_LIT33);
tmpMeta[2] = stringAppend(tmpMeta[1],omc_OperatorOverloading_AvlTreePathOperatorTypes_valueStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 3)))));
tmpMeta[3] = stringAppend(tmpMeta[2],_OMC_LIT44);
tmp1 = tmpMeta[3];
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outString = tmp1;
_return: OMC_LABEL_UNUSED
return _outString;
}
DLLExport
modelica_string omc_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr(threadData_t *threadData, modelica_metatype _inTree)
{
modelica_string _outString = NULL;
modelica_metatype _left = NULL;
modelica_metatype _right = NULL;
modelica_string tmp1 = 0;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inTree;
{
int tmp4;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
case 5: {
tmp1 = _OMC_LIT45;
goto tmp3_done;
}
case 4: {
tmp1 = omc_OperatorOverloading_AvlTreePathOperatorTypes_printNodeStr(threadData, _inTree);
goto tmp3_done;
}
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,5) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 6));
_left = tmpMeta[0];
_right = tmpMeta[1];
tmpMeta[0] = stringAppend(omc_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2(threadData, _left, 1, _OMC_LIT46),omc_OperatorOverloading_AvlTreePathOperatorTypes_printNodeStr(threadData, _inTree));
tmpMeta[1] = stringAppend(tmpMeta[0],_OMC_LIT47);
tmpMeta[2] = stringAppend(tmpMeta[1],omc_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2(threadData, _right, 0, _OMC_LIT46));
tmp1 = tmpMeta[2];
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outString = tmp1;
_return: OMC_LABEL_UNUSED
return _outString;
}
PROTECTED_FUNCTION_STATIC modelica_string omc_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2(threadData_t *threadData, modelica_metatype _inTree, modelica_boolean _isLeft, modelica_string _inIndent)
{
modelica_string _outString = NULL;
modelica_metatype _val_node = NULL;
modelica_metatype _left = NULL;
modelica_metatype _right = NULL;
modelica_string _left_str = NULL;
modelica_string _right_str = NULL;
modelica_string tmp1 = 0;
modelica_metatype tmpMeta[8] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inTree;
{
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,5) == 0) goto tmp3_end;
tmpMeta[0] = stringAppend(_inIndent,(_isLeft?_OMC_LIT48:_OMC_LIT49));
tmpMeta[1] = stringAppend(omc_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 5))), 1, tmpMeta[0]),_inIndent);
tmpMeta[2] = stringAppend(tmpMeta[1],(_isLeft?_OMC_LIT50:_OMC_LIT51));
tmpMeta[3] = stringAppend(tmpMeta[2],_OMC_LIT52);
tmpMeta[4] = stringAppend(tmpMeta[3],omc_OperatorOverloading_AvlTreePathOperatorTypes_printNodeStr(threadData, _inTree));
tmpMeta[5] = stringAppend(tmpMeta[4],_OMC_LIT47);
tmpMeta[6] = stringAppend(_inIndent,(_isLeft?_OMC_LIT49:_OMC_LIT48));
tmpMeta[7] = stringAppend(tmpMeta[5],omc_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 6))), 0, tmpMeta[6]));
tmp1 = tmpMeta[7];
goto tmp3_done;
}
case 1: {
tmp1 = _OMC_LIT46;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outString = tmp1;
_return: OMC_LABEL_UNUSED
return _outString;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype _isLeft, modelica_metatype _inIndent)
{
modelica_integer tmp1;
modelica_string _outString = NULL;
tmp1 = mmc_unbox_integer(_isLeft);
_outString = omc_OperatorOverloading_AvlTreePathOperatorTypes_printTreeStr2(threadData, _inTree, tmp1, _inIndent);
return _outString;
}
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty(threadData_t *threadData, modelica_metatype _t1, modelica_metatype _t2)
{
modelica_boolean _b;
modelica_boolean tmp1 = 0;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;modelica_metatype tmp4_2;
tmp4_1 = _t1;
tmp4_2 = _t2;
{
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,0) == 0) goto tmp3_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,0) == 0) goto tmp3_end;
tmp1 = 1;
goto tmp3_done;
}
case 1: {
tmp1 = referenceEq(_t1, _t2);
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_b = tmp1;
_return: OMC_LABEL_UNUSED
return _b;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty(threadData_t *threadData, modelica_metatype _t1, modelica_metatype _t2)
{
modelica_boolean _b;
modelica_metatype out_b;
_b = omc_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty(threadData, _t1, _t2);
out_b = mmc_mk_icon(_b);
return out_b;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_rotateLeft(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_metatype _outNode = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outNode = _inNode;
{
modelica_metatype tmp3_1;
tmp3_1 = _outNode;
{
modelica_metatype _node = NULL;
modelica_metatype _child = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 3; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 6));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],0,5) == 0) goto tmp2_end;
_child = tmpMeta[1];
_node = omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData, _outNode, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outNode), 5))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_child), 5))));
tmpMeta[0] = omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData, _child, _node, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_child), 6))));
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 6));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],1,2) == 0) goto tmp2_end;
_child = tmpMeta[1];
_node = omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData, _outNode, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outNode), 5))), _OMC_LIT41);
tmpMeta[0] = omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData, _child, _node, _OMC_LIT41);
goto tmp2_done;
}
case 2: {
tmpMeta[0] = _inNode;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outNode = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outNode;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_rotateRight(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_metatype _outNode = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outNode = _inNode;
{
modelica_metatype tmp3_1;
tmp3_1 = _outNode;
{
modelica_metatype _node = NULL;
modelica_metatype _child = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 3; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 5));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],0,5) == 0) goto tmp2_end;
_child = tmpMeta[1];
_node = omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData, _outNode, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_child), 6))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outNode), 6))));
tmpMeta[0] = omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData, _child, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_child), 5))), _node);
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 5));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],1,2) == 0) goto tmp2_end;
_child = tmpMeta[1];
_node = omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData, _outNode, _OMC_LIT41, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outNode), 6))));
tmpMeta[0] = omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData, _child, _OMC_LIT41, _node);
goto tmp2_done;
}
case 2: {
tmpMeta[0] = _inNode;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outNode = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outNode;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_setTreeLeftRight(threadData_t *threadData, modelica_metatype _orig, modelica_metatype _left, modelica_metatype _right)
{
modelica_metatype _res = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;modelica_metatype tmp3_2;modelica_metatype tmp3_3;
tmp3_1 = _orig;
tmp3_2 = _left;
tmp3_3 = _right;
{
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 4; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_2,2,0) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_3,2,0) == 0) goto tmp2_end;
tmpMeta[1] = mmc_mk_box3(4, &OperatorOverloading_AvlTreePathOperatorTypes_Tree_LEAF__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 3))));
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_2,2,0) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_3,2,0) == 0) goto tmp2_end;
tmpMeta[0] = _orig;
goto tmp2_done;
}
case 2: {
modelica_boolean tmp5;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmp5 = (modelica_boolean)(omc_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 5))), _left) && omc_OperatorOverloading_AvlTreePathOperatorTypes_referenceEqOrEmpty(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 6))), _right));
if(tmp5)
{
tmpMeta[2] = _orig;
}
else
{
tmpMeta[1] = mmc_mk_box6(3, &OperatorOverloading_AvlTreePathOperatorTypes_Tree_NODE__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 3))), mmc_mk_integer(((modelica_integer) 1) + modelica_integer_max((modelica_integer)(omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData, _left)),(modelica_integer)(omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData, _right)))), _left, _right);
tmpMeta[2] = tmpMeta[1];
}
tmpMeta[0] = tmpMeta[2];
goto tmp2_done;
}
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = mmc_mk_box6(3, &OperatorOverloading_AvlTreePathOperatorTypes_Tree_NODE__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 3))), mmc_mk_integer(((modelica_integer) 1) + modelica_integer_max((modelica_integer)(omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData, _left)),(modelica_integer)(omc_OperatorOverloading_AvlTreePathOperatorTypes_height(threadData, _right)))), _left, _right);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_res = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _res;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_toList(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype __omcQ_24in_5Flst)
{
modelica_metatype _lst = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_lst = __omcQ_24in_5Flst;
{
modelica_metatype tmp3_1;
tmp3_1 = _inTree;
{
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_lst = omc_OperatorOverloading_AvlTreePathOperatorTypes_toList(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 6))), _lst);
tmpMeta[2] = mmc_mk_box2(0, _key, _value);
tmpMeta[1] = mmc_mk_cons(tmpMeta[2], _lst);
_lst = tmpMeta[1];
_inTree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 5)));
__omcQ_24in_5Flst = _lst;
goto _tailrecursive;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
tmpMeta[2] = mmc_mk_box2(0, _key, _value);
tmpMeta[1] = mmc_mk_cons(tmpMeta[2], _lst);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _lst;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_lst = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _lst;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathOperatorTypes_update(threadData_t *threadData, modelica_metatype _tree, modelica_metatype _key, modelica_metatype _value)
{
modelica_metatype _outTree = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outTree = omc_OperatorOverloading_AvlTreePathOperatorTypes_add(threadData, _tree, _key, _value, boxvar_OperatorOverloading_AvlTreePathOperatorTypes_addConflictReplace);
_return: OMC_LABEL_UNUSED
return _outTree;
}
DLLExport
modelica_string omc_OperatorOverloading_AvlTreePathOperatorTypes_valueStr(threadData_t *threadData, modelica_metatype _inValue)
{
modelica_string _outString = NULL;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
tmpMeta[0] = mmc_mk_box2(21, &DAE_Type_T__METATUPLE__desc, _inValue);
_outString = omc_Types_unparseType(threadData, tmpMeta[0]);
_return: OMC_LABEL_UNUSED
return _outString;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_add(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype _inKey, modelica_metatype _inValue, modelica_fnptr _conflictFunc)
{
modelica_metatype _tree = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_tree = _inTree;
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
modelica_integer _key_comp;
modelica_metatype _outTree = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 5: {
tmpMeta[1] = mmc_mk_box3(4, &OperatorOverloading_AvlTreePathPathEnv_Tree_LEAF__desc, _inKey, _inValue);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
_key = tmpMeta[1];
_key_comp = omc_OperatorOverloading_AvlTreePathPathEnv_keyCompare(threadData, _inKey, _key);
if((_key_comp == ((modelica_integer) -1)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_tree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[5] = omc_OperatorOverloading_AvlTreePathPathEnv_add(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5))), _inKey, _inValue, ((modelica_fnptr) _conflictFunc));
_tree = tmpMeta[1];
}
else
{
if((_key_comp == ((modelica_integer) 1)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_tree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[6] = omc_OperatorOverloading_AvlTreePathPathEnv_add(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6))), _inKey, _inValue, ((modelica_fnptr) _conflictFunc));
_tree = tmpMeta[1];
}
else
{
_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 2))), _inValue, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _key) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 1)))) (threadData, _inValue, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _key);
if((!referenceEq((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_tree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _value;
_tree = tmpMeta[1];
}
}
}
tmpMeta[0] = ((_key_comp == ((modelica_integer) 0))?_tree:omc_OperatorOverloading_AvlTreePathPathEnv_balance(threadData, _tree));
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
_key = tmpMeta[1];
_key_comp = omc_OperatorOverloading_AvlTreePathPathEnv_keyCompare(threadData, _inKey, _key);
if((_key_comp == ((modelica_integer) -1)))
{
tmpMeta[1] = mmc_mk_box3(4, &OperatorOverloading_AvlTreePathPathEnv_Tree_LEAF__desc, _inKey, _inValue);
tmpMeta[2] = mmc_mk_box6(3, &OperatorOverloading_AvlTreePathPathEnv_Tree_NODE__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), mmc_mk_integer(((modelica_integer) 2)), tmpMeta[1], _OMC_LIT53);
_outTree = tmpMeta[2];
}
else
{
if((_key_comp == ((modelica_integer) 1)))
{
tmpMeta[1] = mmc_mk_box3(4, &OperatorOverloading_AvlTreePathPathEnv_Tree_LEAF__desc, _inKey, _inValue);
tmpMeta[2] = mmc_mk_box6(3, &OperatorOverloading_AvlTreePathPathEnv_Tree_NODE__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), mmc_mk_integer(((modelica_integer) 2)), _OMC_LIT53, tmpMeta[1]);
_outTree = tmpMeta[2];
}
else
{
_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 2))), _inValue, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _key) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_conflictFunc), 1)))) (threadData, _inValue, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _key);
if((!referenceEq((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(4));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_tree), 4*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _value;
_tree = tmpMeta[1];
}
_outTree = _tree;
}
}
tmpMeta[0] = ((_key_comp == ((modelica_integer) 0))?_outTree:omc_OperatorOverloading_AvlTreePathPathEnv_balance(threadData, _outTree));
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_tree = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _tree;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_addConflictDefault(threadData_t *threadData, modelica_metatype _newValue, modelica_metatype _oldValue, modelica_metatype _key)
{
modelica_metatype _value = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_value = _oldValue;
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_addConflictFail(threadData_t *threadData, modelica_metatype _newValue, modelica_metatype _oldValue, modelica_metatype _key)
{
modelica_metatype _value = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
MMC_THROW_INTERNAL();
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_addConflictKeep(threadData_t *threadData, modelica_metatype _newValue, modelica_metatype _oldValue, modelica_metatype _key)
{
modelica_metatype _value = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_value = _oldValue;
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_addConflictReplace(threadData_t *threadData, modelica_metatype _newValue, modelica_metatype _oldValue, modelica_metatype _key)
{
modelica_metatype _value = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_value = _newValue;
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_addList(threadData_t *threadData, modelica_metatype __omcQ_24in_5Ftree, modelica_metatype _inValues, modelica_fnptr _conflictFunc)
{
modelica_metatype _tree = NULL;
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_tree = __omcQ_24in_5Ftree;
{
modelica_metatype _t;
for (tmpMeta[0] = _inValues; !listEmpty(tmpMeta[0]); tmpMeta[0]=MMC_CDR(tmpMeta[0]))
{
_t = MMC_CAR(tmpMeta[0]);
tmpMeta[1] = _t;
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 1));
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 2));
_key = tmpMeta[2];
_value = tmpMeta[3];
_tree = omc_OperatorOverloading_AvlTreePathPathEnv_add(threadData, _tree, _key, _value, ((modelica_fnptr) _conflictFunc));
}
}
_return: OMC_LABEL_UNUSED
return _tree;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_balance(threadData_t *threadData, modelica_metatype _inTree)
{
modelica_metatype _outTree = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outTree = _inTree;
{
modelica_metatype tmp3_1;
tmp3_1 = _outTree;
{
modelica_integer _lh;
modelica_integer _rh;
modelica_integer _diff;
modelica_metatype _balanced_tree = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[0] = _inTree;
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
_lh = omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))));
_rh = omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))));
_diff = _lh - _rh;
if((_diff < ((modelica_integer) -1)))
{
_balanced_tree = ((omc_OperatorOverloading_AvlTreePathPathEnv_calculateBalance(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6)))) > ((modelica_integer) 0))?omc_OperatorOverloading_AvlTreePathPathEnv_rotateLeft(threadData, omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData, _outTree, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))), omc_OperatorOverloading_AvlTreePathPathEnv_rotateRight(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6)))))):omc_OperatorOverloading_AvlTreePathPathEnv_rotateLeft(threadData, _outTree));
}
else
{
if((_diff > ((modelica_integer) 1)))
{
_balanced_tree = ((omc_OperatorOverloading_AvlTreePathPathEnv_calculateBalance(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5)))) < ((modelica_integer) 0))?omc_OperatorOverloading_AvlTreePathPathEnv_rotateRight(threadData, omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData, _outTree, omc_OperatorOverloading_AvlTreePathPathEnv_rotateLeft(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5)))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))))):omc_OperatorOverloading_AvlTreePathPathEnv_rotateRight(threadData, _outTree));
}
else
{
if((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 4)))) != ((modelica_integer) 1) + modelica_integer_max((modelica_integer)(_lh),(modelica_integer)(_rh))))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[4] = mmc_mk_integer(((modelica_integer) 1) + modelica_integer_max((modelica_integer)(_lh),(modelica_integer)(_rh)));
_outTree = tmpMeta[1];
_balanced_tree = _outTree;
}
else
{
_balanced_tree = _outTree;
}
}
}
tmpMeta[0] = _balanced_tree;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outTree = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outTree;
}
PROTECTED_FUNCTION_STATIC modelica_integer omc_OperatorOverloading_AvlTreePathPathEnv_calculateBalance(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_integer _outBalance;
modelica_integer tmp1 = 0;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inNode;
{
int tmp4;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
case 3: {
tmp1 = omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 5)))) - omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 6))));
goto tmp3_done;
}
case 4: {
tmp1 = ((modelica_integer) 0);
goto tmp3_done;
}
default:
tmp3_default: OMC_LABEL_UNUSED; {
tmp1 = ((modelica_integer) 0);
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outBalance = tmp1;
_return: OMC_LABEL_UNUSED
return _outBalance;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_calculateBalance(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_integer _outBalance;
modelica_metatype out_outBalance;
_outBalance = omc_OperatorOverloading_AvlTreePathPathEnv_calculateBalance(threadData, _inNode);
out_outBalance = mmc_mk_icon(_outBalance);
return out_outBalance;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_fold(threadData_t *threadData, modelica_metatype _inTree, modelica_fnptr _inFunc, modelica_metatype _inStartValue)
{
modelica_metatype _outResult = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outResult = _inStartValue;
{
modelica_metatype tmp3_1;
tmp3_1 = _inTree;
{
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_outResult = omc_OperatorOverloading_AvlTreePathPathEnv_fold(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 5))), ((modelica_fnptr) _inFunc), _outResult);
_outResult = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value, _outResult) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value, _outResult);
_inTree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 6)));
_inStartValue = _outResult;
goto _tailrecursive;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value, _outResult) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value, _outResult);
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _outResult;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outResult = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outResult;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_foldCond(threadData_t *threadData, modelica_metatype _tree, modelica_fnptr _foldFunc, modelica_metatype __omcQ_24in_5Fvalue)
{
modelica_metatype _value = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_value = __omcQ_24in_5Fvalue;
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
modelica_boolean _c;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
modelica_integer tmp4;
tmpMeta[2] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value, &tmpMeta[1]) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value, &tmpMeta[1]);
_value = tmpMeta[2];
tmp4 = mmc_unbox_integer(tmpMeta[1]);
_c = tmp4;
if(_c)
{
_value = omc_OperatorOverloading_AvlTreePathPathEnv_foldCond(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5))), ((modelica_fnptr) _foldFunc), _value);
_value = omc_OperatorOverloading_AvlTreePathPathEnv_foldCond(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6))), ((modelica_fnptr) _foldFunc), _value);
}
tmpMeta[0] = _value;
goto tmp2_done;
}
case 4: {
tmpMeta[1] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value, NULL) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _value, NULL);
_value = tmpMeta[1];
tmpMeta[0] = _value;
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _value;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_value = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_fold__2(threadData_t *threadData, modelica_metatype _tree, modelica_fnptr _foldFunc, modelica_metatype __omcQ_24in_5FfoldArg1, modelica_metatype __omcQ_24in_5FfoldArg2, modelica_metatype *out_foldArg2)
{
modelica_metatype _foldArg1 = NULL;
modelica_metatype _foldArg2 = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_foldArg1 = __omcQ_24in_5FfoldArg1;
_foldArg2 = __omcQ_24in_5FfoldArg2;
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
_foldArg1 = omc_OperatorOverloading_AvlTreePathPathEnv_fold__2(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5))), ((modelica_fnptr) _foldFunc), _foldArg1, _foldArg2 ,&_foldArg2);
_foldArg1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _foldArg1, _foldArg2 ,&_foldArg2) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _foldArg1, _foldArg2 ,&_foldArg2);
_foldArg1 = omc_OperatorOverloading_AvlTreePathPathEnv_fold__2(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6))), ((modelica_fnptr) _foldFunc), _foldArg1, _foldArg2 ,&_foldArg2);
goto tmp2_done;
}
case 4: {
_foldArg1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _foldArg1, _foldArg2 ,&_foldArg2) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_foldFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))), _foldArg1, _foldArg2 ,&_foldArg2);
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
;
_return: OMC_LABEL_UNUSED
if (out_foldArg2) { *out_foldArg2 = _foldArg2; }
return _foldArg1;
}
DLLExport
void omc_OperatorOverloading_AvlTreePathPathEnv_forEach(threadData_t *threadData, modelica_metatype _tree, modelica_fnptr _func)
{
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
omc_OperatorOverloading_AvlTreePathPathEnv_forEach(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5))), ((modelica_fnptr) _func));
(MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 2))) ? ((void(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3)))) : ((void(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))));
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6)));
goto _tailrecursive;
;
goto tmp2_done;
}
case 4: {
(MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 2))) ? ((void(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3)))) : ((void(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_func), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))));
goto tmp2_done;
}
case 5: {
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
;
_return: OMC_LABEL_UNUSED
return;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_fromList(threadData_t *threadData, modelica_metatype _inValues, modelica_fnptr _conflictFunc)
{
modelica_metatype _tree = NULL;
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_tree = _OMC_LIT53;
{
modelica_metatype _t;
for (tmpMeta[0] = _inValues; !listEmpty(tmpMeta[0]); tmpMeta[0]=MMC_CDR(tmpMeta[0]))
{
_t = MMC_CAR(tmpMeta[0]);
tmpMeta[1] = _t;
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 1));
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 2));
_key = tmpMeta[2];
_value = tmpMeta[3];
_tree = omc_OperatorOverloading_AvlTreePathPathEnv_add(threadData, _tree, _key, _value, ((modelica_fnptr) _conflictFunc));
}
}
_return: OMC_LABEL_UNUSED
return _tree;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_get(threadData_t *threadData, modelica_metatype _tree, modelica_metatype _key)
{
modelica_metatype _value = NULL;
modelica_metatype _k = NULL;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2)));
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2)));
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_k = tmpMeta[0];
{
modelica_integer tmp7_1;modelica_metatype tmp7_2;
tmp7_1 = omc_OperatorOverloading_AvlTreePathPathEnv_keyCompare(threadData, _key, _k);
tmp7_2 = _tree;
{
volatile mmc_switch_type tmp7;
int tmp8;
tmp7 = 0;
for (; tmp7 < 4; tmp7++) {
switch (MMC_SWITCH_CAST(tmp7)) {
case 0: {
if (0 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,1,2) == 0) goto tmp6_end;
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3)));
goto tmp6_done;
}
case 1: {
if (0 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,0,5) == 0) goto tmp6_end;
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3)));
goto tmp6_done;
}
case 2: {
if (1 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,0,5) == 0) goto tmp6_end;
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6)));
goto _tailrecursive;
goto tmp6_done;
}
case 3: {
if (-1 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,0,5) == 0) goto tmp6_end;
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5)));
goto _tailrecursive;
goto tmp6_done;
}
}
goto tmp6_end;
tmp6_end: ;
}
goto goto_5;
goto_5:;
MMC_THROW_INTERNAL();
goto tmp6_done;
tmp6_done:;
}
}
_value = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_getOpt(threadData_t *threadData, modelica_metatype _tree, modelica_metatype _key)
{
modelica_metatype _value = NULL;
modelica_metatype _k = NULL;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2)));
goto tmp2_done;
}
case 4: {
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 2)));
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _key;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_k = tmpMeta[0];
{
modelica_integer tmp6_1;modelica_metatype tmp6_2;
tmp6_1 = omc_OperatorOverloading_AvlTreePathPathEnv_keyCompare(threadData, _key, _k);
tmp6_2 = _tree;
{
volatile mmc_switch_type tmp6;
int tmp7;
tmp6 = 0;
for (; tmp6 < 5; tmp6++) {
switch (MMC_SWITCH_CAST(tmp6)) {
case 0: {
if (0 != tmp6_1) goto tmp5_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp6_2,1,2) == 0) goto tmp5_end;
tmpMeta[0] = mmc_mk_some((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))));
goto tmp5_done;
}
case 1: {
if (0 != tmp6_1) goto tmp5_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp6_2,0,5) == 0) goto tmp5_end;
tmpMeta[0] = mmc_mk_some((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 3))));
goto tmp5_done;
}
case 2: {
if (1 != tmp6_1) goto tmp5_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp6_2,0,5) == 0) goto tmp5_end;
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6)));
goto _tailrecursive;
goto tmp5_done;
}
case 3: {
if (-1 != tmp6_1) goto tmp5_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp6_2,0,5) == 0) goto tmp5_end;
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5)));
goto _tailrecursive;
goto tmp5_done;
}
case 4: {
tmpMeta[0] = mmc_mk_none();
goto tmp5_done;
}
}
goto tmp5_end;
tmp5_end: ;
}
goto goto_4;
goto_4:;
MMC_THROW_INTERNAL();
goto tmp5_done;
tmp5_done:;
}
}
_value = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _value;
}
DLLExport
modelica_boolean omc_OperatorOverloading_AvlTreePathPathEnv_hasKey(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype _inKey)
{
modelica_boolean _comp;
modelica_metatype _key = NULL;
modelica_integer _key_comp;
modelica_metatype _tree = NULL;
modelica_boolean tmp4 = 0;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_comp = 0;
{
modelica_metatype tmp3_1;
tmp3_1 = _inTree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2)));
goto tmp2_done;
}
case 4: {
tmpMeta[0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2)));
goto tmp2_done;
}
case 5: {
goto _return;
goto goto_1;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_key = tmpMeta[0];
_key_comp = omc_OperatorOverloading_AvlTreePathPathEnv_keyCompare(threadData, _inKey, _key);
{
modelica_integer tmp7_1;modelica_metatype tmp7_2;
tmp7_1 = _key_comp;
tmp7_2 = _inTree;
{
volatile mmc_switch_type tmp7;
int tmp8;
tmp7 = 0;
for (; tmp7 < 4; tmp7++) {
switch (MMC_SWITCH_CAST(tmp7)) {
case 0: {
if (0 != tmp7_1) goto tmp6_end;
tmp4 = 1;
goto tmp6_done;
}
case 1: {
if (1 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,0,5) == 0) goto tmp6_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp7_2), 6));
_tree = tmpMeta[0];
_inTree = _tree;
goto _tailrecursive;
goto tmp6_done;
}
case 2: {
if (-1 != tmp7_1) goto tmp6_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp7_2,0,5) == 0) goto tmp6_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp7_2), 5));
_tree = tmpMeta[0];
_inTree = _tree;
goto _tailrecursive;
goto tmp6_done;
}
case 3: {
tmp4 = 0;
goto tmp6_done;
}
}
goto tmp6_end;
tmp6_end: ;
}
goto goto_5;
goto_5:;
MMC_THROW_INTERNAL();
goto tmp6_done;
tmp6_done:;
}
}
_comp = tmp4;
_return: OMC_LABEL_UNUSED
return _comp;
}
modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_hasKey(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype _inKey)
{
modelica_boolean _comp;
modelica_metatype out_comp;
_comp = omc_OperatorOverloading_AvlTreePathPathEnv_hasKey(threadData, _inTree, _inKey);
out_comp = mmc_mk_icon(_comp);
return out_comp;
}
PROTECTED_FUNCTION_STATIC modelica_integer omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_integer _outHeight;
modelica_integer tmp1 = 0;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inNode;
{
int tmp4;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
case 3: {
tmp1 = mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 4))));
goto tmp3_done;
}
case 4: {
tmp1 = ((modelica_integer) 1);
goto tmp3_done;
}
default:
tmp3_default: OMC_LABEL_UNUSED; {
tmp1 = ((modelica_integer) 0);
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outHeight = tmp1;
_return: OMC_LABEL_UNUSED
return _outHeight;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_height(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_integer _outHeight;
modelica_metatype out_outHeight;
_outHeight = omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData, _inNode);
out_outHeight = mmc_mk_icon(_outHeight);
return out_outHeight;
}
DLLExport
void omc_OperatorOverloading_AvlTreePathPathEnv_intersection(threadData_t *threadData)
{
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
MMC_THROW_INTERNAL();
_return: OMC_LABEL_UNUSED
return;
}
DLLExport
modelica_boolean omc_OperatorOverloading_AvlTreePathPathEnv_isEmpty(threadData_t *threadData, modelica_metatype _tree)
{
modelica_boolean _isEmpty;
modelica_boolean tmp1 = 0;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _tree;
{
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,0) == 0) goto tmp3_end;
tmp1 = 1;
goto tmp3_done;
}
case 1: {
tmp1 = 0;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_isEmpty = tmp1;
_return: OMC_LABEL_UNUSED
return _isEmpty;
}
modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_isEmpty(threadData_t *threadData, modelica_metatype _tree)
{
modelica_boolean _isEmpty;
modelica_metatype out_isEmpty;
_isEmpty = omc_OperatorOverloading_AvlTreePathPathEnv_isEmpty(threadData, _tree);
out_isEmpty = mmc_mk_icon(_isEmpty);
return out_isEmpty;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_join(threadData_t *threadData, modelica_metatype __omcQ_24in_5Ftree, modelica_metatype _treeToJoin, modelica_fnptr _conflictFunc)
{
modelica_metatype _tree = NULL;
modelica_metatype tmpMeta[1] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_tree = __omcQ_24in_5Ftree;
{
modelica_metatype tmp3_1;
tmp3_1 = _treeToJoin;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 5: {
tmpMeta[0] = _tree;
goto tmp2_done;
}
case 3: {
_tree = omc_OperatorOverloading_AvlTreePathPathEnv_add(threadData, _tree, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 3))), ((modelica_fnptr) _conflictFunc));
_tree = omc_OperatorOverloading_AvlTreePathPathEnv_join(threadData, _tree, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 5))), ((modelica_fnptr) _conflictFunc));
__omcQ_24in_5Ftree = _tree;
_treeToJoin = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 6)));
goto _tailrecursive;
goto tmp2_done;
}
case 4: {
tmpMeta[0] = omc_OperatorOverloading_AvlTreePathPathEnv_add(threadData, _tree, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_treeToJoin), 3))), ((modelica_fnptr) _conflictFunc));
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_tree = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _tree;
}
DLLExport
modelica_integer omc_OperatorOverloading_AvlTreePathPathEnv_keyCompare(threadData_t *threadData, modelica_metatype _inKey1, modelica_metatype _inKey2)
{
modelica_integer _outResult;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outResult = omc_AbsynUtil_pathCompareNoQual(threadData, _inKey1, _inKey2);
_return: OMC_LABEL_UNUSED
return _outResult;
}
modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_keyCompare(threadData_t *threadData, modelica_metatype _inKey1, modelica_metatype _inKey2)
{
modelica_integer _outResult;
modelica_metatype out_outResult;
_outResult = omc_OperatorOverloading_AvlTreePathPathEnv_keyCompare(threadData, _inKey1, _inKey2);
out_outResult = mmc_mk_icon(_outResult);
return out_outResult;
}
DLLExport
modelica_string omc_OperatorOverloading_AvlTreePathPathEnv_keyStr(threadData_t *threadData, modelica_metatype _inKey)
{
modelica_string _outString = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outString = omc_AbsynUtil_pathString(threadData, _inKey, _OMC_LIT42, 1, 0);
_return: OMC_LABEL_UNUSED
return _outString;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_listKeys(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype __omcQ_24in_5Flst)
{
modelica_metatype _lst = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_lst = __omcQ_24in_5Flst;
{
modelica_metatype tmp3_1;
tmp3_1 = _inTree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 4: {
tmpMeta[1] = mmc_mk_cons((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2))), _lst);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 3: {
_lst = omc_OperatorOverloading_AvlTreePathPathEnv_listKeys(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 6))), _lst);
tmpMeta[1] = mmc_mk_cons((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2))), _lst);
_lst = tmpMeta[1];
_inTree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 5)));
__omcQ_24in_5Flst = _lst;
goto _tailrecursive;
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _lst;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_lst = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _lst;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_listKeysReverse(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype __omcQ_24in_5Flst)
{
modelica_metatype _lst = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_lst = __omcQ_24in_5Flst;
{
modelica_metatype tmp3_1;
tmp3_1 = _inTree;
{
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 4: {
tmpMeta[1] = mmc_mk_cons((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2))), _lst);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 3: {
_lst = omc_OperatorOverloading_AvlTreePathPathEnv_listKeysReverse(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 5))), _lst);
tmpMeta[1] = mmc_mk_cons((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 2))), _lst);
_lst = tmpMeta[1];
_inTree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 6)));
__omcQ_24in_5Flst = _lst;
goto _tailrecursive;
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _lst;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_lst = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _lst;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_listValues(threadData_t *threadData, modelica_metatype _tree, modelica_metatype __omcQ_24in_5Flst)
{
modelica_metatype _lst = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_lst = __omcQ_24in_5Flst;
{
modelica_metatype tmp3_1;
tmp3_1 = _tree;
{
modelica_metatype _value = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_value = tmpMeta[1];
_lst = omc_OperatorOverloading_AvlTreePathPathEnv_listValues(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 6))), _lst);
tmpMeta[1] = mmc_mk_cons(_value, _lst);
_lst = tmpMeta[1];
_tree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_tree), 5)));
__omcQ_24in_5Flst = _lst;
goto _tailrecursive;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_value = tmpMeta[1];
tmpMeta[1] = mmc_mk_cons(_value, _lst);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _lst;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_lst = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _lst;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_map(threadData_t *threadData, modelica_metatype _inTree, modelica_fnptr _inFunc)
{
modelica_metatype _outTree = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outTree = _inTree;
{
modelica_metatype tmp3_1;
tmp3_1 = _outTree;
{
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
modelica_metatype _new_value = NULL;
modelica_metatype _new_branch = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_new_branch = omc_OperatorOverloading_AvlTreePathPathEnv_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))), ((modelica_fnptr) _inFunc));
if((!referenceEq(_new_branch, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))))))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[5] = _new_branch;
_outTree = tmpMeta[1];
}
_new_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value);
if((!referenceEq(_value, _new_value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _new_value;
_outTree = tmpMeta[1];
}
_new_branch = omc_OperatorOverloading_AvlTreePathPathEnv_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))), ((modelica_fnptr) _inFunc));
if((!referenceEq(_new_branch, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))))))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[6] = _new_branch;
_outTree = tmpMeta[1];
}
tmpMeta[0] = _outTree;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_new_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value);
if((!referenceEq(_value, _new_value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(4));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 4*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _new_value;
_outTree = tmpMeta[1];
}
tmpMeta[0] = _outTree;
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _inTree;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outTree = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outTree;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_mapFold(threadData_t *threadData, modelica_metatype _inTree, modelica_fnptr _inFunc, modelica_metatype _inStartValue, modelica_metatype *out_outResult)
{
modelica_metatype _outTree = NULL;
modelica_metatype _outResult = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outTree = _inTree;
_outResult = _inStartValue;
{
modelica_metatype tmp3_1;
tmp3_1 = _outTree;
{
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
modelica_metatype _new_value = NULL;
modelica_metatype _new_branch = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_new_branch = omc_OperatorOverloading_AvlTreePathPathEnv_mapFold(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))), ((modelica_fnptr) _inFunc), _outResult ,&_outResult);
if((!referenceEq(_new_branch, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 5))))))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[5] = _new_branch;
_outTree = tmpMeta[1];
}
_new_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value, _outResult ,&_outResult) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value, _outResult ,&_outResult);
if((!referenceEq(_value, _new_value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _new_value;
_outTree = tmpMeta[1];
}
_new_branch = omc_OperatorOverloading_AvlTreePathPathEnv_mapFold(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))), ((modelica_fnptr) _inFunc), _outResult ,&_outResult);
if((!referenceEq(_new_branch, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outTree), 6))))))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(7));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 7*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[6] = _new_branch;
_outTree = tmpMeta[1];
}
tmpMeta[0] = _outTree;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_new_value = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 2))), _key, _value, _outResult ,&_outResult) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inFunc), 1)))) (threadData, _key, _value, _outResult ,&_outResult);
if((!referenceEq(_value, _new_value)))
{
tmpMeta[1] = MMC_TAGPTR(mmc_alloc_words(4));
memcpy(MMC_UNTAGPTR(tmpMeta[1]), MMC_UNTAGPTR(_outTree), 4*sizeof(modelica_metatype));
((modelica_metatype*)MMC_UNTAGPTR(tmpMeta[1]))[3] = _new_value;
_outTree = tmpMeta[1];
}
tmpMeta[0] = _outTree;
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _inTree;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outTree = tmpMeta[0];
_return: OMC_LABEL_UNUSED
if (out_outResult) { *out_outResult = _outResult; }
return _outTree;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_new(threadData_t *threadData)
{
modelica_metatype _outTree = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outTree = _OMC_LIT53;
_return: OMC_LABEL_UNUSED
return _outTree;
}
DLLExport
modelica_string omc_OperatorOverloading_AvlTreePathPathEnv_printNodeStr(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_string _outString = NULL;
modelica_string tmp1 = 0;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inNode;
{
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,5) == 0) goto tmp3_end;
tmpMeta[0] = stringAppend(_OMC_LIT43,omc_OperatorOverloading_AvlTreePathPathEnv_keyStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 2)))));
tmpMeta[1] = stringAppend(tmpMeta[0],_OMC_LIT33);
tmpMeta[2] = stringAppend(tmpMeta[1],omc_OperatorOverloading_AvlTreePathPathEnv_valueStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 3)))));
tmpMeta[3] = stringAppend(tmpMeta[2],_OMC_LIT44);
tmp1 = tmpMeta[3];
goto tmp3_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,2) == 0) goto tmp3_end;
tmpMeta[0] = stringAppend(_OMC_LIT43,omc_OperatorOverloading_AvlTreePathPathEnv_keyStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 2)))));
tmpMeta[1] = stringAppend(tmpMeta[0],_OMC_LIT33);
tmpMeta[2] = stringAppend(tmpMeta[1],omc_OperatorOverloading_AvlTreePathPathEnv_valueStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inNode), 3)))));
tmpMeta[3] = stringAppend(tmpMeta[2],_OMC_LIT44);
tmp1 = tmpMeta[3];
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outString = tmp1;
_return: OMC_LABEL_UNUSED
return _outString;
}
DLLExport
modelica_string omc_OperatorOverloading_AvlTreePathPathEnv_printTreeStr(threadData_t *threadData, modelica_metatype _inTree)
{
modelica_string _outString = NULL;
modelica_metatype _left = NULL;
modelica_metatype _right = NULL;
modelica_string tmp1 = 0;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inTree;
{
int tmp4;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
case 5: {
tmp1 = _OMC_LIT45;
goto tmp3_done;
}
case 4: {
tmp1 = omc_OperatorOverloading_AvlTreePathPathEnv_printNodeStr(threadData, _inTree);
goto tmp3_done;
}
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,5) == 0) goto tmp3_end;
tmpMeta[0] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 6));
_left = tmpMeta[0];
_right = tmpMeta[1];
tmpMeta[0] = stringAppend(omc_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2(threadData, _left, 1, _OMC_LIT46),omc_OperatorOverloading_AvlTreePathPathEnv_printNodeStr(threadData, _inTree));
tmpMeta[1] = stringAppend(tmpMeta[0],_OMC_LIT47);
tmpMeta[2] = stringAppend(tmpMeta[1],omc_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2(threadData, _right, 0, _OMC_LIT46));
tmp1 = tmpMeta[2];
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outString = tmp1;
_return: OMC_LABEL_UNUSED
return _outString;
}
PROTECTED_FUNCTION_STATIC modelica_string omc_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2(threadData_t *threadData, modelica_metatype _inTree, modelica_boolean _isLeft, modelica_string _inIndent)
{
modelica_string _outString = NULL;
modelica_metatype _val_node = NULL;
modelica_metatype _left = NULL;
modelica_metatype _right = NULL;
modelica_string _left_str = NULL;
modelica_string _right_str = NULL;
modelica_string tmp1 = 0;
modelica_metatype tmpMeta[8] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;
tmp4_1 = _inTree;
{
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,5) == 0) goto tmp3_end;
tmpMeta[0] = stringAppend(_inIndent,(_isLeft?_OMC_LIT48:_OMC_LIT49));
tmpMeta[1] = stringAppend(omc_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 5))), 1, tmpMeta[0]),_inIndent);
tmpMeta[2] = stringAppend(tmpMeta[1],(_isLeft?_OMC_LIT50:_OMC_LIT51));
tmpMeta[3] = stringAppend(tmpMeta[2],_OMC_LIT52);
tmpMeta[4] = stringAppend(tmpMeta[3],omc_OperatorOverloading_AvlTreePathPathEnv_printNodeStr(threadData, _inTree));
tmpMeta[5] = stringAppend(tmpMeta[4],_OMC_LIT47);
tmpMeta[6] = stringAppend(_inIndent,(_isLeft?_OMC_LIT49:_OMC_LIT48));
tmpMeta[7] = stringAppend(tmpMeta[5],omc_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 6))), 0, tmpMeta[6]));
tmp1 = tmpMeta[7];
goto tmp3_done;
}
case 1: {
tmp1 = _OMC_LIT46;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outString = tmp1;
_return: OMC_LABEL_UNUSED
return _outString;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype _isLeft, modelica_metatype _inIndent)
{
modelica_integer tmp1;
modelica_string _outString = NULL;
tmp1 = mmc_unbox_integer(_isLeft);
_outString = omc_OperatorOverloading_AvlTreePathPathEnv_printTreeStr2(threadData, _inTree, tmp1, _inIndent);
return _outString;
}
PROTECTED_FUNCTION_STATIC modelica_boolean omc_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty(threadData_t *threadData, modelica_metatype _t1, modelica_metatype _t2)
{
modelica_boolean _b;
modelica_boolean tmp1 = 0;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;modelica_metatype tmp4_2;
tmp4_1 = _t1;
tmp4_2 = _t2;
{
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,0) == 0) goto tmp3_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,0) == 0) goto tmp3_end;
tmp1 = 1;
goto tmp3_done;
}
case 1: {
tmp1 = referenceEq(_t1, _t2);
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_b = tmp1;
_return: OMC_LABEL_UNUSED
return _b;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty(threadData_t *threadData, modelica_metatype _t1, modelica_metatype _t2)
{
modelica_boolean _b;
modelica_metatype out_b;
_b = omc_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty(threadData, _t1, _t2);
out_b = mmc_mk_icon(_b);
return out_b;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_rotateLeft(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_metatype _outNode = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outNode = _inNode;
{
modelica_metatype tmp3_1;
tmp3_1 = _outNode;
{
modelica_metatype _node = NULL;
modelica_metatype _child = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 3; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 6));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],0,5) == 0) goto tmp2_end;
_child = tmpMeta[1];
_node = omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData, _outNode, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outNode), 5))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_child), 5))));
tmpMeta[0] = omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData, _child, _node, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_child), 6))));
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 6));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],1,2) == 0) goto tmp2_end;
_child = tmpMeta[1];
_node = omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData, _outNode, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outNode), 5))), _OMC_LIT53);
tmpMeta[0] = omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData, _child, _node, _OMC_LIT53);
goto tmp2_done;
}
case 2: {
tmpMeta[0] = _inNode;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outNode = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outNode;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_rotateRight(threadData_t *threadData, modelica_metatype _inNode)
{
modelica_metatype _outNode = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outNode = _inNode;
{
modelica_metatype tmp3_1;
tmp3_1 = _outNode;
{
modelica_metatype _node = NULL;
modelica_metatype _child = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 3; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 5));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],0,5) == 0) goto tmp2_end;
_child = tmpMeta[1];
_node = omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData, _outNode, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_child), 6))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outNode), 6))));
tmpMeta[0] = omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData, _child, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_child), 5))), _node);
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 5));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],1,2) == 0) goto tmp2_end;
_child = tmpMeta[1];
_node = omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData, _outNode, _OMC_LIT53, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_outNode), 6))));
tmpMeta[0] = omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData, _child, _OMC_LIT53, _node);
goto tmp2_done;
}
case 2: {
tmpMeta[0] = _inNode;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outNode = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outNode;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_setTreeLeftRight(threadData_t *threadData, modelica_metatype _orig, modelica_metatype _left, modelica_metatype _right)
{
modelica_metatype _res = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;modelica_metatype tmp3_2;modelica_metatype tmp3_3;
tmp3_1 = _orig;
tmp3_2 = _left;
tmp3_3 = _right;
{
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 4; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_2,2,0) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_3,2,0) == 0) goto tmp2_end;
tmpMeta[1] = mmc_mk_box3(4, &OperatorOverloading_AvlTreePathPathEnv_Tree_LEAF__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 3))));
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_2,2,0) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_3,2,0) == 0) goto tmp2_end;
tmpMeta[0] = _orig;
goto tmp2_done;
}
case 2: {
modelica_boolean tmp5;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmp5 = (modelica_boolean)(omc_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 5))), _left) && omc_OperatorOverloading_AvlTreePathPathEnv_referenceEqOrEmpty(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 6))), _right));
if(tmp5)
{
tmpMeta[2] = _orig;
}
else
{
tmpMeta[1] = mmc_mk_box6(3, &OperatorOverloading_AvlTreePathPathEnv_Tree_NODE__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 3))), mmc_mk_integer(((modelica_integer) 1) + modelica_integer_max((modelica_integer)(omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData, _left)),(modelica_integer)(omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData, _right)))), _left, _right);
tmpMeta[2] = tmpMeta[1];
}
tmpMeta[0] = tmpMeta[2];
goto tmp2_done;
}
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = mmc_mk_box6(3, &OperatorOverloading_AvlTreePathPathEnv_Tree_NODE__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_orig), 3))), mmc_mk_integer(((modelica_integer) 1) + modelica_integer_max((modelica_integer)(omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData, _left)),(modelica_integer)(omc_OperatorOverloading_AvlTreePathPathEnv_height(threadData, _right)))), _left, _right);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_res = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _res;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_toList(threadData_t *threadData, modelica_metatype _inTree, modelica_metatype __omcQ_24in_5Flst)
{
modelica_metatype _lst = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_lst = __omcQ_24in_5Flst;
{
modelica_metatype tmp3_1;
tmp3_1 = _inTree;
{
modelica_metatype _key = NULL;
modelica_metatype _value = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 3: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,0,5) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
_lst = omc_OperatorOverloading_AvlTreePathPathEnv_toList(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 6))), _lst);
tmpMeta[2] = mmc_mk_box2(0, _key, _value);
tmpMeta[1] = mmc_mk_cons(tmpMeta[2], _lst);
_lst = tmpMeta[1];
_inTree = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inTree), 5)));
__omcQ_24in_5Flst = _lst;
goto _tailrecursive;
goto tmp2_done;
}
case 4: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,1,2) == 0) goto tmp2_end;
tmpMeta[1] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
tmpMeta[2] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
_key = tmpMeta[1];
_value = tmpMeta[2];
tmpMeta[2] = mmc_mk_box2(0, _key, _value);
tmpMeta[1] = mmc_mk_cons(tmpMeta[2], _lst);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
tmpMeta[0] = _lst;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_lst = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _lst;
}
DLLExport
modelica_metatype omc_OperatorOverloading_AvlTreePathPathEnv_update(threadData_t *threadData, modelica_metatype _tree, modelica_metatype _key, modelica_metatype _value)
{
modelica_metatype _outTree = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outTree = omc_OperatorOverloading_AvlTreePathPathEnv_add(threadData, _tree, _key, _value, boxvar_OperatorOverloading_AvlTreePathPathEnv_addConflictReplace);
_return: OMC_LABEL_UNUSED
return _outTree;
}
DLLExport
modelica_string omc_OperatorOverloading_AvlTreePathPathEnv_valueStr(threadData_t *threadData, modelica_metatype _inValue)
{
modelica_string _outString = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_outString = omc_AbsynUtil_pathString(threadData, _inValue, _OMC_LIT42, 1, 0);
_return: OMC_LABEL_UNUSED
return _outString;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_getOperatorFuncsOrEmpty(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _tys, modelica_string _opName, modelica_metatype _info, modelica_metatype _acc, modelica_metatype *out_funcs)
{
modelica_metatype _cache = NULL;
modelica_metatype _funcs = NULL;
modelica_metatype tmpMeta[5] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
volatile modelica_metatype tmp4_1;
tmp4_1 = _tys;
{
modelica_metatype _ty = NULL;
modelica_metatype _rest = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp3_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp4 < 3; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (listEmpty(tmp4_1)) goto tmp3_end;
tmpMeta[2] = MMC_CAR(tmp4_1);
tmpMeta[3] = MMC_CDR(tmp4_1);
_ty = tmpMeta[2];
_rest = tmpMeta[3];
_cache = omc_OperatorOverloading_getOperatorFuncsOrEmptySingleTy(threadData, _inCache, _env, _ty, _opName, _info ,&_funcs);
tmpMeta[0+0] = omc_OperatorOverloading_getOperatorFuncsOrEmpty(threadData, _cache, _env, _rest, _opName, _info, listAppend(_funcs, _acc), &tmpMeta[0+1]);
goto tmp3_done;
}
case 1: {
if (listEmpty(tmp4_1)) goto tmp3_end;
tmpMeta[2] = MMC_CAR(tmp4_1);
tmpMeta[3] = MMC_CDR(tmp4_1);
_rest = tmpMeta[3];
tmp4 += 1;
tmpMeta[0+0] = omc_OperatorOverloading_getOperatorFuncsOrEmpty(threadData, _inCache, _env, _rest, _opName, _info, _acc, &tmpMeta[0+1]);
goto tmp3_done;
}
case 2: {
if (!listEmpty(tmp4_1)) goto tmp3_end;
tmpMeta[3] = omc_Static_instantiateDaeFunctionFromTypes(threadData, _inCache, _env, _acc, 0, mmc_mk_none(), 1, _OMC_LIT54, &tmpMeta[2]);
_cache = tmpMeta[3];
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],0,0) == 0) goto goto_2;
tmpMeta[2] = mmc_mk_box3(17, &DAE_Type_T__TUPLE__desc, _acc, mmc_mk_none());
tmpMeta[3] = omc_Types_traverseType(threadData, tmpMeta[2], mmc_mk_integer(((modelica_integer) -1)), boxvar_Types_makeExpDimensionsUnknown, NULL);
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[3],14,2) == 0) goto goto_2;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 2));
_funcs = tmpMeta[4];
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = _funcs;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
tmp3_done:
(void)tmp4;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp3_done2;
goto_2:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp4 < 3) {
goto tmp3_top;
}
MMC_THROW_INTERNAL();
tmp3_done2:;
}
}
_cache = tmpMeta[0+0];
_funcs = tmpMeta[0+1];
_return: OMC_LABEL_UNUSED
if (out_funcs) { *out_funcs = _funcs; }
return _cache;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_operatorReturnUnary(threadData_t *threadData, modelica_metatype _inOperator, modelica_metatype _inArgTypes, modelica_metatype _inReturnTypes)
{
modelica_metatype _outOperators = NULL;
modelica_metatype tmpMeta[5] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;modelica_metatype tmp3_2;modelica_metatype tmp3_3;
tmp3_1 = _inOperator;
tmp3_2 = _inArgTypes;
tmp3_3 = _inReturnTypes;
{
modelica_metatype _rest = NULL;
modelica_metatype _t = NULL;
modelica_metatype _op = NULL;
modelica_metatype _l = NULL;
modelica_metatype _re = NULL;
modelica_metatype _lr = NULL;
modelica_metatype _rer = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (!listEmpty(tmp3_2)) goto tmp2_end;
if (!listEmpty(tmp3_3)) goto tmp2_end;
tmpMeta[1] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 1: {
if (listEmpty(tmp3_2)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_2);
tmpMeta[2] = MMC_CDR(tmp3_2);
if (listEmpty(tmp3_3)) goto tmp2_end;
tmpMeta[3] = MMC_CAR(tmp3_3);
tmpMeta[4] = MMC_CDR(tmp3_3);
_l = tmpMeta[1];
_lr = tmpMeta[2];
_re = tmpMeta[3];
_rer = tmpMeta[4];
_op = tmp3_1;
_rest = omc_OperatorOverloading_operatorReturnUnary(threadData, _op, _lr, _rer);
tmpMeta[1] = mmc_mk_cons(_l, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[2] = mmc_mk_box3(0, _op, tmpMeta[1], _re);
_t = tmpMeta[2];
tmpMeta[1] = mmc_mk_cons(_t, _rest);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outOperators = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outOperators;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_operatorReturn(threadData_t *threadData, modelica_metatype _inOperator, modelica_metatype _inLhsTypes, modelica_metatype _inRhsTypes, modelica_metatype _inReturnTypes)
{
modelica_metatype _outOperators = NULL;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype __omcQ_24tmpVar1;
modelica_metatype* tmp1;
modelica_metatype __omcQ_24tmpVar0;
int tmp2;
modelica_metatype _re_loopVar = 0;
modelica_metatype _re;
modelica_metatype _r_loopVar = 0;
modelica_metatype _r;
modelica_metatype _l_loopVar = 0;
modelica_metatype _l;
_re_loopVar = _inReturnTypes;
_r_loopVar = _inRhsTypes;
_l_loopVar = _inLhsTypes;
tmpMeta[1] = MMC_REFSTRUCTLIT(mmc_nil);
__omcQ_24tmpVar1 = tmpMeta[1];
tmp1 = &__omcQ_24tmpVar1;
while(1) {
tmp2 = 3;
if (!listEmpty(_re_loopVar)) {
_re = MMC_CAR(_re_loopVar);
_re_loopVar = MMC_CDR(_re_loopVar);
tmp2--;
}if (!listEmpty(_r_loopVar)) {
_r = MMC_CAR(_r_loopVar);
_r_loopVar = MMC_CDR(_r_loopVar);
tmp2--;
}if (!listEmpty(_l_loopVar)) {
_l = MMC_CAR(_l_loopVar);
_l_loopVar = MMC_CDR(_l_loopVar);
tmp2--;
}
if (tmp2 == 0) {
tmpMeta[2] = mmc_mk_cons(_l, mmc_mk_cons(_r, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[3] = mmc_mk_box3(0, _inOperator, tmpMeta[2], _re);
__omcQ_24tmpVar0 = tmpMeta[3];
*tmp1 = mmc_mk_cons(__omcQ_24tmpVar0,0);
tmp1 = &MMC_CDR(*tmp1);
} else if (tmp2 == 3) {
break;
} else {
MMC_THROW_INTERNAL();
}
}
*tmp1 = mmc_mk_nil();
tmpMeta[0] = __omcQ_24tmpVar1;
}
_outOperators = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outOperators;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_buildOperatorTypes(threadData_t *threadData, modelica_metatype _inTypes, modelica_metatype _inPath)
{
modelica_metatype _outOperatorTypes = NULL;
modelica_metatype tmpMeta[5] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;modelica_metatype tmp3_2;
tmp3_1 = _inTypes;
tmp3_2 = _inPath;
{
modelica_metatype _argtypes = NULL;
modelica_metatype _tps = NULL;
modelica_metatype _rest = NULL;
modelica_metatype _args = NULL;
modelica_metatype _tp = NULL;
modelica_metatype _funcname = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (!listEmpty(tmp3_1)) goto tmp2_end;
tmpMeta[1] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
case 1: {
if (listEmpty(tmp3_1)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_1);
tmpMeta[2] = MMC_CDR(tmp3_1);
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],11,4) == 0) goto tmp2_end;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 3));
_args = tmpMeta[3];
_tp = tmpMeta[4];
_tps = tmpMeta[2];
_funcname = tmp3_2;
_argtypes = omc_List_map(threadData, _args, boxvar_Types_funcArgType);
_rest = omc_OperatorOverloading_buildOperatorTypes(threadData, _tps, _funcname);
tmpMeta[2] = mmc_mk_box2(34, &DAE_Operator_USERDEFINED__desc, _funcname);
tmpMeta[3] = mmc_mk_box3(0, tmpMeta[2], _argtypes, _tp);
tmpMeta[1] = mmc_mk_cons(tmpMeta[3], _rest);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outOperatorTypes = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outOperatorTypes;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_makeEnumOperator(threadData_t *threadData, modelica_metatype _inOp, modelica_metatype _inType1, modelica_metatype _inType2)
{
modelica_metatype _outOp = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
volatile modelica_metatype tmp3_1;volatile modelica_metatype tmp3_2;
tmp3_1 = _inType1;
tmp3_2 = _inType2;
{
modelica_metatype _op_ty = NULL;
modelica_metatype _op = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp2_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp3 < 4; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,5,5) == 0) goto tmp2_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp3_2,5,5) == 0) goto tmp2_end;
_op_ty = omc_Types_simplifyType(threadData, _inType1);
_op = omc_Expression_setOpType(threadData, _inOp, _op_ty);
tmpMeta[1] = mmc_mk_cons(_inType1, mmc_mk_cons(_inType2, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[2] = mmc_mk_box3(0, _op, tmpMeta[1], _OMC_LIT55);
tmpMeta[0] = tmpMeta[2];
goto tmp2_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,5,5) == 0) goto tmp2_end;
_op_ty = omc_Types_simplifyType(threadData, _inType1);
_op = omc_Expression_setOpType(threadData, _inOp, _op_ty);
tmpMeta[1] = mmc_mk_cons(_inType1, mmc_mk_cons(_inType1, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[2] = mmc_mk_box3(0, _op, tmpMeta[1], _OMC_LIT55);
tmpMeta[0] = tmpMeta[2];
goto tmp2_done;
}
case 2: {
if (mmc__uniontype__metarecord__typedef__equal(tmp3_2,5,5) == 0) goto tmp2_end;
_op_ty = omc_Types_simplifyType(threadData, _inType2);
_op = omc_Expression_setOpType(threadData, _inOp, _op_ty);
tmpMeta[1] = mmc_mk_cons(_inType2, mmc_mk_cons(_inType2, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[2] = mmc_mk_box3(0, _op, tmpMeta[1], _OMC_LIT55);
tmpMeta[0] = tmpMeta[2];
goto tmp2_done;
}
case 3: {
tmpMeta[1] = mmc_mk_box3(0, _inOp, _OMC_LIT59, _OMC_LIT55);
tmpMeta[0] = tmpMeta[1];
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
tmp2_done:
(void)tmp3;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp2_done2;
goto_1:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp3 < 4) {
goto tmp2_top;
}
MMC_THROW_INTERNAL();
tmp2_done2:;
}
}
_outOp = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outOp;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_operatorsUnary(threadData_t *threadData, modelica_metatype _op)
{
modelica_metatype _ops = NULL;
modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;
tmp3_1 = _op;
{
modelica_metatype _intarrs = NULL;
modelica_metatype _realarrs = NULL;
modelica_metatype _boolarrs = NULL;
modelica_metatype _scalars = NULL;
int tmp3;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp3_1))) {
case 9: {
_scalars = _OMC_LIT69;
_intarrs = omc_OperatorOverloading_operatorReturnUnary(threadData, _OMC_LIT73, _OMC_LIT90, _OMC_LIT90);
_realarrs = omc_OperatorOverloading_operatorReturnUnary(threadData, _OMC_LIT92, _OMC_LIT109, _OMC_LIT109);
tmpMeta[1] = mmc_mk_cons(_scalars, mmc_mk_cons(_intarrs, mmc_mk_cons(_realarrs, MMC_REFSTRUCTLIT(mmc_nil))));
tmpMeta[0] = omc_List_flatten(threadData, tmpMeta[1]);
goto tmp2_done;
}
case 19: {
_scalars = _OMC_LIT113;
_boolarrs = omc_OperatorOverloading_operatorReturnUnary(threadData, _OMC_LIT110, _OMC_LIT131, _OMC_LIT131);
tmpMeta[1] = mmc_mk_cons(_scalars, mmc_mk_cons(_boolarrs, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[0] = omc_List_flatten(threadData, tmpMeta[1]);
goto tmp2_done;
}
default:
tmp2_default: OMC_LABEL_UNUSED; {
modelica_boolean tmp4;
tmp4 = omc_Flags_isSet(threadData, _OMC_LIT135);
if (1 != tmp4) goto goto_1;
tmpMeta[1] = stringAppend(_OMC_LIT136,omc_Dump_opSymbol(threadData, _op));
omc_Debug_traceln(threadData, tmpMeta[1]);
goto goto_1;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_ops = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _ops;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_operatorsBinary(threadData_t *threadData, modelica_metatype _inOperator, modelica_metatype __omcQ_24in_5Ft1, modelica_metatype __omcQ_24in_5Fe1, modelica_metatype __omcQ_24in_5Ft2, modelica_metatype __omcQ_24in_5Fe2, modelica_metatype *out_t1, modelica_metatype *out_e1, modelica_metatype *out_t2, modelica_metatype *out_e2, modelica_metatype *out_oty1, modelica_metatype *out_oe1, modelica_metatype *out_oty2, modelica_metatype *out_oe2)
{
modelica_metatype _ops = NULL;
modelica_metatype _t1 = NULL;
modelica_metatype _e1 = NULL;
modelica_metatype _t2 = NULL;
modelica_metatype _e2 = NULL;
modelica_metatype _oty1 = NULL;
modelica_metatype _oe1 = NULL;
modelica_metatype _oty2 = NULL;
modelica_metatype _oe2 = NULL;
modelica_metatype _t = NULL;
modelica_metatype _e = NULL;
modelica_metatype _op = NULL;
modelica_boolean _ia1;
modelica_boolean _ia2;
modelica_metatype tmpMeta[5] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_t1 = __omcQ_24in_5Ft1;
_e1 = __omcQ_24in_5Fe1;
_t2 = __omcQ_24in_5Ft2;
_e2 = __omcQ_24in_5Fe2;
_oty1 = _t1;
_oe1 = _e1;
_oty2 = _t2;
_oe2 = _e2;
_op = _inOperator;
_ia1 = omc_Types_isArray(threadData, _t1);
_ia2 = omc_Types_isArray(threadData, _t2);
if((_ia2 && (!_ia1)))
{
{
modelica_metatype tmp4_1;
tmp4_1 = _op;
{
int tmp4;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
case 10: {
tmpMeta[0+0] = _e2;
tmpMeta[0+1] = _e1;
tmpMeta[0+2] = _t2;
tmpMeta[0+3] = _t1;
goto tmp3_done;
}
case 5: {
tmpMeta[0+0] = _e2;
tmpMeta[0+1] = _e1;
tmpMeta[0+2] = _t2;
tmpMeta[0+3] = _t1;
goto tmp3_done;
}
case 12: {
tmpMeta[0+0] = _e2;
tmpMeta[0+1] = _e1;
tmpMeta[0+2] = _t2;
tmpMeta[0+3] = _t1;
goto tmp3_done;
}
default:
tmp3_default: OMC_LABEL_UNUSED; {
tmpMeta[0+0] = _e1;
tmpMeta[0+1] = _e2;
tmpMeta[0+2] = _t1;
tmpMeta[0+3] = _t2;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_e1 = tmpMeta[0+0];
_e2 = tmpMeta[0+1];
_t1 = tmpMeta[0+2];
_t2 = tmpMeta[0+3];
}
else
{
if((_ia1 && (!_ia2)))
{
{
modelica_metatype tmp8_1;
tmp8_1 = _op;
{
volatile mmc_switch_type tmp8;
int tmp9;
tmp8 = 0;
for (; tmp8 < 2; tmp8++) {
switch (MMC_SWITCH_CAST(tmp8)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp8_1,8,0) == 0) goto tmp7_end;
tmpMeta[0+0] = _OMC_LIT137;
tmpMeta[0+1] = omc_Expression_negate(threadData, _e2);
goto tmp7_done;
}
case 1: {
tmpMeta[0+0] = _op;
tmpMeta[0+1] = _e2;
goto tmp7_done;
}
}
goto tmp7_end;
tmp7_end: ;
}
goto goto_6;
goto_6:;
MMC_THROW_INTERNAL();
goto tmp7_done;
tmp7_done:;
}
}
_op = tmpMeta[0+0];
_e2 = tmpMeta[0+1];
}
}
{
{
volatile mmc_switch_type tmp12;
int tmp13;
tmp12 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp11_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp12 < 2; tmp12++) {
switch (MMC_SWITCH_CAST(tmp12)) {
case 0: {
{
modelica_metatype tmp16_1;
tmp16_1 = _op;
{
modelica_metatype _realarrs = NULL;
modelica_metatype _scalars = NULL;
modelica_metatype _realscalararrs = NULL;
modelica_metatype _realarrsscalar = NULL;
modelica_metatype _enum_op = NULL;
int tmp16;
{
switch (MMC_SWITCH_CAST(valueConstructor(tmp16_1))) {
case 3: {
tmpMeta[0] = _OMC_LIT240;
goto tmp15_done;
}
case 10: {
tmpMeta[0] = _OMC_LIT279;
goto tmp15_done;
}
case 4: {
tmpMeta[0] = _OMC_LIT323;
goto tmp15_done;
}
case 11: {
tmpMeta[0] = _OMC_LIT362;
goto tmp15_done;
}
case 5: {
tmpMeta[0] = _OMC_LIT403;
goto tmp15_done;
}
case 12: {
tmpMeta[0] = _OMC_LIT424;
goto tmp15_done;
}
case 6: {
tmpMeta[0] = _OMC_LIT446;
goto tmp15_done;
}
case 13: {
tmpMeta[0] = _OMC_LIT467;
goto tmp15_done;
}
case 7: {
tmpMeta[0] = _OMC_LIT474;
goto tmp15_done;
}
case 14: {
{
modelica_metatype __omcQ_24tmpVar1;
modelica_metatype* tmp17;
modelica_metatype __omcQ_24tmpVar0;
int tmp18;
modelica_metatype _re_loopVar = 0;
modelica_metatype _re;
modelica_metatype _r_loopVar = 0;
modelica_metatype _r;
modelica_metatype _l_loopVar = 0;
modelica_metatype _l;
_re_loopVar = _OMC_LIT109;
_r_loopVar = _OMC_LIT109;
_l_loopVar = _OMC_LIT109;
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
__omcQ_24tmpVar1 = tmpMeta[2];
tmp17 = &__omcQ_24tmpVar1;
while(1) {
tmp18 = 3;
if (!listEmpty(_re_loopVar)) {
_re = MMC_CAR(_re_loopVar);
_re_loopVar = MMC_CDR(_re_loopVar);
tmp18--;
}if (!listEmpty(_r_loopVar)) {
_r = MMC_CAR(_r_loopVar);
_r_loopVar = MMC_CDR(_r_loopVar);
tmp18--;
}if (!listEmpty(_l_loopVar)) {
_l = MMC_CAR(_l_loopVar);
_l_loopVar = MMC_CDR(_l_loopVar);
tmp18--;
}
if (tmp18 == 0) {
tmpMeta[3] = mmc_mk_cons(_l, mmc_mk_cons(_r, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[4] = mmc_mk_box3(0, _OMC_LIT475, tmpMeta[3], _re);
__omcQ_24tmpVar0 = tmpMeta[4];
*tmp17 = mmc_mk_cons(__omcQ_24tmpVar0,0);
tmp17 = &MMC_CDR(*tmp17);
} else if (tmp18 == 3) {
break;
} else {
goto goto_14;
}
}
*tmp17 = mmc_mk_nil();
tmpMeta[1] = __omcQ_24tmpVar1;
}
_realarrs = tmpMeta[1];
_scalars = _OMC_LIT476;
{
modelica_metatype __omcQ_24tmpVar1;
modelica_metatype* tmp19;
modelica_metatype __omcQ_24tmpVar0;
int tmp20;
modelica_metatype _re_loopVar = 0;
modelica_metatype _re;
modelica_metatype _r_loopVar = 0;
modelica_metatype _r;
modelica_metatype _l_loopVar = 0;
modelica_metatype _l;
_re_loopVar = _OMC_LIT109;
_r_loopVar = _OMC_LIT109;
_l_loopVar = _OMC_LIT484;
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
__omcQ_24tmpVar1 = tmpMeta[2];
tmp19 = &__omcQ_24tmpVar1;
while(1) {
tmp20 = 3;
if (!listEmpty(_re_loopVar)) {
_re = MMC_CAR(_re_loopVar);
_re_loopVar = MMC_CDR(_re_loopVar);
tmp20--;
}if (!listEmpty(_r_loopVar)) {
_r = MMC_CAR(_r_loopVar);
_r_loopVar = MMC_CDR(_r_loopVar);
tmp20--;
}if (!listEmpty(_l_loopVar)) {
_l = MMC_CAR(_l_loopVar);
_l_loopVar = MMC_CDR(_l_loopVar);
tmp20--;
}
if (tmp20 == 0) {
tmpMeta[3] = mmc_mk_cons(_l, mmc_mk_cons(_r, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[4] = mmc_mk_box3(0, _OMC_LIT477, tmpMeta[3], _re);
__omcQ_24tmpVar0 = tmpMeta[4];
*tmp19 = mmc_mk_cons(__omcQ_24tmpVar0,0);
tmp19 = &MMC_CDR(*tmp19);
} else if (tmp20 == 3) {
break;
} else {
goto goto_14;
}
}
*tmp19 = mmc_mk_nil();
tmpMeta[1] = __omcQ_24tmpVar1;
}
_realscalararrs = tmpMeta[1];
{
modelica_metatype __omcQ_24tmpVar1;
modelica_metatype* tmp21;
modelica_metatype __omcQ_24tmpVar0;
int tmp22;
modelica_metatype _re_loopVar = 0;
modelica_metatype _re;
modelica_metatype _r_loopVar = 0;
modelica_metatype _r;
modelica_metatype _l_loopVar = 0;
modelica_metatype _l;
_re_loopVar = _OMC_LIT109;
_r_loopVar = _OMC_LIT484;
_l_loopVar = _OMC_LIT109;
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
__omcQ_24tmpVar1 = tmpMeta[2];
tmp21 = &__omcQ_24tmpVar1;
while(1) {
tmp22 = 3;
if (!listEmpty(_re_loopVar)) {
_re = MMC_CAR(_re_loopVar);
_re_loopVar = MMC_CDR(_re_loopVar);
tmp22--;
}if (!listEmpty(_r_loopVar)) {
_r = MMC_CAR(_r_loopVar);
_r_loopVar = MMC_CDR(_r_loopVar);
tmp22--;
}if (!listEmpty(_l_loopVar)) {
_l = MMC_CAR(_l_loopVar);
_l_loopVar = MMC_CDR(_l_loopVar);
tmp22--;
}
if (tmp22 == 0) {
tmpMeta[3] = mmc_mk_cons(_l, mmc_mk_cons(_r, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[4] = mmc_mk_box3(0, _OMC_LIT485, tmpMeta[3], _re);
__omcQ_24tmpVar0 = tmpMeta[4];
*tmp21 = mmc_mk_cons(__omcQ_24tmpVar0,0);
tmp21 = &MMC_CDR(*tmp21);
} else if (tmp22 == 3) {
break;
} else {
goto goto_14;
}
}
*tmp21 = mmc_mk_nil();
tmpMeta[1] = __omcQ_24tmpVar1;
}
_realarrsscalar = tmpMeta[1];
tmpMeta[1] = mmc_mk_cons(_scalars, mmc_mk_cons(_realscalararrs, mmc_mk_cons(_realarrsscalar, mmc_mk_cons(_realarrs, MMC_REFSTRUCTLIT(mmc_nil)))));
tmpMeta[0] = omc_List_flatten(threadData, tmpMeta[1]);
goto tmp15_done;
}
case 17: {
tmpMeta[0] = _OMC_LIT524;
goto tmp15_done;
}
case 18: {
tmpMeta[0] = _OMC_LIT545;
goto tmp15_done;
}
case 20: {
_enum_op = omc_OperatorOverloading_makeEnumOperator(threadData, _OMC_LIT546, _t1, _t2);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT548, mmc_mk_cons(_enum_op, mmc_mk_cons(_OMC_LIT550, mmc_mk_cons(_OMC_LIT552, mmc_mk_cons(_OMC_LIT554, MMC_REFSTRUCTLIT(mmc_nil))))));
_scalars = tmpMeta[1];
tmpMeta[1] = mmc_mk_cons(_scalars, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[0] = omc_List_flatten(threadData, tmpMeta[1]);
goto tmp15_done;
}
case 21: {
_enum_op = omc_OperatorOverloading_makeEnumOperator(threadData, _OMC_LIT555, _t1, _t2);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT557, mmc_mk_cons(_enum_op, mmc_mk_cons(_OMC_LIT559, mmc_mk_cons(_OMC_LIT561, mmc_mk_cons(_OMC_LIT563, MMC_REFSTRUCTLIT(mmc_nil))))));
_scalars = tmpMeta[1];
tmpMeta[1] = mmc_mk_cons(_scalars, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[0] = omc_List_flatten(threadData, tmpMeta[1]);
goto tmp15_done;
}
case 22: {
_enum_op = omc_OperatorOverloading_makeEnumOperator(threadData, _OMC_LIT564, _t1, _t2);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT566, mmc_mk_cons(_enum_op, mmc_mk_cons(_OMC_LIT568, mmc_mk_cons(_OMC_LIT570, mmc_mk_cons(_OMC_LIT572, MMC_REFSTRUCTLIT(mmc_nil))))));
_scalars = tmpMeta[1];
tmpMeta[1] = mmc_mk_cons(_scalars, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[0] = omc_List_flatten(threadData, tmpMeta[1]);
goto tmp15_done;
}
case 23: {
_enum_op = omc_OperatorOverloading_makeEnumOperator(threadData, _OMC_LIT573, _t1, _t2);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT575, mmc_mk_cons(_enum_op, mmc_mk_cons(_OMC_LIT577, mmc_mk_cons(_OMC_LIT579, mmc_mk_cons(_OMC_LIT581, MMC_REFSTRUCTLIT(mmc_nil))))));
_scalars = tmpMeta[1];
tmpMeta[1] = mmc_mk_cons(_scalars, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[0] = omc_List_flatten(threadData, tmpMeta[1]);
goto tmp15_done;
}
case 24: {
_enum_op = omc_OperatorOverloading_makeEnumOperator(threadData, _OMC_LIT582, _t1, _t2);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT584, mmc_mk_cons(_enum_op, mmc_mk_cons(_OMC_LIT586, mmc_mk_cons(_OMC_LIT588, mmc_mk_cons(_OMC_LIT590, MMC_REFSTRUCTLIT(mmc_nil))))));
tmpMeta[0] = tmpMeta[1];
goto tmp15_done;
}
case 25: {
_enum_op = omc_OperatorOverloading_makeEnumOperator(threadData, _OMC_LIT591, _t1, _t2);
tmpMeta[1] = mmc_mk_cons(_OMC_LIT593, mmc_mk_cons(_enum_op, mmc_mk_cons(_OMC_LIT595, mmc_mk_cons(_OMC_LIT597, mmc_mk_cons(_OMC_LIT599, MMC_REFSTRUCTLIT(mmc_nil))))));
tmpMeta[0] = tmpMeta[1];
goto tmp15_done;
}
}
goto tmp15_end;
tmp15_end: ;
}
goto goto_14;
goto_14:;
goto goto_10;
goto tmp15_done;
tmp15_done:;
}
}
_ops = tmpMeta[0];
goto tmp11_done;
}
case 1: {
modelica_boolean tmp23;
tmp23 = omc_Flags_isSet(threadData, _OMC_LIT135);
if (1 != tmp23) goto goto_10;
tmpMeta[0] = stringAppend(_OMC_LIT600,omc_Dump_opSymbol(threadData, _op));
omc_Debug_traceln(threadData, tmpMeta[0]);
goto goto_10;
goto tmp11_done;
}
}
goto tmp11_end;
tmp11_end: ;
}
goto goto_10;
tmp11_done:
(void)tmp12;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp11_done2;
goto_10:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp12 < 2) {
goto tmp11_top;
}
MMC_THROW_INTERNAL();
tmp11_done2:;
}
}
;
_return: OMC_LABEL_UNUSED
if (out_t1) { *out_t1 = _t1; }
if (out_e1) { *out_e1 = _e1; }
if (out_t2) { *out_t2 = _t2; }
if (out_e2) { *out_e2 = _e2; }
if (out_oty1) { *out_oty1 = _oty1; }
if (out_oe1) { *out_oe1 = _oe1; }
if (out_oty2) { *out_oty2 = _oty2; }
if (out_oe2) { *out_oe2 = _oe2; }
return _ops;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_binaryUserdefArray2(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_boolean _isScalar1, modelica_boolean _isVector1, modelica_boolean _isMatrix1, modelica_boolean _isScalar2, modelica_boolean _isVector2, modelica_boolean _isMatrix2, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_boolean _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_exps)
{
modelica_metatype _cache = NULL;
modelica_metatype _exps = NULL;
modelica_metatype tmpMeta[7] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;modelica_boolean tmp4_2;modelica_boolean tmp4_3;modelica_boolean tmp4_4;modelica_boolean tmp4_5;modelica_boolean tmp4_6;modelica_boolean tmp4_7;modelica_metatype tmp4_8;
tmp4_1 = _inCache;
tmp4_2 = _isScalar1;
tmp4_3 = _isVector1;
tmp4_4 = _isMatrix1;
tmp4_5 = _isScalar2;
tmp4_6 = _isVector2;
tmp4_7 = _isMatrix2;
tmp4_8 = _inOper;
{
modelica_metatype _mulExp = NULL;
modelica_metatype _exp = NULL;
modelica_metatype _cr = NULL;
modelica_metatype _cr1 = NULL;
modelica_metatype _cr2 = NULL;
modelica_metatype _cr3 = NULL;
modelica_metatype _cr4 = NULL;
modelica_metatype _cr5 = NULL;
modelica_metatype _cr6 = NULL;
modelica_metatype _foldExp = NULL;
modelica_metatype _transposed = NULL;
modelica_metatype _newType1 = NULL;
modelica_metatype _newType2 = NULL;
modelica_metatype _resType = NULL;
modelica_metatype _newType1_1 = NULL;
modelica_metatype _newType2_1 = NULL;
modelica_metatype _ty = NULL;
modelica_metatype _dim1 = NULL;
modelica_metatype _dim2 = NULL;
modelica_metatype _dim1_1 = NULL;
modelica_metatype _dim1_2 = NULL;
modelica_metatype _dim2_1 = NULL;
modelica_metatype _dim2_2 = NULL;
modelica_metatype _iter = NULL;
modelica_metatype _iter1 = NULL;
modelica_metatype _iter2 = NULL;
modelica_metatype _iter3 = NULL;
modelica_metatype _iter4 = NULL;
modelica_string _foldName = NULL;
modelica_string _resultName = NULL;
modelica_string _foldName1 = NULL;
modelica_string _resultName1 = NULL;
modelica_string _foldName2 = NULL;
modelica_string _resultName2 = NULL;
modelica_string _iterName = NULL;
modelica_string _iterName1 = NULL;
modelica_string _iterName2 = NULL;
modelica_string _iterName3 = NULL;
modelica_string _iterName4 = NULL;
modelica_metatype _zeroConstructor = NULL;
modelica_metatype _zeroTypes = NULL;
modelica_metatype _op = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 7; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (0 != tmp4_2) goto tmp3_end;
if (1 != tmp4_5) goto tmp3_end;
_cache = tmp4_1;
tmpMeta[2] = _inType1;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
if (!listEmpty(tmpMeta[6])) goto goto_2;
_newType1 = tmpMeta[3];
_dim1 = tmpMeta[5];
_op = omc_Util_assoc(threadData, _inOper, _OMC_LIT620);
_iterName = omc_Util_getTempVariableIndex(threadData);
_foldName = omc_Util_getTempVariableIndex(threadData);
_resultName = omc_Util_getTempVariableIndex(threadData);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName, _newType1, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType1);
_cr = tmpMeta[4];
_cache = omc_OperatorOverloading_binaryUserdef(threadData, _cache, _env, _op, _cr, _inExp2, _newType1, _inType2, _impl, _pre, _info ,&_exp ,NULL ,&_resType);
_resType = omc_Types_liftArray(threadData, _resType, _dim1);
tmpMeta[2] = mmc_mk_box8(3, &DAE_ReductionInfo_REDUCTIONINFO__desc, _OMC_LIT622, _OMC_LIT623, _resType, mmc_mk_none(), _foldName, _resultName, mmc_mk_none());
tmpMeta[4] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName, _inExp1, mmc_mk_none(), _newType1);
tmpMeta[3] = mmc_mk_cons(tmpMeta[4], MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[5] = mmc_mk_box4(30, &DAE_Exp_REDUCTION__desc, tmpMeta[2], _exp, tmpMeta[3]);
_exp = tmpMeta[5];
tmpMeta[3] = mmc_mk_box2(0, _exp, mmc_mk_none());
tmpMeta[2] = mmc_mk_cons(tmpMeta[3], MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = tmpMeta[2];
goto tmp3_done;
}
case 1: {
if (1 != tmp4_2) goto tmp3_end;
if (0 != tmp4_5) goto tmp3_end;
_cache = tmp4_1;
_op = omc_Util_assoc(threadData, _inOper, _OMC_LIT627);
tmpMeta[2] = _inType2;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
_newType2 = tmpMeta[3];
_dim2 = tmpMeta[5];
_iterName = omc_Util_getTempVariableIndex(threadData);
_foldName = omc_Util_getTempVariableIndex(threadData);
_resultName = omc_Util_getTempVariableIndex(threadData);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName, _newType2, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType2);
_cr = tmpMeta[4];
_cache = omc_OperatorOverloading_binaryUserdef(threadData, _cache, _env, _op, _inExp1, _cr, _inType1, _newType2, _impl, _pre, _info ,&_exp ,NULL ,&_resType);
tmpMeta[2] = mmc_mk_cons(_dim2, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[3] = mmc_mk_box3(9, &DAE_Type_T__ARRAY__desc, _resType, tmpMeta[2]);
_resType = tmpMeta[3];
tmpMeta[2] = mmc_mk_box8(3, &DAE_ReductionInfo_REDUCTIONINFO__desc, _OMC_LIT622, _OMC_LIT623, _resType, mmc_mk_none(), _foldName, _resultName, mmc_mk_none());
tmpMeta[4] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName, _inExp2, mmc_mk_none(), _newType2);
tmpMeta[3] = mmc_mk_cons(tmpMeta[4], MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[5] = mmc_mk_box4(30, &DAE_Exp_REDUCTION__desc, tmpMeta[2], _exp, tmpMeta[3]);
_exp = tmpMeta[5];
tmpMeta[3] = mmc_mk_box2(0, _exp, mmc_mk_none());
tmpMeta[2] = mmc_mk_cons(tmpMeta[3], MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = tmpMeta[2];
goto tmp3_done;
}
case 2: {
if (1 != tmp4_3) goto tmp3_end;
if (1 != tmp4_6) goto tmp3_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_8,2,0) == 0) goto tmp3_end;
goto goto_2;
goto tmp3_done;
}
case 3: {
if (1 != tmp4_3) goto tmp3_end;
if (1 != tmp4_7) goto tmp3_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_8,2,0) == 0) goto tmp3_end;
goto goto_2;
goto tmp3_done;
}
case 4: {
modelica_boolean tmp6;
if (1 != tmp4_4) goto tmp3_end;
if (1 != tmp4_6) goto tmp3_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_8,2,0) == 0) goto tmp3_end;
_cache = tmp4_1;
tmpMeta[2] = _inType1;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
if (!listEmpty(tmpMeta[6])) goto goto_2;
_newType1_1 = tmpMeta[3];
_dim1_1 = tmpMeta[5];
tmpMeta[2] = _newType1_1;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
if (!listEmpty(tmpMeta[6])) goto goto_2;
_newType1 = tmpMeta[3];
_dim1_2 = tmpMeta[5];
tmpMeta[2] = _inType2;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
if (!listEmpty(tmpMeta[6])) goto goto_2;
_newType2 = tmpMeta[3];
_dim2 = tmpMeta[5];
tmp6 = omc_Expression_dimensionsEqual(threadData, _dim1_2, _dim2);
if (1 != tmp6) goto goto_2;
_foldName1 = omc_Util_getTempVariableIndex(threadData);
_resultName1 = omc_Util_getTempVariableIndex(threadData);
_foldName2 = omc_Util_getTempVariableIndex(threadData);
_resultName2 = omc_Util_getTempVariableIndex(threadData);
_iterName = omc_Util_getTempVariableIndex(threadData);
_iterName1 = omc_Util_getTempVariableIndex(threadData);
_iterName2 = omc_Util_getTempVariableIndex(threadData);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName, _newType1_1, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType1);
_cr = tmpMeta[4];
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName1, _newType1, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType1);
_cr1 = tmpMeta[4];
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName2, _newType2, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType2);
_cr2 = tmpMeta[4];
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _foldName1, _newType1, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType1);
_cr3 = tmpMeta[4];
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _resultName1, _newType2, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType2);
_cr4 = tmpMeta[4];
tmpMeta[6] = omc_OperatorOverloading_binaryUserdef(threadData, _cache, _env, _OMC_LIT628, _cr1, _cr2, _newType1, _newType2, _impl, _pre, _info, &tmpMeta[2], &tmpMeta[3], &tmpMeta[5]);
_cache = tmpMeta[6];
if (optionNone(tmpMeta[3])) goto goto_2;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 1));
_exp = tmpMeta[2];
_ty = tmpMeta[4];
_resType = tmpMeta[5];
_cache = omc_OperatorOverloading_binaryUserdef(threadData, _cache, _env, _OMC_LIT628, _cr3, _cr4, _ty, _ty, _impl, _pre, _info ,&_foldExp ,NULL ,NULL);
tmpMeta[2] = mmc_mk_cons(_ty, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[3] = MMC_REFSTRUCTLIT(mmc_nil);
_cache = omc_OperatorOverloading_getOperatorFuncsOrEmpty(threadData, _cache, _env, tmpMeta[2], _OMC_LIT40, _info, tmpMeta[3] ,&_zeroTypes);
_cache = omc_OperatorOverloading_getZeroConstructor(threadData, _cache, _env, omc_List_filterMap(threadData, _zeroTypes, boxvar_OperatorOverloading_getZeroConstructorExpression), _impl, _info ,&_zeroConstructor);
tmpMeta[2] = mmc_mk_cons(_dim1_1, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[3] = mmc_mk_box3(9, &DAE_Type_T__ARRAY__desc, _resType, tmpMeta[2]);
_resType = tmpMeta[3];
tmpMeta[2] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName1, _cr, mmc_mk_none(), _newType1);
_iter = tmpMeta[2];
tmpMeta[2] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName, _inExp1, mmc_mk_none(), _newType1);
_iter1 = tmpMeta[2];
tmpMeta[2] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName2, _inExp2, mmc_mk_none(), _newType2);
_iter2 = tmpMeta[2];
tmpMeta[2] = mmc_mk_box8(3, &DAE_ReductionInfo_REDUCTIONINFO__desc, _OMC_LIT630, _OMC_LIT631, _resType, _zeroConstructor, _foldName1, _resultName1, mmc_mk_some(_foldExp));
tmpMeta[3] = mmc_mk_cons(_iter, mmc_mk_cons(_iter2, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[4] = mmc_mk_box4(30, &DAE_Exp_REDUCTION__desc, tmpMeta[2], _exp, tmpMeta[3]);
_exp = tmpMeta[4];
tmpMeta[2] = mmc_mk_box8(3, &DAE_ReductionInfo_REDUCTIONINFO__desc, _OMC_LIT622, _OMC_LIT623, _resType, mmc_mk_none(), _foldName2, _resultName2, mmc_mk_none());
tmpMeta[3] = mmc_mk_cons(_iter1, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[4] = mmc_mk_box4(30, &DAE_Exp_REDUCTION__desc, tmpMeta[2], _exp, tmpMeta[3]);
_exp = tmpMeta[4];
tmpMeta[3] = mmc_mk_box2(0, _exp, mmc_mk_none());
tmpMeta[2] = mmc_mk_cons(tmpMeta[3], MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = tmpMeta[2];
goto tmp3_done;
}
case 5: {
modelica_boolean tmp7;
if (1 != tmp4_4) goto tmp3_end;
if (1 != tmp4_7) goto tmp3_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_8,2,0) == 0) goto tmp3_end;
_cache = tmp4_1;
tmpMeta[2] = _inType1;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
if (!listEmpty(tmpMeta[6])) goto goto_2;
_newType1_1 = tmpMeta[3];
_dim1_1 = tmpMeta[5];
tmpMeta[2] = _newType1_1;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
if (!listEmpty(tmpMeta[6])) goto goto_2;
_newType1 = tmpMeta[3];
_dim1_2 = tmpMeta[5];
tmpMeta[2] = _inType2;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
if (!listEmpty(tmpMeta[6])) goto goto_2;
_newType2_1 = tmpMeta[3];
_dim2_1 = tmpMeta[5];
tmpMeta[2] = _newType2_1;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
if (!listEmpty(tmpMeta[6])) goto goto_2;
_newType2 = tmpMeta[3];
_dim2_2 = tmpMeta[5];
tmp7 = omc_Expression_dimensionsEqual(threadData, _dim1_2, _dim2_1);
if (1 != tmp7) goto goto_2;
tmpMeta[2] = mmc_mk_cons(_inExp2, MMC_REFSTRUCTLIT(mmc_nil));
_transposed = omc_Expression_makePureBuiltinCall(threadData, _OMC_LIT632, tmpMeta[2], omc_Types_liftArray(threadData, omc_Types_liftArray(threadData, _newType2, _dim2_1), _dim2_2));
_iterName1 = omc_Util_getTempVariableIndex(threadData);
_iterName2 = omc_Util_getTempVariableIndex(threadData);
_iterName3 = omc_Util_getTempVariableIndex(threadData);
_iterName4 = omc_Util_getTempVariableIndex(threadData);
_foldName1 = omc_Util_getTempVariableIndex(threadData);
_resultName1 = omc_Util_getTempVariableIndex(threadData);
_foldName2 = omc_Util_getTempVariableIndex(threadData);
_resultName2 = omc_Util_getTempVariableIndex(threadData);
_foldName = omc_Util_getTempVariableIndex(threadData);
_resultName = omc_Util_getTempVariableIndex(threadData);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName1, _newType1_1, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType1_1);
_cr1 = tmpMeta[4];
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName2, _newType2_1, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType2_1);
_cr2 = tmpMeta[4];
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName3, _newType1, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType1);
_cr3 = tmpMeta[4];
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName4, _newType2, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType2);
_cr4 = tmpMeta[4];
_cache = omc_OperatorOverloading_binaryUserdef(threadData, _cache, _env, _OMC_LIT604, _cr3, _cr4, _newType1, _newType2, _impl, _pre, _info ,&_mulExp ,NULL ,&_ty);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _foldName, _ty, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _ty);
_cr5 = tmpMeta[4];
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _resultName, _ty, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _ty);
_cr6 = tmpMeta[4];
tmpMeta[5] = omc_OperatorOverloading_binaryUserdef(threadData, _cache, _env, _OMC_LIT628, _cr5, _cr6, _ty, _ty, _impl, _pre, _info, &tmpMeta[2], &tmpMeta[3], NULL);
_cache = tmpMeta[5];
if (optionNone(tmpMeta[3])) goto goto_2;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 1));
_foldExp = tmpMeta[2];
_ty = tmpMeta[4];
tmpMeta[2] = mmc_mk_cons(_ty, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[3] = MMC_REFSTRUCTLIT(mmc_nil);
_cache = omc_OperatorOverloading_getOperatorFuncsOrEmpty(threadData, _cache, _env, tmpMeta[2], _OMC_LIT40, _info, tmpMeta[3] ,&_zeroTypes);
_cache = omc_OperatorOverloading_getZeroConstructor(threadData, _cache, _env, omc_List_filterMap(threadData, _zeroTypes, boxvar_OperatorOverloading_getZeroConstructorExpression), _impl, _info ,&_zeroConstructor);
tmpMeta[2] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName1, _inExp1, mmc_mk_none(), _newType1_1);
_iter1 = tmpMeta[2];
tmpMeta[2] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName2, _transposed, mmc_mk_none(), _newType2_1);
_iter2 = tmpMeta[2];
tmpMeta[2] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName3, _cr1, mmc_mk_none(), _newType1_1);
_iter3 = tmpMeta[2];
tmpMeta[2] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName4, _cr2, mmc_mk_none(), _newType2_1);
_iter4 = tmpMeta[2];
tmpMeta[2] = mmc_mk_box8(3, &DAE_ReductionInfo_REDUCTIONINFO__desc, _OMC_LIT630, _OMC_LIT631, _ty, _zeroConstructor, _foldName, _resultName, mmc_mk_some(_foldExp));
tmpMeta[3] = mmc_mk_cons(_iter3, mmc_mk_cons(_iter4, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[4] = mmc_mk_box4(30, &DAE_Exp_REDUCTION__desc, tmpMeta[2], _mulExp, tmpMeta[3]);
_exp = tmpMeta[4];
_ty = omc_Types_liftArray(threadData, _ty, _dim2_2);
tmpMeta[2] = mmc_mk_box8(3, &DAE_ReductionInfo_REDUCTIONINFO__desc, _OMC_LIT622, _OMC_LIT623, _ty, mmc_mk_none(), _foldName2, _resultName2, mmc_mk_none());
tmpMeta[3] = mmc_mk_cons(_iter2, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[4] = mmc_mk_box4(30, &DAE_Exp_REDUCTION__desc, tmpMeta[2], _exp, tmpMeta[3]);
_exp = tmpMeta[4];
_ty = omc_Types_liftArray(threadData, _ty, _dim1_1);
tmpMeta[2] = mmc_mk_box8(3, &DAE_ReductionInfo_REDUCTIONINFO__desc, _OMC_LIT622, _OMC_LIT623, _ty, mmc_mk_none(), _foldName1, _resultName1, mmc_mk_none());
tmpMeta[3] = mmc_mk_cons(_iter1, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[4] = mmc_mk_box4(30, &DAE_Exp_REDUCTION__desc, tmpMeta[2], _exp, tmpMeta[3]);
_exp = tmpMeta[4];
tmpMeta[3] = mmc_mk_box2(0, _exp, mmc_mk_none());
tmpMeta[2] = mmc_mk_cons(tmpMeta[3], MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = tmpMeta[2];
goto tmp3_done;
}
case 6: {
modelica_boolean tmp8;
if (0 != tmp4_2) goto tmp3_end;
if (0 != tmp4_5) goto tmp3_end;
_cache = tmp4_1;
_op = omc_Util_assoc(threadData, _inOper, _OMC_LIT648);
tmpMeta[2] = _inType1;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
if (!listEmpty(tmpMeta[6])) goto goto_2;
_newType1 = tmpMeta[3];
_dim1 = tmpMeta[5];
tmpMeta[2] = _inType2;
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[2],6,2) == 0) goto goto_2;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[2]), 3));
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
if (!listEmpty(tmpMeta[6])) goto goto_2;
_newType2 = tmpMeta[3];
_dim2 = tmpMeta[5];
tmp8 = omc_Expression_dimensionsEqual(threadData, _dim1, _dim2);
if (1 != tmp8) goto goto_2;
_foldName = omc_Util_getTempVariableIndex(threadData);
_resultName = omc_Util_getTempVariableIndex(threadData);
_iterName1 = omc_Util_getTempVariableIndex(threadData);
_iterName2 = omc_Util_getTempVariableIndex(threadData);
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName1, _newType1, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType1);
_cr1 = tmpMeta[4];
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = mmc_mk_box4(4, &DAE_ComponentRef_CREF__IDENT__desc, _iterName2, _newType2, tmpMeta[2]);
tmpMeta[4] = mmc_mk_box3(9, &DAE_Exp_CREF__desc, tmpMeta[3], _newType2);
_cr2 = tmpMeta[4];
_cache = omc_OperatorOverloading_binaryUserdef(threadData, _cache, _env, _op, _cr1, _cr2, _newType1, _newType2, _impl, _pre, _info ,&_exp ,NULL ,&_resType);
tmpMeta[2] = mmc_mk_cons(_dim2, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[3] = mmc_mk_box3(9, &DAE_Type_T__ARRAY__desc, _resType, tmpMeta[2]);
_resType = tmpMeta[3];
tmpMeta[2] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName1, _inExp1, mmc_mk_none(), _newType1);
_iter1 = tmpMeta[2];
tmpMeta[2] = mmc_mk_box5(3, &DAE_ReductionIterator_REDUCTIONITER__desc, _iterName2, _inExp2, mmc_mk_none(), _newType2);
_iter2 = tmpMeta[2];
tmpMeta[2] = mmc_mk_box8(3, &DAE_ReductionInfo_REDUCTIONINFO__desc, _OMC_LIT622, _OMC_LIT631, _resType, mmc_mk_none(), _foldName, _resultName, mmc_mk_none());
tmpMeta[3] = mmc_mk_cons(_iter1, mmc_mk_cons(_iter2, MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[4] = mmc_mk_box4(30, &DAE_Exp_REDUCTION__desc, tmpMeta[2], _exp, tmpMeta[3]);
_exp = tmpMeta[4];
tmpMeta[3] = mmc_mk_box2(0, _exp, mmc_mk_none());
tmpMeta[2] = mmc_mk_cons(tmpMeta[3], MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = tmpMeta[2];
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_cache = tmpMeta[0+0];
_exps = tmpMeta[0+1];
_return: OMC_LABEL_UNUSED
if (out_exps) { *out_exps = _exps; }
return _cache;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_binaryUserdefArray2(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _isScalar1, modelica_metatype _isVector1, modelica_metatype _isMatrix1, modelica_metatype _isScalar2, modelica_metatype _isVector2, modelica_metatype _isMatrix2, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_metatype _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_exps)
{
modelica_integer tmp1;
modelica_integer tmp2;
modelica_integer tmp3;
modelica_integer tmp4;
modelica_integer tmp5;
modelica_integer tmp6;
modelica_integer tmp7;
modelica_metatype _cache = NULL;
tmp1 = mmc_unbox_integer(_isScalar1);
tmp2 = mmc_unbox_integer(_isVector1);
tmp3 = mmc_unbox_integer(_isMatrix1);
tmp4 = mmc_unbox_integer(_isScalar2);
tmp5 = mmc_unbox_integer(_isVector2);
tmp6 = mmc_unbox_integer(_isMatrix2);
tmp7 = mmc_unbox_integer(_impl);
_cache = omc_OperatorOverloading_binaryUserdefArray2(threadData, _inCache, _env, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, _inOper, _inExp1, _inExp2, _inType1, _inType2, tmp7, _pre, _info, out_exps);
return _cache;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_binaryUserdefArray(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _inExps, modelica_boolean _isArray, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_boolean _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_exps)
{
modelica_metatype _cache = NULL;
modelica_metatype _exps = NULL;
modelica_metatype tmpMeta[4] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;modelica_boolean tmp4_2;
tmp4_1 = _inExps;
tmp4_2 = _isArray;
{
modelica_boolean _isRelation;
modelica_boolean _isVector1;
modelica_boolean _isVector2;
modelica_boolean _isScalar1;
modelica_boolean _isScalar2;
modelica_boolean _isMatrix1;
modelica_boolean _isMatrix2;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 3; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (listEmpty(tmp4_1)) goto tmp3_end;
tmpMeta[2] = MMC_CAR(tmp4_1);
tmpMeta[3] = MMC_CDR(tmp4_1);
if (!listEmpty(tmpMeta[3])) goto tmp3_end;
tmpMeta[0+0] = _inCache;
tmpMeta[0+1] = _inExps;
goto tmp3_done;
}
case 1: {
if (1 != tmp4_2) goto tmp3_end;
if (!listEmpty(tmp4_1)) goto tmp3_end;
_isRelation = listMember(_inOper, _OMC_LIT660);
omc_Error_assertionOrAddSourceMessage(threadData, (!_isRelation), _OMC_LIT663, _OMC_LIT665, _info);
_isScalar1 = (!omc_Types_arrayType(threadData, _inType1));
_isScalar2 = (!omc_Types_arrayType(threadData, _inType2));
_isVector1 = omc_Types_isArray1D(threadData, _inType1);
_isVector2 = omc_Types_isArray1D(threadData, _inType2);
_isMatrix1 = omc_Types_isArray2D(threadData, _inType1);
_isMatrix2 = omc_Types_isArray2D(threadData, _inType2);
tmpMeta[0+0] = omc_OperatorOverloading_binaryUserdefArray2(threadData, _inCache, _env, _isScalar1, _isVector1, _isMatrix1, _isScalar2, _isVector2, _isMatrix2, _inOper, _inExp1, _inExp2, _inType1, _inType2, _impl, _pre, _info, &tmpMeta[0+1]);
goto tmp3_done;
}
case 2: {
omc_OperatorOverloading_errorMultipleValid(threadData, omc_List_map(threadData, _inExps, boxvar_Util_tuple21), _info);
goto goto_2;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_cache = tmpMeta[0+0];
_exps = tmpMeta[0+1];
_return: OMC_LABEL_UNUSED
if (out_exps) { *out_exps = _exps; }
return _cache;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_binaryUserdefArray(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _env, modelica_metatype _inExps, modelica_metatype _isArray, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_metatype _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_exps)
{
modelica_integer tmp1;
modelica_integer tmp2;
modelica_metatype _cache = NULL;
tmp1 = mmc_unbox_integer(_isArray);
tmp2 = mmc_unbox_integer(_impl);
_cache = omc_OperatorOverloading_binaryUserdefArray(threadData, _inCache, _env, _inExps, tmp1, _inOper, _inExp1, _inExp2, _inType1, _inType2, tmp2, _pre, _info, out_exps);
return _cache;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_binaryUserdef(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_boolean _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_outExp, modelica_metatype *out_foldType, modelica_metatype *out_outType)
{
modelica_metatype _outCache = NULL;
modelica_metatype _outExp = NULL;
modelica_metatype _foldType = NULL;
modelica_metatype _outType = NULL;
modelica_metatype tmpMeta[9] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;modelica_metatype tmp4_2;modelica_metatype tmp4_3;modelica_metatype tmp4_4;modelica_metatype tmp4_5;modelica_metatype tmp4_6;modelica_metatype tmp4_7;
tmp4_1 = _inCache;
tmp4_2 = _inEnv;
tmp4_3 = _inOper;
tmp4_4 = _inExp1;
tmp4_5 = _inExp2;
tmp4_6 = _inType1;
tmp4_7 = _inType2;
{
modelica_boolean _bool1;
modelica_boolean _bool2;
modelica_string _opStr = NULL;
modelica_metatype _env = NULL;
modelica_metatype _cache = NULL;
modelica_metatype _types = NULL;
modelica_metatype _types1 = NULL;
modelica_metatype _types2 = NULL;
modelica_metatype _type1 = NULL;
modelica_metatype _type2 = NULL;
modelica_metatype _exp1 = NULL;
modelica_metatype _exp2 = NULL;
modelica_metatype _op = NULL;
modelica_metatype _daeExp = NULL;
modelica_metatype _exps = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 1; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
_cache = tmp4_1;
_env = tmp4_2;
_op = tmp4_3;
_exp1 = tmp4_4;
_exp2 = tmp4_5;
_type1 = tmp4_6;
_type2 = tmp4_7;
_bool1 = omc_Types_arrayType(threadData, _type1);
_bool2 = omc_Types_arrayType(threadData, _type2);
if(((_bool1 && _bool2) && omc_AbsynUtil_opIsElementWise(threadData, _op)))
{
tmpMeta[4] = MMC_REFSTRUCTLIT(mmc_nil);
_types = tmpMeta[4];
}
else
{
tmpMeta[4] = stringAppend(_OMC_LIT666,omc_Dump_opSymbolCompact(threadData, _op));
tmpMeta[5] = stringAppend(tmpMeta[4],_OMC_LIT666);
_opStr = tmpMeta[5];
tmpMeta[4] = mmc_mk_cons(_type1, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[5] = MMC_REFSTRUCTLIT(mmc_nil);
_cache = omc_OperatorOverloading_getOperatorFuncsOrEmpty(threadData, _cache, _env, tmpMeta[4], _opStr, _info, tmpMeta[5] ,&_types1);
tmpMeta[4] = mmc_mk_cons(_type2, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[5] = MMC_REFSTRUCTLIT(mmc_nil);
_cache = omc_OperatorOverloading_getOperatorFuncsOrEmpty(threadData, _cache, _env, tmpMeta[4], _opStr, _info, tmpMeta[5] ,&_types2);
_types = omc_List_union(threadData, _types1, _types2);
_types = omc_List_select1(threadData, _types, boxvar_OperatorOverloading_isOperatorBinaryFunctionOrWarn, _info);
}
tmpMeta[4] = MMC_REFSTRUCTLIT(mmc_nil);
_exps = omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructor(threadData, _types, _exp1, _exp2, _type1, _type2, tmpMeta[4]);
_cache = omc_OperatorOverloading_binaryCastConstructor(threadData, _cache, _env, _inExp1, _inExp2, _inType1, _inType2, _exps, _types, _info ,&_exps);
_cache = omc_OperatorOverloading_binaryUserdefArray(threadData, _cache, _env, _exps, (_bool1 || _bool2), _inOper, _inExp1, _inExp2, _inType1, _inType2, _impl, _pre, _info ,&_exps);
tmpMeta[4] = _exps;
if (listEmpty(tmpMeta[4])) goto goto_2;
tmpMeta[5] = MMC_CAR(tmpMeta[4]);
tmpMeta[6] = MMC_CDR(tmpMeta[4]);
tmpMeta[7] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[5]), 1));
tmpMeta[8] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[5]), 2));
if (!listEmpty(tmpMeta[6])) goto goto_2;
_daeExp = tmpMeta[7];
_foldType = tmpMeta[8];
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = _daeExp;
tmpMeta[0+2] = _foldType;
tmpMeta[0+3] = omc_Expression_typeof(threadData, _daeExp);
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outCache = tmpMeta[0+0];
_outExp = tmpMeta[0+1];
_foldType = tmpMeta[0+2];
_outType = tmpMeta[0+3];
_return: OMC_LABEL_UNUSED
if (out_outExp) { *out_outExp = _outExp; }
if (out_foldType) { *out_foldType = _foldType; }
if (out_outType) { *out_outType = _outType; }
return _outCache;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_OperatorOverloading_binaryUserdef(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inOper, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype _inType1, modelica_metatype _inType2, modelica_metatype _impl, modelica_metatype _pre, modelica_metatype _info, modelica_metatype *out_outExp, modelica_metatype *out_foldType, modelica_metatype *out_outType)
{
modelica_integer tmp1;
modelica_metatype _outCache = NULL;
tmp1 = mmc_unbox_integer(_impl);
_outCache = omc_OperatorOverloading_binaryUserdef(threadData, _inCache, _inEnv, _inOper, _inExp1, _inExp2, _inType1, _inType2, tmp1, _pre, _info, out_outExp, out_foldType, out_outType);
return _outCache;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_deoverloadUnaryUserdefNoConstructor(threadData_t *threadData, modelica_metatype _inTypeList, modelica_metatype _inExp, modelica_metatype _inType, modelica_metatype _inAcc)
{
modelica_metatype _outExps = NULL;
modelica_metatype tmpMeta[10] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
volatile modelica_metatype tmp3_1;volatile modelica_metatype tmp3_2;
tmp3_1 = _inTypeList;
tmp3_2 = _inAcc;
{
modelica_metatype _types = NULL;
modelica_metatype _exp = NULL;
modelica_metatype _daeExp = NULL;
modelica_metatype _restArgs = NULL;
modelica_metatype _ty = NULL;
modelica_metatype _ty1 = NULL;
modelica_metatype _attr = NULL;
modelica_metatype _path = NULL;
modelica_metatype _acc = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp2_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp3 < 3; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (listEmpty(tmp3_1)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_1);
tmpMeta[2] = MMC_CDR(tmp3_1);
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],11,4) == 0) goto tmp2_end;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 2));
if (listEmpty(tmpMeta[3])) goto tmp2_end;
tmpMeta[4] = MMC_CAR(tmpMeta[3]);
tmpMeta[5] = MMC_CDR(tmpMeta[3]);
tmpMeta[6] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 3));
tmpMeta[7] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 3));
tmpMeta[8] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 4));
tmpMeta[9] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 5));
_ty1 = tmpMeta[6];
_restArgs = tmpMeta[5];
_ty = tmpMeta[7];
_attr = tmpMeta[8];
_path = tmpMeta[9];
_types = tmpMeta[2];
_acc = tmp3_2;
_exp = omc_Types_matchType(threadData, _inExp, _inType, _ty1, 0, NULL);
tmpMeta[1] = mmc_mk_cons(_exp, MMC_REFSTRUCTLIT(mmc_nil));
_daeExp = omc_OperatorOverloading_makeCallFillRestDefaults(threadData, _path, tmpMeta[1], _restArgs, omc_Types_makeCallAttr(threadData, _ty, _attr));
tmpMeta[1] = mmc_mk_cons(_daeExp, _acc);
tmpMeta[0] = omc_OperatorOverloading_deoverloadUnaryUserdefNoConstructor(threadData, _types, _inExp, _ty, tmpMeta[1]);
goto tmp2_done;
}
case 1: {
if (listEmpty(tmp3_1)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_1);
tmpMeta[2] = MMC_CDR(tmp3_1);
_types = tmpMeta[2];
tmp3 += 1;
tmpMeta[0] = omc_OperatorOverloading_deoverloadUnaryUserdefNoConstructor(threadData, _types, _inExp, _inType, _inAcc);
goto tmp2_done;
}
case 2: {
if (!listEmpty(tmp3_1)) goto tmp2_end;
tmpMeta[0] = _inAcc;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
tmp2_done:
(void)tmp3;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp2_done2;
goto_1:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp3 < 3) {
goto tmp2_top;
}
MMC_THROW_INTERNAL();
tmp2_done2:;
}
}
_outExps = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outExps;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListRhs(threadData_t *threadData, modelica_metatype _types, modelica_metatype _inLhs, modelica_metatype _inRhs, modelica_metatype _lhsType, modelica_metatype _inAcc)
{
modelica_metatype _outExps = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;modelica_metatype tmp3_2;
tmp3_1 = _inRhs;
tmp3_2 = _inAcc;
{
modelica_metatype _rhs = NULL;
modelica_metatype _acc = NULL;
modelica_metatype _rest = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (listEmpty(tmp3_1)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_1);
tmpMeta[2] = MMC_CDR(tmp3_1);
_rhs = tmpMeta[1];
_rest = tmpMeta[2];
_acc = tmp3_2;
_acc = omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructor(threadData, _types, _inLhs, _rhs, _lhsType, omc_Expression_typeof(threadData, _rhs), _acc);
_inRhs = _rest;
_inAcc = _acc;
goto _tailrecursive;
goto tmp2_done;
}
case 1: {
tmpMeta[0] = _inAcc;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outExps = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outExps;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructorListLhs(threadData_t *threadData, modelica_metatype _types, modelica_metatype _inLhs, modelica_metatype _inRhs, modelica_metatype _rhsType, modelica_metatype _inAcc)
{
modelica_metatype _outExps = NULL;
modelica_metatype tmpMeta[3] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp3_1;modelica_metatype tmp3_2;
tmp3_1 = _inLhs;
tmp3_2 = _inAcc;
{
modelica_metatype _lhs = NULL;
modelica_metatype _acc = NULL;
modelica_metatype _rest = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
for (; tmp3 < 2; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (listEmpty(tmp3_1)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_1);
tmpMeta[2] = MMC_CDR(tmp3_1);
_lhs = tmpMeta[1];
_rest = tmpMeta[2];
_acc = tmp3_2;
_acc = omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructor(threadData, _types, _lhs, _inRhs, omc_Expression_typeof(threadData, _lhs), _rhsType, _acc);
_inLhs = _rest;
_inAcc = _acc;
goto _tailrecursive;
goto tmp2_done;
}
case 1: {
tmpMeta[0] = _inAcc;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
goto_1:;
MMC_THROW_INTERNAL();
goto tmp2_done;
tmp2_done:;
}
}
_outExps = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outExps;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_overloadFoldType(threadData_t *threadData, modelica_metatype _inType1, modelica_metatype _inType2, modelica_metatype _inType3)
{
modelica_metatype _optType = NULL;
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
_optType = ((omc_Types_equivtypesOrRecordSubtypeOf(threadData, _inType1, _inType2) && omc_Types_equivtypesOrRecordSubtypeOf(threadData, _inType1, _inType3))?mmc_mk_some(_inType1):mmc_mk_none());
_return: OMC_LABEL_UNUSED
return _optType;
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructor(threadData_t *threadData, modelica_metatype _inTypeList, modelica_metatype _inLhs, modelica_metatype _inRhs, modelica_metatype _lhsType, modelica_metatype _rhsType, modelica_metatype _inAcc)
{
modelica_metatype _outExps = NULL;
modelica_metatype tmpMeta[13] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
volatile modelica_metatype tmp3_1;volatile modelica_metatype tmp3_2;
tmp3_1 = _inTypeList;
tmp3_2 = _inAcc;
{
modelica_metatype _types = NULL;
modelica_metatype _daeExp = NULL;
modelica_metatype _restArgs = NULL;
modelica_metatype _ty = NULL;
modelica_metatype _ty1 = NULL;
modelica_metatype _ty2 = NULL;
modelica_metatype _attr = NULL;
modelica_metatype _path = NULL;
modelica_metatype _lhs = NULL;
modelica_metatype _rhs = NULL;
modelica_metatype _acc = NULL;
modelica_metatype _tpl = NULL;
volatile mmc_switch_type tmp3;
int tmp4;
tmp3 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp2_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp3 < 3; tmp3++) {
switch (MMC_SWITCH_CAST(tmp3)) {
case 0: {
if (listEmpty(tmp3_1)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_1);
tmpMeta[2] = MMC_CDR(tmp3_1);
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[1],11,4) == 0) goto tmp2_end;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 2));
if (listEmpty(tmpMeta[3])) goto tmp2_end;
tmpMeta[4] = MMC_CAR(tmpMeta[3]);
tmpMeta[5] = MMC_CDR(tmpMeta[3]);
tmpMeta[6] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 3));
if (listEmpty(tmpMeta[5])) goto tmp2_end;
tmpMeta[7] = MMC_CAR(tmpMeta[5]);
tmpMeta[8] = MMC_CDR(tmpMeta[5]);
tmpMeta[9] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[7]), 3));
tmpMeta[10] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 3));
tmpMeta[11] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 4));
tmpMeta[12] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[1]), 5));
_ty1 = tmpMeta[6];
_ty2 = tmpMeta[9];
_restArgs = tmpMeta[8];
_ty = tmpMeta[10];
_attr = tmpMeta[11];
_path = tmpMeta[12];
_types = tmpMeta[2];
_acc = tmp3_2;
_lhs = omc_Types_matchType(threadData, _inLhs, _lhsType, _ty1, 0, NULL);
_rhs = omc_Types_matchType(threadData, _inRhs, _rhsType, _ty2, 0, NULL);
tmpMeta[1] = mmc_mk_cons(_lhs, mmc_mk_cons(_rhs, MMC_REFSTRUCTLIT(mmc_nil)));
_daeExp = omc_OperatorOverloading_makeCallFillRestDefaults(threadData, _path, tmpMeta[1], _restArgs, omc_Types_makeCallAttr(threadData, _ty, _attr));
tmpMeta[1] = mmc_mk_box2(0, _daeExp, omc_OperatorOverloading_overloadFoldType(threadData, _ty1, _ty2, _ty));
_tpl = tmpMeta[1];
tmpMeta[1] = mmc_mk_cons(_tpl, _acc);
tmpMeta[0] = omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructor(threadData, _types, _inLhs, _inRhs, _lhsType, _rhsType, tmpMeta[1]);
goto tmp2_done;
}
case 1: {
if (listEmpty(tmp3_1)) goto tmp2_end;
tmpMeta[1] = MMC_CAR(tmp3_1);
tmpMeta[2] = MMC_CDR(tmp3_1);
_types = tmpMeta[2];
tmp3 += 1;
tmpMeta[0] = omc_OperatorOverloading_deoverloadBinaryUserdefNoConstructor(threadData, _types, _inLhs, _inRhs, _lhsType, _rhsType, _inAcc);
goto tmp2_done;
}
case 2: {
if (!listEmpty(tmp3_1)) goto tmp2_end;
tmpMeta[0] = _inAcc;
goto tmp2_done;
}
}
goto tmp2_end;
tmp2_end: ;
}
goto goto_1;
tmp2_done:
(void)tmp3;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp2_done2;
goto_1:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp3 < 3) {
goto tmp2_top;
}
MMC_THROW_INTERNAL();
tmp2_done2:;
}
}
_outExps = tmpMeta[0];
_return: OMC_LABEL_UNUSED
return _outExps;
}
DLLExport
void omc_OperatorOverloading_initCache(threadData_t *threadData)
{
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
setGlobalRoot(((modelica_integer) 24), _OMC_LIT667);
_return: OMC_LABEL_UNUSED
return;
}
DLLExport
modelica_metatype omc_OperatorOverloading_elabArglist(threadData_t *threadData, modelica_metatype _inTypes, modelica_metatype _inArgs, modelica_metatype *out_outTypes)
{
modelica_metatype _outArgs = NULL;
modelica_metatype _outTypes = NULL;
modelica_metatype tmpMeta[8] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;modelica_metatype tmp4_2;
tmp4_1 = _inTypes;
tmp4_2 = _inArgs;
{
modelica_metatype _arg_1 = NULL;
modelica_metatype _arg = NULL;
modelica_metatype _atype_1 = NULL;
modelica_metatype _pt = NULL;
modelica_metatype _atype = NULL;
modelica_metatype _args_1 = NULL;
modelica_metatype _atypes_1 = NULL;
modelica_metatype _pts = NULL;
modelica_metatype _args = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 2; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (!listEmpty(tmp4_1)) goto tmp3_end;
if (!listEmpty(tmp4_2)) goto tmp3_end;
tmpMeta[2] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[3] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[0+0] = tmpMeta[2];
tmpMeta[0+1] = tmpMeta[3];
goto tmp3_done;
}
case 1: {
if (listEmpty(tmp4_1)) goto tmp3_end;
tmpMeta[2] = MMC_CAR(tmp4_1);
tmpMeta[3] = MMC_CDR(tmp4_1);
if (listEmpty(tmp4_2)) goto tmp3_end;
tmpMeta[4] = MMC_CAR(tmp4_2);
tmpMeta[5] = MMC_CDR(tmp4_2);
tmpMeta[6] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 1));
tmpMeta[7] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 2));
_pt = tmpMeta[2];
_pts = tmpMeta[3];
_arg = tmpMeta[6];
_atype = tmpMeta[7];
_args = tmpMeta[5];
_arg_1 = omc_Types_matchType(threadData, _arg, _atype, _pt, 0 ,&_atype_1);
_args_1 = omc_OperatorOverloading_elabArglist(threadData, _pts, _args ,&_atypes_1);
tmpMeta[2] = mmc_mk_cons(_arg_1, _args_1);
tmpMeta[3] = mmc_mk_cons(_atype_1, _atypes_1);
tmpMeta[0+0] = tmpMeta[2];
tmpMeta[0+1] = tmpMeta[3];
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outArgs = tmpMeta[0+0];
_outTypes = tmpMeta[0+1];
_return: OMC_LABEL_UNUSED
if (out_outTypes) { *out_outTypes = _outTypes; }
return _outArgs;
}
DLLExport
modelica_metatype omc_OperatorOverloading_string(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inExp1, modelica_boolean _inImpl, modelica_boolean _inDoVect, modelica_metatype _inPre, modelica_metatype _inInfo, modelica_metatype *out_outExp, modelica_metatype *out_outProp)
{
modelica_metatype _outCache = NULL;
modelica_metatype _outExp = NULL;
modelica_metatype _outProp = NULL;
modelica_metatype tmpMeta[10] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;modelica_metatype tmp4_2;modelica_metatype tmp4_3;
tmp4_1 = _inCache;
tmp4_2 = _inEnv;
tmp4_3 = _inExp1;
{
modelica_string _str1 = NULL;
modelica_metatype _path = NULL;
modelica_metatype _operNames = NULL;
modelica_metatype _recordEnv = NULL;
modelica_metatype _operatorEnv = NULL;
modelica_metatype _env = NULL;
modelica_metatype _operatorCl = NULL;
modelica_metatype _cache = NULL;
modelica_metatype _types = NULL;
modelica_metatype _prop = NULL;
modelica_metatype _type1 = NULL;
modelica_metatype _exp1 = NULL;
modelica_metatype _daeExp = NULL;
modelica_metatype _restargs = NULL;
modelica_metatype _nargs = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 1; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
modelica_boolean tmp6;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_3,11,3) == 0) goto tmp3_end;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_3), 2));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[3],2,2) == 0) goto tmp3_end;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 2));
if (6 != MMC_STRLEN(tmpMeta[4]) || strcmp(MMC_STRINGDATA(_OMC_LIT669), MMC_STRINGDATA(tmpMeta[4])) != 0) goto tmp3_end;
tmpMeta[5] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_3), 3));
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[5],0,2) == 0) goto tmp3_end;
tmpMeta[6] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[5]), 2));
if (listEmpty(tmpMeta[6])) goto tmp3_end;
tmpMeta[7] = MMC_CAR(tmpMeta[6]);
tmpMeta[8] = MMC_CDR(tmpMeta[6]);
tmpMeta[9] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[5]), 3));
_exp1 = tmpMeta[7];
_restargs = tmpMeta[8];
_nargs = tmpMeta[9];
_cache = tmp4_1;
_env = tmp4_2;
tmpMeta[5] = omc_Static_elabExp(threadData, _cache, _env, _exp1, _inImpl, _inDoVect, _inPre, _inInfo, NULL, &tmpMeta[3]);
_cache = tmpMeta[5];
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[3],0,2) == 0) goto goto_2;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 2));
_type1 = tmpMeta[4];
_path = omc_OperatorOverloading_getRecordPath(threadData, _type1);
_path = omc_AbsynUtil_makeFullyQualified(threadData, _path);
_cache = omc_Lookup_lookupClass(threadData, _cache, _env, _path, mmc_mk_none() ,NULL ,&_recordEnv);
_str1 = _OMC_LIT668;
tmpMeta[3] = mmc_mk_box2(4, &Absyn_Path_IDENT__desc, _str1);
_path = omc_AbsynUtil_joinPaths(threadData, _path, tmpMeta[3]);
_cache = omc_Lookup_lookupClass(threadData, _cache, _recordEnv, _path, mmc_mk_none() ,&_operatorCl ,&_operatorEnv);
tmp6 = omc_SCodeUtil_isOperator(threadData, _operatorCl);
if (1 != tmp6) goto goto_2;
_operNames = omc_AbsynToSCode_getListofQualOperatorFuncsfromOperator(threadData, _operatorCl);
tmpMeta[6] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[7] = omc_Lookup_lookupFunctionsListInEnv(threadData, _cache, _operatorEnv, _operNames, _inInfo, tmpMeta[6], &tmpMeta[3]);
_cache = tmpMeta[7];
if (listEmpty(tmpMeta[3])) goto goto_2;
tmpMeta[4] = MMC_CAR(tmpMeta[3]);
tmpMeta[5] = MMC_CDR(tmpMeta[3]);
_types = tmpMeta[3];
tmpMeta[7] = mmc_mk_cons(_exp1, _restargs);
tmpMeta[8] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[9] = omc_Static_elabCallArgs3(threadData, _cache, _env, _types, _path, tmpMeta[7], _nargs, tmpMeta[8], _inImpl, _inPre, _inInfo, &tmpMeta[3]);
_cache = tmpMeta[9];
if (optionNone(tmpMeta[3])) goto goto_2;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 1));
tmpMeta[5] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 1));
tmpMeta[6] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 2));
_daeExp = tmpMeta[5];
_prop = tmpMeta[6];
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = _daeExp;
tmpMeta[0+2] = _prop;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outCache = tmpMeta[0+0];
_outExp = tmpMeta[0+1];
_outProp = tmpMeta[0+2];
_return: OMC_LABEL_UNUSED
if (out_outExp) { *out_outExp = _outExp; }
if (out_outProp) { *out_outProp = _outProp; }
return _outCache;
}
modelica_metatype boxptr_OperatorOverloading_string(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inExp1, modelica_metatype _inImpl, modelica_metatype _inDoVect, modelica_metatype _inPre, modelica_metatype _inInfo, modelica_metatype *out_outExp, modelica_metatype *out_outProp)
{
modelica_integer tmp1;
modelica_integer tmp2;
modelica_metatype _outCache = NULL;
tmp1 = mmc_unbox_integer(_inImpl);
tmp2 = mmc_unbox_integer(_inDoVect);
_outCache = omc_OperatorOverloading_string(threadData, _inCache, _inEnv, _inExp1, tmp1, tmp2, _inPre, _inInfo, out_outExp, out_outProp);
return _outCache;
}
DLLExport
modelica_metatype omc_OperatorOverloading_unary(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inOperator1, modelica_metatype _inProp1, modelica_metatype _inExp1, modelica_metatype _AbExp, modelica_metatype _AbExp1, modelica_boolean _inImpl, modelica_metatype _inPre, modelica_metatype _inInfo, modelica_metatype *out_outExp, modelica_metatype *out_outProp)
{
modelica_metatype _outCache = NULL;
modelica_metatype _outExp = NULL;
modelica_metatype _outProp = NULL;
modelica_metatype tmpMeta[11] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
volatile modelica_metatype tmp4_1;volatile modelica_metatype tmp4_2;volatile modelica_metatype tmp4_3;volatile modelica_metatype tmp4_4;volatile modelica_metatype tmp4_5;volatile modelica_metatype tmp4_6;
tmp4_1 = _inCache;
tmp4_2 = _inEnv;
tmp4_3 = _inOperator1;
tmp4_4 = _inProp1;
tmp4_5 = _inExp1;
tmp4_6 = _AbExp1;
{
modelica_string _str1 = NULL;
modelica_metatype _cache = NULL;
modelica_metatype _operNames = NULL;
modelica_metatype _path = NULL;
modelica_metatype _operatorEnv = NULL;
modelica_metatype _recordEnv = NULL;
modelica_metatype _operatorCl = NULL;
modelica_metatype _types = NULL;
modelica_metatype _env = NULL;
modelica_metatype _opList = NULL;
modelica_metatype _type1 = NULL;
modelica_metatype _otype = NULL;
modelica_metatype _exp1 = NULL;
modelica_metatype _exp = NULL;
modelica_metatype _const = NULL;
modelica_metatype _oper = NULL;
modelica_metatype _aboper = NULL;
modelica_metatype _prop = NULL;
modelica_metatype _absexp1 = NULL;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
MMC_TRY_INTERNAL(mmc_jumper)
tmp3_top:
threadData->mmc_jumper = &new_mmc_jumper;
for (; tmp4 < 3; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
modelica_boolean tmp6;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_4,1,2) == 0) goto tmp3_end;
_exp1 = tmp4_5;
tmp4 += 2;
tmp6 = omc_Config_acceptMetaModelicaGrammar(threadData);
if (0 != tmp6) goto goto_2;
tmpMeta[3] = omc_Types_propTupleFirstProp(threadData, _inProp1);
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[3],0,2) == 0) goto goto_2;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 2));
_prop = tmpMeta[3];
_type1 = tmpMeta[4];
tmpMeta[3] = mmc_mk_box4(25, &DAE_Exp_TSUB__desc, _exp1, mmc_mk_integer(((modelica_integer) 1)), _type1);
_exp = tmpMeta[3];
tmpMeta[0+0] = omc_OperatorOverloading_unary(threadData, _inCache, _inEnv, _inOperator1, _prop, _exp, _AbExp, _AbExp1, _inImpl, _inPre, _inInfo, &tmpMeta[0+1], &tmpMeta[0+2]);
goto tmp3_done;
}
case 1: {
modelica_boolean tmp7;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_4,0,2) == 0) goto tmp3_end;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_4), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_4), 3));
_type1 = tmpMeta[3];
_const = tmpMeta[4];
_aboper = tmp4_3;
_exp1 = tmp4_5;
tmp7 = omc_Types_isRecord(threadData, omc_Types_arrayElementType(threadData, _type1));
if (0 != tmp7) goto goto_2;
_opList = omc_OperatorOverloading_operatorsUnary(threadData, _aboper);
tmpMeta[8] = mmc_mk_box2(0, _exp1, _type1);
tmpMeta[7] = mmc_mk_cons(tmpMeta[8], MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[9] = omc_OperatorOverloading_deoverload(threadData, _opList, tmpMeta[7], _AbExp, _inPre, _inInfo, &tmpMeta[3], &tmpMeta[6]);
_oper = tmpMeta[9];
if (listEmpty(tmpMeta[3])) goto goto_2;
tmpMeta[4] = MMC_CAR(tmpMeta[3]);
tmpMeta[5] = MMC_CDR(tmpMeta[3]);
if (!listEmpty(tmpMeta[5])) goto goto_2;
_exp1 = tmpMeta[4];
_otype = tmpMeta[6];
_exp = omc_OperatorOverloading_replaceOperatorWithFcall(threadData, _AbExp, _exp1, _oper, mmc_mk_none(), _const);
tmpMeta[3] = mmc_mk_box3(3, &DAE_Properties_PROP__desc, _otype, _const);
_prop = tmpMeta[3];
tmpMeta[0+0] = _inCache;
tmpMeta[0+1] = _exp;
tmpMeta[0+2] = _prop;
goto tmp3_done;
}
case 2: {
modelica_boolean tmp8;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_4,0,2) == 0) goto tmp3_end;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_4), 2));
_type1 = tmpMeta[3];
_cache = tmp4_1;
_env = tmp4_2;
_aboper = tmp4_3;
_absexp1 = tmp4_6;
_path = omc_OperatorOverloading_getRecordPath(threadData, _type1);
_path = omc_AbsynUtil_makeFullyQualified(threadData, _path);
_cache = omc_Lookup_lookupClass(threadData, _cache, _env, _path, mmc_mk_none() ,NULL ,&_recordEnv);
tmpMeta[3] = stringAppend(_OMC_LIT666,omc_Dump_opSymbolCompact(threadData, _aboper));
tmpMeta[4] = stringAppend(tmpMeta[3],_OMC_LIT666);
_str1 = tmpMeta[4];
tmpMeta[3] = mmc_mk_box2(4, &Absyn_Path_IDENT__desc, _str1);
_path = omc_AbsynUtil_joinPaths(threadData, _path, tmpMeta[3]);
_cache = omc_Lookup_lookupClass(threadData, _cache, _recordEnv, _path, mmc_mk_none() ,&_operatorCl ,&_operatorEnv);
tmp8 = omc_SCodeUtil_isOperator(threadData, _operatorCl);
if (1 != tmp8) goto goto_2;
_operNames = omc_AbsynToSCode_getListofQualOperatorFuncsfromOperator(threadData, _operatorCl);
tmpMeta[6] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[7] = omc_Lookup_lookupFunctionsListInEnv(threadData, _cache, _operatorEnv, _operNames, _inInfo, tmpMeta[6], &tmpMeta[3]);
_cache = tmpMeta[7];
if (listEmpty(tmpMeta[3])) goto goto_2;
tmpMeta[4] = MMC_CAR(tmpMeta[3]);
tmpMeta[5] = MMC_CDR(tmpMeta[3]);
_types = tmpMeta[3];
tmpMeta[7] = mmc_mk_cons(_absexp1, MMC_REFSTRUCTLIT(mmc_nil));
tmpMeta[8] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[9] = MMC_REFSTRUCTLIT(mmc_nil);
tmpMeta[10] = omc_Static_elabCallArgs3(threadData, _cache, _env, _types, _path, tmpMeta[7], tmpMeta[8], tmpMeta[9], _inImpl, _inPre, _inInfo, &tmpMeta[3]);
_cache = tmpMeta[10];
if (optionNone(tmpMeta[3])) goto goto_2;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 1));
tmpMeta[5] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 1));
tmpMeta[6] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[4]), 2));
_exp = tmpMeta[5];
_prop = tmpMeta[6];
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = _exp;
tmpMeta[0+2] = _prop;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
tmp3_done:
(void)tmp4;
MMC_RESTORE_INTERNAL(mmc_jumper);
goto tmp3_done2;
goto_2:;
MMC_CATCH_INTERNAL(mmc_jumper);
if (++tmp4 < 3) {
goto tmp3_top;
}
MMC_THROW_INTERNAL();
tmp3_done2:;
}
}
_outCache = tmpMeta[0+0];
_outExp = tmpMeta[0+1];
_outProp = tmpMeta[0+2];
_return: OMC_LABEL_UNUSED
if (out_outExp) { *out_outExp = _outExp; }
if (out_outProp) { *out_outProp = _outProp; }
return _outCache;
}
modelica_metatype boxptr_OperatorOverloading_unary(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inOperator1, modelica_metatype _inProp1, modelica_metatype _inExp1, modelica_metatype _AbExp, modelica_metatype _AbExp1, modelica_metatype _inImpl, modelica_metatype _inPre, modelica_metatype _inInfo, modelica_metatype *out_outExp, modelica_metatype *out_outProp)
{
modelica_integer tmp1;
modelica_metatype _outCache = NULL;
tmp1 = mmc_unbox_integer(_inImpl);
_outCache = omc_OperatorOverloading_unary(threadData, _inCache, _inEnv, _inOperator1, _inProp1, _inExp1, _AbExp, _AbExp1, tmp1, _inPre, _inInfo, out_outExp, out_outProp);
return _outCache;
}
DLLExport
modelica_metatype omc_OperatorOverloading_binary(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inOperator1, modelica_metatype _inProp1, modelica_metatype _inExp1, modelica_metatype _inProp2, modelica_metatype _inExp2, modelica_metatype _AbExp, modelica_metatype _AbExp1, modelica_metatype _AbExp2, modelica_boolean _inImpl, modelica_metatype _inPre, modelica_metatype _inInfo, modelica_metatype *out_outExp, modelica_metatype *out_outProp)
{
modelica_metatype _outCache = NULL;
modelica_metatype _outExp = NULL;
modelica_metatype _outProp = NULL;
modelica_metatype tmpMeta[13] __attribute__((unused)) = {0};
MMC_SO();
_tailrecursive: OMC_LABEL_UNUSED
{
modelica_metatype tmp4_1;modelica_metatype tmp4_2;modelica_metatype tmp4_3;modelica_metatype tmp4_4;modelica_metatype tmp4_5;modelica_metatype tmp4_6;modelica_metatype tmp4_7;
tmp4_1 = _inCache;
tmp4_2 = _inEnv;
tmp4_3 = _inOperator1;
tmp4_4 = _inProp1;
tmp4_5 = _inExp1;
tmp4_6 = _inProp2;
tmp4_7 = _inExp2;
{
modelica_metatype _cache = NULL;
modelica_metatype _env = NULL;
modelica_metatype _opList = NULL;
modelica_metatype _type1 = NULL;
modelica_metatype _type2 = NULL;
modelica_metatype _otype = NULL;
modelica_metatype _exp1 = NULL;
modelica_metatype _exp2 = NULL;
modelica_metatype _exp = NULL;
modelica_metatype _const1 = NULL;
modelica_metatype _const2 = NULL;
modelica_metatype _const = NULL;
modelica_metatype _oper = NULL;
modelica_metatype _aboper = NULL;
modelica_metatype _prop = NULL;
modelica_metatype _props1 = NULL;
modelica_metatype _props2 = NULL;
modelica_metatype _functionTree = NULL;
modelica_boolean _didInline;
volatile mmc_switch_type tmp4;
int tmp5;
tmp4 = 0;
for (; tmp4 < 3; tmp4++) {
switch (MMC_SWITCH_CAST(tmp4)) {
case 0: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_4,1,2) == 0) goto tmp3_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_6,0,2) == 0) goto tmp3_end;
_props1 = tmp4_4;
if (!(!omc_Config_acceptMetaModelicaGrammar(threadData))) goto tmp3_end;
tmpMeta[3] = omc_Types_propTupleFirstProp(threadData, _props1);
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[3],0,2) == 0) goto goto_2;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 2));
_prop = tmpMeta[3];
_type1 = tmpMeta[4];
tmpMeta[3] = mmc_mk_box4(25, &DAE_Exp_TSUB__desc, _inExp1, mmc_mk_integer(((modelica_integer) 1)), _type1);
_exp = tmpMeta[3];
_inProp1 = _prop;
_inExp1 = _exp;
goto _tailrecursive;
goto tmp3_done;
}
case 1: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_4,0,2) == 0) goto tmp3_end;
if (mmc__uniontype__metarecord__typedef__equal(tmp4_6,1,2) == 0) goto tmp3_end;
_props2 = tmp4_6;
if (!(!omc_Config_acceptMetaModelicaGrammar(threadData))) goto tmp3_end;
tmpMeta[3] = omc_Types_propTupleFirstProp(threadData, _props2);
if (mmc__uniontype__metarecord__typedef__equal(tmpMeta[3],0,2) == 0) goto goto_2;
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta[3]), 2));
_prop = tmpMeta[3];
_type2 = tmpMeta[4];
tmpMeta[3] = mmc_mk_box4(25, &DAE_Exp_TSUB__desc, _inExp2, mmc_mk_integer(((modelica_integer) 1)), _type2);
_exp = tmpMeta[3];
_inProp2 = _prop;
_inExp2 = _exp;
goto _tailrecursive;
goto tmp3_done;
}
case 2: {
if (mmc__uniontype__metarecord__typedef__equal(tmp4_4,0,2) == 0) goto tmp3_end;
tmpMeta[3] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_4), 2));
tmpMeta[4] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_4), 3));
if (mmc__uniontype__metarecord__typedef__equal(tmp4_6,0,2) == 0) goto tmp3_end;
tmpMeta[5] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_6), 2));
tmpMeta[6] = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_6), 3));
_type1 = tmpMeta[3];
_const1 = tmpMeta[4];
_type2 = tmpMeta[5];
_const2 = tmpMeta[6];
_cache = tmp4_1;
_env = tmp4_2;
_aboper = tmp4_3;
_exp1 = tmp4_5;
_exp2 = tmp4_7;
if((omc_Types_isRecord(threadData, omc_Types_arrayElementType(threadData, _type1)) || omc_Types_isRecord(threadData, omc_Types_arrayElementType(threadData, _type2))))
{
_cache = omc_OperatorOverloading_binaryUserdef(threadData, _cache, _env, _aboper, _inExp1, _inExp2, _type1, _type2, _inImpl, _inPre, _inInfo ,&_exp ,NULL ,&_otype);
_functionTree = omc_FCore_getFunctionTree(threadData, _cache);
_exp = omc_ExpressionSimplify_simplify1(threadData, _exp, NULL);
tmpMeta[3] = mmc_mk_box2(0, mmc_mk_some(_functionTree), _OMC_LIT673);
_exp = omc_Inline_inlineExp(threadData, _exp, tmpMeta[3], _OMC_LIT677 ,NULL ,&_didInline ,NULL);
_exp = omc_ExpressionSimplify_condsimplify(threadData, _didInline, _exp, NULL);
_const = omc_Types_constAnd(threadData, _const1, _const2);
tmpMeta[3] = mmc_mk_box3(3, &DAE_Properties_PROP__desc, _otype, _const);
_prop = tmpMeta[3];
}
else
{
if((omc_Types_isBoxedType(threadData, _type1) && omc_Types_isBoxedType(threadData, _type2)))
{
_exp1 = omc_Types_matchType(threadData, _exp1, _type1, omc_Types_unboxedType(threadData, _type1), 1 ,&_type1);
_exp2 = omc_Types_matchType(threadData, _exp2, _type2, omc_Types_unboxedType(threadData, _type2), 1 ,&_type2);
}
_opList = omc_OperatorOverloading_operatorsBinary(threadData, _aboper, _type1, _exp1, _type2, _exp2 ,&_type1 ,&_exp1 ,&_type2 ,&_exp2, NULL, NULL, NULL, NULL);
tmpMeta[10] = mmc_mk_box2(0, _exp1, _type1);
tmpMeta[11] = mmc_mk_box2(0, _exp2, _type2);
tmpMeta[9] = mmc_mk_cons(tmpMeta[10], mmc_mk_cons(tmpMeta[11], MMC_REFSTRUCTLIT(mmc_nil)));
tmpMeta[12] = omc_OperatorOverloading_deoverload(threadData, _opList, tmpMeta[9], _AbExp, _inPre, _inInfo, &tmpMeta[3], &tmpMeta[8]);
_oper = tmpMeta[12];
if (listEmpty(tmpMeta[3])) goto goto_2;
tmpMeta[4] = MMC_CAR(tmpMeta[3]);
tmpMeta[5] = MMC_CDR(tmpMeta[3]);
if (listEmpty(tmpMeta[5])) goto goto_2;
tmpMeta[6] = MMC_CAR(tmpMeta[5]);
tmpMeta[7] = MMC_CDR(tmpMeta[5]);
if (!listEmpty(tmpMeta[7])) goto goto_2;
_exp1 = tmpMeta[4];
_exp2 = tmpMeta[6];
_otype = tmpMeta[8];
_const = omc_Types_constAnd(threadData, _const1, _const2);
_exp = omc_OperatorOverloading_replaceOperatorWithFcall(threadData, _AbExp, _exp1, _oper, mmc_mk_some(_exp2), _const);
_exp = omc_ExpressionSimplify_simplify(threadData, _exp, NULL);
tmpMeta[3] = mmc_mk_box3(3, &DAE_Properties_PROP__desc, _otype, _const);
_prop = tmpMeta[3];
omc_OperatorOverloading_warnUnsafeRelations(threadData, _inEnv, _AbExp, _const, _type1, _type2, _exp1, _exp2, _oper, _inPre, _inInfo);
}
tmpMeta[0+0] = _cache;
tmpMeta[0+1] = _exp;
tmpMeta[0+2] = _prop;
goto tmp3_done;
}
}
goto tmp3_end;
tmp3_end: ;
}
goto goto_2;
goto_2:;
MMC_THROW_INTERNAL();
goto tmp3_done;
tmp3_done:;
}
}
_outCache = tmpMeta[0+0];
_outExp = tmpMeta[0+1];
_outProp = tmpMeta[0+2];
_return: OMC_LABEL_UNUSED
if (out_outExp) { *out_outExp = _outExp; }
if (out_outProp) { *out_outProp = _outProp; }
return _outCache;
}
modelica_metatype boxptr_OperatorOverloading_binary(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _inOperator1, modelica_metatype _inProp1, modelica_metatype _inExp1, modelica_metatype _inProp2, modelica_metatype _inExp2, modelica_metatype _AbExp, modelica_metatype _AbExp1, modelica_metatype _AbExp2, modelica_metatype _inImpl, modelica_metatype _inPre, modelica_metatype _inInfo, modelica_metatype *out_outExp, modelica_metatype *out_outProp)
{
modelica_integer tmp1;
modelica_metatype _outCache = NULL;
tmp1 = mmc_unbox_integer(_inImpl);
_outCache = omc_OperatorOverloading_binary(threadData, _inCache, _inEnv, _inOperator1, _inProp1, _inExp1, _inProp2, _inExp2, _AbExp, _AbExp1, _AbExp2, tmp1, _inPre, _inInfo, out_outExp, out_outProp);
return _outCache;
}
