#ifndef Patternm__H
#define Patternm__H
#include "meta/meta_modelica.h"
#include "util/modelica.h"
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#ifdef __cplusplus
extern "C" {
#endif
extern struct record_description Absyn_Case_CASE__desc;
extern struct record_description Absyn_ComponentRef_CREF__IDENT__desc;
extern struct record_description Absyn_ComponentRef_WILD__desc;
extern struct record_description Absyn_Direction_BIDIR__desc;
extern struct record_description Absyn_Direction_INPUT__desc;
extern struct record_description Absyn_Direction_OUTPUT__desc;
extern struct record_description Absyn_Exp_ARRAY__desc;
extern struct record_description Absyn_Exp_CREF__desc;
extern struct record_description Absyn_Exp_TUPLE__desc;
extern struct record_description Absyn_InnerOuter_NOT__INNER__OUTER__desc;
extern struct record_description Absyn_IsField_NONFIELD__desc;
extern struct record_description Absyn_MatchType_MATCH__desc;
extern struct record_description Absyn_MatchType_MATCHCONTINUE__desc;
extern struct record_description Absyn_Msg_MSG__desc;
extern struct record_description Absyn_Path_IDENT__desc;
extern struct record_description Absyn_TypeSpec_TPATH__desc;
extern struct record_description ClassInf_State_FUNCTION__desc;
extern struct record_description ConnectionGraph_ConnectionGraph_GRAPH__desc;
extern struct record_description DAE_Attributes_ATTR__desc;
extern struct record_description DAE_Binding_UNBOUND__desc;
extern struct record_description DAE_ComponentPrefix_NOCOMPPRE__desc;
extern struct record_description DAE_ComponentRef_WILD__desc;
extern struct record_description DAE_Connect_SetTrieNode_SET__TRIE__NODE__desc;
extern struct record_description DAE_Connect_Sets_SETS__desc;
extern struct record_description DAE_ConnectorType_NON__CONNECTOR__desc;
extern struct record_description DAE_Const_C__VAR__desc;
extern struct record_description DAE_DAElist_DAE__desc;
extern struct record_description DAE_ElementSource_SOURCE__desc;
extern struct record_description DAE_Else_ELSE__desc;
extern struct record_description DAE_Else_ELSEIF__desc;
extern struct record_description DAE_Exp_BCONST__desc;
extern struct record_description DAE_Exp_CREF__desc;
extern struct record_description DAE_Exp_ICONST__desc;
extern struct record_description DAE_Exp_LIST__desc;
extern struct record_description DAE_Exp_MATCHEXPRESSION__desc;
extern struct record_description DAE_Exp_META__OPTION__desc;
extern struct record_description DAE_Exp_PATTERN__desc;
extern struct record_description DAE_Exp_RCONST__desc;
extern struct record_description DAE_Exp_SCONST__desc;
extern struct record_description DAE_Exp_TUPLE__desc;
extern struct record_description DAE_MatchCase_CASE__desc;
extern struct record_description DAE_MatchType_MATCH__desc;
extern struct record_description DAE_MatchType_MATCHCONTINUE__desc;
extern struct record_description DAE_Mod_NOMOD__desc;
extern struct record_description DAE_Pattern_PAT__AS__desc;
extern struct record_description DAE_Pattern_PAT__AS__FUNC__PTR__desc;
extern struct record_description DAE_Pattern_PAT__CALL__desc;
extern struct record_description DAE_Pattern_PAT__CALL__NAMED__desc;
extern struct record_description DAE_Pattern_PAT__CALL__TUPLE__desc;
extern struct record_description DAE_Pattern_PAT__CONS__desc;
extern struct record_description DAE_Pattern_PAT__CONSTANT__desc;
extern struct record_description DAE_Pattern_PAT__META__TUPLE__desc;
extern struct record_description DAE_Pattern_PAT__SOME__desc;
extern struct record_description DAE_Pattern_PAT__WILD__desc;
extern struct record_description DAE_Prefix_NOPRE__desc;
extern struct record_description DAE_Properties_PROP__desc;
extern struct record_description DAE_Statement_STMT__FAILURE__desc;
extern struct record_description DAE_Statement_STMT__FOR__desc;
extern struct record_description DAE_Statement_STMT__IF__desc;
extern struct record_description DAE_Statement_STMT__WHILE__desc;
extern struct record_description DAE_Type_T__BOOL__desc;
extern struct record_description DAE_Type_T__INTEGER__desc;
extern struct record_description DAE_Type_T__METALIST__desc;
extern struct record_description DAE_Type_T__METAOPTION__desc;
extern struct record_description DAE_Type_T__METARECORD__desc;
extern struct record_description DAE_Type_T__METATYPE__desc;
extern struct record_description DAE_Type_T__NORETCALL__desc;
extern struct record_description DAE_Type_T__REAL__desc;
extern struct record_description DAE_Type_T__STRING__desc;
extern struct record_description DAE_Type_T__TUPLE__desc;
extern struct record_description DAE_Type_T__UNKNOWN__desc;
extern struct record_description DAE_Var_TYPES__VAR__desc;
extern struct record_description ErrorTypes_Message_MESSAGE__desc;
extern struct record_description ErrorTypes_MessageType_GRAMMAR__desc;
extern struct record_description ErrorTypes_MessageType_TRANSLATION__desc;
extern struct record_description ErrorTypes_Severity_ERROR__desc;
extern struct record_description ErrorTypes_Severity_NOTIFICATION__desc;
extern struct record_description ErrorTypes_Severity_WARNING__desc;
extern struct record_description FCore_Status_VAR__DAE__desc;
extern struct record_description Flags_DebugFlag_DEBUG__FLAG__desc;
extern struct record_description Gettext_TranslatableContent_gettext__desc;
extern struct record_description Gettext_TranslatableContent_notrans__desc;
extern struct record_description InstTypes_CallingScope_INNER__CALL__desc;
extern struct record_description InstTypes_SearchStrategy_SEARCH__LOCAL__ONLY__desc;
extern struct record_description SCode_Attributes_ATTR__desc;
extern struct record_description SCode_Comment_COMMENT__desc;
extern struct record_description SCode_ConnectorType_POTENTIAL__desc;
extern struct record_description SCode_Element_COMPONENT__desc;
extern struct record_description SCode_Encapsulated_NOT__ENCAPSULATED__desc;
extern struct record_description SCode_Final_NOT__FINAL__desc;
extern struct record_description SCode_Initial_NON__INITIAL__desc;
extern struct record_description SCode_Mod_NOMOD__desc;
extern struct record_description SCode_Parallelism_NON__PARALLEL__desc;
extern struct record_description SCode_Prefixes_PREFIXES__desc;
extern struct record_description SCode_Redeclare_NOT__REDECLARE__desc;
extern struct record_description SCode_Replaceable_NOT__REPLACEABLE__desc;
extern struct record_description SCode_Variability_VAR__desc;
extern struct record_description SCode_Visibility_PROTECTED__desc;
extern struct record_description SCode_Visibility_PUBLIC__desc;
extern struct record_description SCodeDump_SCodeDumpOptions_OPTIONS__desc;
extern struct record_description SourceInfo_SOURCEINFO__desc;
extern struct record_description UnitAbsyn_InstStore_NOSTORE__desc;
extern struct record_description Util_Status_FAILURE__desc;
extern struct record_description Util_Status_SUCCESS__desc;
#define boxptr_Patternm_convertExpToPatterns omc_Patternm_convertExpToPatterns
#define boxptr_Patternm_makeTupleFromMetaTuple omc_Patternm_makeTupleFromMetaTuple
#define boxptr_Patternm_elseFindDeadStore omc_Patternm_elseFindDeadStore
#define boxptr_Patternm_statementFindDeadStore omc_Patternm_statementFindDeadStore
#define boxptr_Patternm_statementListFindDeadStoreRemoveEmptyStatements omc_Patternm_statementListFindDeadStoreRemoveEmptyStatements
#define boxptr_Patternm_addAliasesToEnv omc_Patternm_addAliasesToEnv
#define boxptr_Patternm_addPatternAliases omc_Patternm_addPatternAliases
#define boxptr_Patternm_addPatternAliasesList omc_Patternm_addPatternAliasesList
#define boxptr_Patternm_getInputAsBinding omc_Patternm_getInputAsBinding
#define boxptr_Patternm_findFirstNonAsPattern omc_Patternm_findFirstNonAsPattern
#define boxptr_Patternm_addEnvKnownAsBindings2 omc_Patternm_addEnvKnownAsBindings2
#define boxptr_Patternm_addEnvKnownAsBindings omc_Patternm_addEnvKnownAsBindings
DLLExport
modelica_metatype omc_Patternm_sortPatternsByComplexity(threadData_t *threadData, modelica_metatype _inPatterns);
#define boxptr_Patternm_sortPatternsByComplexity omc_Patternm_sortPatternsByComplexity
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_sortPatternsByComplexity,2,0) {(void*) boxptr_Patternm_sortPatternsByComplexity,0}};
#define boxvar_Patternm_sortPatternsByComplexity MMC_REFSTRUCTLIT(boxvar_lit_Patternm_sortPatternsByComplexity)
DLLExport
modelica_integer omc_Patternm_getValueCtor(threadData_t *threadData, modelica_integer _ix);
DLLExport
modelica_metatype boxptr_Patternm_getValueCtor(threadData_t *threadData, modelica_metatype _ix);
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_getValueCtor,2,0) {(void*) boxptr_Patternm_getValueCtor,0}};
#define boxvar_Patternm_getValueCtor MMC_REFSTRUCTLIT(boxvar_lit_Patternm_getValueCtor)
#define boxptr_Patternm_setCasePatterns omc_Patternm_setCasePatterns
#define boxptr_Patternm_getCasePatterns omc_Patternm_getCasePatterns
DLLExport
modelica_metatype omc_Patternm_resultExps(threadData_t *threadData, modelica_metatype _inCases);
#define boxptr_Patternm_resultExps omc_Patternm_resultExps
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_resultExps,2,0) {(void*) boxptr_Patternm_resultExps,0}};
#define boxvar_Patternm_resultExps MMC_REFSTRUCTLIT(boxvar_lit_Patternm_resultExps)
#define boxptr_Patternm_checkLocalShadowing omc_Patternm_checkLocalShadowing
DLLExport
modelica_metatype omc_Patternm_traverseCasesTopDown(threadData_t *threadData, modelica_metatype _inCases, modelica_fnptr _func, modelica_metatype _inA, modelica_metatype *out_a);
#define boxptr_Patternm_traverseCasesTopDown omc_Patternm_traverseCasesTopDown
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_traverseCasesTopDown,2,0) {(void*) boxptr_Patternm_traverseCasesTopDown,0}};
#define boxvar_Patternm_traverseCasesTopDown MMC_REFSTRUCTLIT(boxvar_lit_Patternm_traverseCasesTopDown)
DLLExport
modelica_metatype omc_Patternm_traverseCases(threadData_t *threadData, modelica_metatype _inCases, modelica_fnptr _func, modelica_metatype _inA, modelica_metatype *out_oa);
#define boxptr_Patternm_traverseCases omc_Patternm_traverseCases
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_traverseCases,2,0) {(void*) boxptr_Patternm_traverseCases,0}};
#define boxvar_Patternm_traverseCases MMC_REFSTRUCTLIT(boxvar_lit_Patternm_traverseCases)
DLLExport
modelica_metatype omc_Patternm_traverseConstantPatternsHelper2(threadData_t *threadData, modelica_metatype _inPattern, modelica_metatype _inExtra, modelica_fnptr _func, modelica_metatype *out_extra);
#define boxptr_Patternm_traverseConstantPatternsHelper2 omc_Patternm_traverseConstantPatternsHelper2
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_traverseConstantPatternsHelper2,2,0) {(void*) boxptr_Patternm_traverseConstantPatternsHelper2,0}};
#define boxvar_Patternm_traverseConstantPatternsHelper2 MMC_REFSTRUCTLIT(boxvar_lit_Patternm_traverseConstantPatternsHelper2)
DLLExport
modelica_metatype omc_Patternm_traverseConstantPatternsHelper(threadData_t *threadData, modelica_metatype _inExp, modelica_metatype _inT, modelica_fnptr _func, modelica_metatype *out_outT);
#define boxptr_Patternm_traverseConstantPatternsHelper omc_Patternm_traverseConstantPatternsHelper
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_traverseConstantPatternsHelper,2,0) {(void*) boxptr_Patternm_traverseConstantPatternsHelper,0}};
#define boxvar_Patternm_traverseConstantPatternsHelper MMC_REFSTRUCTLIT(boxvar_lit_Patternm_traverseConstantPatternsHelper)
DLLExport
modelica_metatype omc_Patternm_fixCaseReturnTypes2(threadData_t *threadData, modelica_metatype _inCases, modelica_metatype _inExps, modelica_metatype _inInfo);
#define boxptr_Patternm_fixCaseReturnTypes2 omc_Patternm_fixCaseReturnTypes2
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_fixCaseReturnTypes2,2,0) {(void*) boxptr_Patternm_fixCaseReturnTypes2,0}};
#define boxvar_Patternm_fixCaseReturnTypes2 MMC_REFSTRUCTLIT(boxvar_lit_Patternm_fixCaseReturnTypes2)
#define boxptr_Patternm_fixCaseReturnTypes omc_Patternm_fixCaseReturnTypes
#define boxptr_Patternm_assertAllPatternListsDoNotOverlap omc_Patternm_assertAllPatternListsDoNotOverlap
#define boxptr_Patternm_optimizeContinueToMatch2 omc_Patternm_optimizeContinueToMatch2
#define boxptr_Patternm_optimizeContinueToMatch omc_Patternm_optimizeContinueToMatch
#define boxptr_Patternm_optimizeContinueJumps2 omc_Patternm_optimizeContinueJumps2
#define boxptr_Patternm_optimizeContinueJumps omc_Patternm_optimizeContinueJumps
#define boxptr_Patternm_filterUnusedDecls omc_Patternm_filterUnusedDecls
DLLExport
modelica_metatype omc_Patternm_traversePattern(threadData_t *threadData, modelica_metatype _inPattern, modelica_fnptr _func, modelica_metatype _inExtra, modelica_metatype *out_extra);
#define boxptr_Patternm_traversePattern omc_Patternm_traversePattern
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_traversePattern,2,0) {(void*) boxptr_Patternm_traversePattern,0}};
#define boxvar_Patternm_traversePattern MMC_REFSTRUCTLIT(boxvar_lit_Patternm_traversePattern)
DLLExport
modelica_metatype omc_Patternm_traversePatternList(threadData_t *threadData, modelica_metatype _inPatterns, modelica_fnptr _func, modelica_metatype _inExtra, modelica_metatype *out_extra);
#define boxptr_Patternm_traversePatternList omc_Patternm_traversePatternList
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_traversePatternList,2,0) {(void*) boxptr_Patternm_traversePatternList,0}};
#define boxvar_Patternm_traversePatternList MMC_REFSTRUCTLIT(boxvar_lit_Patternm_traversePatternList)
#define boxptr_Patternm_addPatternAsBindings omc_Patternm_addPatternAsBindings
#define boxptr_Patternm_simplifyPattern omc_Patternm_simplifyPattern
#define boxptr_Patternm_addCasesLocalCref omc_Patternm_addCasesLocalCref
#define boxptr_Patternm_useCasesLocalCref omc_Patternm_useCasesLocalCref
#define boxptr_Patternm_usePatternAsBindings omc_Patternm_usePatternAsBindings
#define boxptr_Patternm_useLocalCrefSubs omc_Patternm_useLocalCrefSubs
#define boxptr_Patternm_useLocalCrefHelper omc_Patternm_useLocalCrefHelper
#define boxptr_Patternm_useLocalCref omc_Patternm_useLocalCref
#define boxptr_Patternm_checkDefUsePattern omc_Patternm_checkDefUsePattern
#define boxptr_Patternm_checkDefUse omc_Patternm_checkDefUse
#define boxptr_Patternm_addLocalCrefSubs omc_Patternm_addLocalCrefSubs
#define boxptr_Patternm_addLocalCrefHelper omc_Patternm_addLocalCrefHelper
#define boxptr_Patternm_addLocalCref omc_Patternm_addLocalCref
#define boxptr_Patternm_removePatternAsBinding omc_Patternm_removePatternAsBinding
#define boxptr_Patternm_filterUnusedAsBindings omc_Patternm_filterUnusedAsBindings
#define boxptr_Patternm_setCasePatternsCheckZero omc_Patternm_setCasePatternsCheckZero
#define boxptr_Patternm_filterUnusedPatterns omc_Patternm_filterUnusedPatterns
#define boxptr_Patternm_optimizeSwitchedMatchCases omc_Patternm_optimizeSwitchedMatchCases
#define boxptr_Patternm_optimizeMatchToSwitch omc_Patternm_optimizeMatchToSwitch
#define boxptr_Patternm_checkConstantMatchInputs omc_Patternm_checkConstantMatchInputs
DLLExport
modelica_metatype omc_Patternm_elabMatchExpression(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _matchExp, modelica_boolean _impl, modelica_boolean _performVectorization, modelica_metatype _inPrefix, modelica_metatype _info, modelica_metatype *out_outExp, modelica_metatype *out_outProperties);
DLLExport
modelica_metatype boxptr_Patternm_elabMatchExpression(threadData_t *threadData, modelica_metatype _inCache, modelica_metatype _inEnv, modelica_metatype _matchExp, modelica_metatype _impl, modelica_metatype _performVectorization, modelica_metatype _inPrefix, modelica_metatype _info, modelica_metatype *out_outExp, modelica_metatype *out_outProperties);
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_elabMatchExpression,2,0) {(void*) boxptr_Patternm_elabMatchExpression,0}};
#define boxvar_Patternm_elabMatchExpression MMC_REFSTRUCTLIT(boxvar_lit_Patternm_elabMatchExpression)
DLLExport
modelica_string omc_Patternm_patternStr(threadData_t *threadData, modelica_metatype _pattern);
#define boxptr_Patternm_patternStr omc_Patternm_patternStr
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_patternStr,2,0) {(void*) boxptr_Patternm_patternStr,0}};
#define boxvar_Patternm_patternStr MMC_REFSTRUCTLIT(boxvar_lit_Patternm_patternStr)
#define boxptr_Patternm_validUniontype omc_Patternm_validUniontype
#define boxptr_Patternm_validPatternType omc_Patternm_validPatternType
#define boxptr_Patternm_elabPatternCall omc_Patternm_elabPatternCall
#define boxptr_Patternm_elabPatternTuple omc_Patternm_elabPatternTuple
#define boxptr_Patternm_findBoundVariables omc_Patternm_findBoundVariables
#define boxptr_Patternm_checkPatternsDuplicateAsBindings omc_Patternm_checkPatternsDuplicateAsBindings
#define boxptr_Patternm_elabPattern omc_Patternm_elabPattern
DLLExport
modelica_metatype omc_Patternm_elabPatternCheckDuplicateBindings(threadData_t *threadData, modelica_metatype _cache, modelica_metatype _env, modelica_metatype _lhs, modelica_metatype _ty, modelica_metatype _info, modelica_metatype *out_pattern);
#define boxptr_Patternm_elabPatternCheckDuplicateBindings omc_Patternm_elabPatternCheckDuplicateBindings
static const MMC_DEFSTRUCTLIT(boxvar_lit_Patternm_elabPatternCheckDuplicateBindings,2,0) {(void*) boxptr_Patternm_elabPatternCheckDuplicateBindings,0}};
#define boxvar_Patternm_elabPatternCheckDuplicateBindings MMC_REFSTRUCTLIT(boxvar_lit_Patternm_elabPatternCheckDuplicateBindings)
#define boxptr_Patternm_checkInvalidPatternNamedArgs omc_Patternm_checkInvalidPatternNamedArgs
#define boxptr_Patternm_findFieldExpInList omc_Patternm_findFieldExpInList
#define boxptr_Patternm_generatePositionalArgs omc_Patternm_generatePositionalArgs
#ifdef __cplusplus
}
#endif
#endif
