#ifndef VarTransform__H
#define VarTransform__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 DAE_Algorithm_ALGORITHM__STMTS__desc;
extern struct record_description DAE_DAElist_DAE__desc;
extern struct record_description DAE_Element_ALGORITHM__desc;
extern struct record_description DAE_Element_ARRAY__EQUATION__desc;
extern struct record_description DAE_Element_ASSERT__desc;
extern struct record_description DAE_Element_COMP__desc;
extern struct record_description DAE_Element_COMPLEX__EQUATION__desc;
extern struct record_description DAE_Element_DEFINE__desc;
extern struct record_description DAE_Element_EQUATION__desc;
extern struct record_description DAE_Element_EQUEQUATION__desc;
extern struct record_description DAE_Element_IF__EQUATION__desc;
extern struct record_description DAE_Element_INITIALALGORITHM__desc;
extern struct record_description DAE_Element_INITIALDEFINE__desc;
extern struct record_description DAE_Element_INITIALEQUATION__desc;
extern struct record_description DAE_Element_INITIAL__ARRAY__EQUATION__desc;
extern struct record_description DAE_Element_INITIAL__ASSERT__desc;
extern struct record_description DAE_Element_INITIAL__COMPLEX__EQUATION__desc;
extern struct record_description DAE_Element_INITIAL__IF__EQUATION__desc;
extern struct record_description DAE_Element_INITIAL__TERMINATE__desc;
extern struct record_description DAE_Element_REINIT__desc;
extern struct record_description DAE_Element_TERMINATE__desc;
extern struct record_description DAE_Element_VAR__desc;
extern struct record_description DAE_Element_WHEN__EQUATION__desc;
extern struct record_description DAE_Else_ELSE__desc;
extern struct record_description DAE_Else_ELSEIF__desc;
extern struct record_description DAE_Statement_STMT__ASSERT__desc;
extern struct record_description DAE_Statement_STMT__ASSIGN__desc;
extern struct record_description DAE_Statement_STMT__ASSIGN__ARR__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__NORETCALL__desc;
extern struct record_description DAE_Statement_STMT__REINIT__desc;
extern struct record_description DAE_Statement_STMT__TERMINATE__desc;
extern struct record_description DAE_Statement_STMT__TUPLE__ASSIGN__desc;
extern struct record_description DAE_Statement_STMT__WHEN__desc;
extern struct record_description DAE_Statement_STMT__WHILE__desc;
extern struct record_description DAE_VariableAttributes_VAR__ATTR__BOOL__desc;
extern struct record_description DAE_VariableAttributes_VAR__ATTR__INT__desc;
extern struct record_description DAE_VariableAttributes_VAR__ATTR__REAL__desc;
extern struct record_description DAE_VariableAttributes_VAR__ATTR__STRING__desc;
extern struct record_description SourceInfo_SOURCEINFO__desc;
extern struct record_description VarTransform_VariableReplacements_REPLACEMENTS__desc;
DLLExport
modelica_metatype omc_VarTransform_replaceExpList(threadData_t *threadData, modelica_metatype _iexpl, modelica_metatype _repl, modelica_metatype _cond, modelica_boolean *out_replacementPerformed);
DLLExport
modelica_metatype boxptr_VarTransform_replaceExpList(threadData_t *threadData, modelica_metatype _iexpl, modelica_metatype _repl, modelica_metatype _cond, modelica_metatype *out_replacementPerformed);
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_replaceExpList,2,0) {(void*) boxptr_VarTransform_replaceExpList,0}};
#define boxvar_VarTransform_replaceExpList MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_replaceExpList)
DLLExport
modelica_metatype omc_VarTransform_replaceExp(threadData_t *threadData, modelica_metatype _inExp, modelica_metatype _inVarReplacements, modelica_metatype _inCondition, modelica_boolean *out_replacementPerformed);
DLLExport
modelica_metatype boxptr_VarTransform_replaceExp(threadData_t *threadData, modelica_metatype _inExp, modelica_metatype _inVarReplacements, modelica_metatype _inCondition, modelica_metatype *out_replacementPerformed);
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_replaceExp,2,0) {(void*) boxptr_VarTransform_replaceExp,0}};
#define boxvar_VarTransform_replaceExp MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_replaceExp)
DLLExport
modelica_metatype omc_VarTransform_replaceExpRepeated2(threadData_t *threadData, modelica_metatype _e, modelica_metatype _repl, modelica_metatype _func, modelica_integer _maxIter, modelica_integer _i, modelica_boolean _equal);
DLLExport
modelica_metatype boxptr_VarTransform_replaceExpRepeated2(threadData_t *threadData, modelica_metatype _e, modelica_metatype _repl, modelica_metatype _func, modelica_metatype _maxIter, modelica_metatype _i, modelica_metatype _equal);
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_replaceExpRepeated2,2,0) {(void*) boxptr_VarTransform_replaceExpRepeated2,0}};
#define boxvar_VarTransform_replaceExpRepeated2 MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_replaceExpRepeated2)
DLLExport
modelica_metatype omc_VarTransform_replaceExpRepeated(threadData_t *threadData, modelica_metatype _e, modelica_metatype _repl, modelica_metatype _func, modelica_integer _maxIter);
DLLExport
modelica_metatype boxptr_VarTransform_replaceExpRepeated(threadData_t *threadData, modelica_metatype _e, modelica_metatype _repl, modelica_metatype _func, modelica_metatype _maxIter);
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_replaceExpRepeated,2,0) {(void*) boxptr_VarTransform_replaceExpRepeated,0}};
#define boxvar_VarTransform_replaceExpRepeated MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_replaceExpRepeated)
DLLExport
modelica_metatype omc_VarTransform_avoidDoubleHashLookup(threadData_t *threadData, modelica_metatype _inExp, modelica_metatype _inType);
#define boxptr_VarTransform_avoidDoubleHashLookup omc_VarTransform_avoidDoubleHashLookup
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_avoidDoubleHashLookup,2,0) {(void*) boxptr_VarTransform_avoidDoubleHashLookup,0}};
#define boxvar_VarTransform_avoidDoubleHashLookup MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_avoidDoubleHashLookup)
DLLExport
modelica_metatype omc_VarTransform_replaceExpOpt(threadData_t *threadData, modelica_metatype _inExp, modelica_metatype _repl, modelica_metatype _funcOpt);
#define boxptr_VarTransform_replaceExpOpt omc_VarTransform_replaceExpOpt
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_replaceExpOpt,2,0) {(void*) boxptr_VarTransform_replaceExpOpt,0}};
#define boxvar_VarTransform_replaceExpOpt MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_replaceExpOpt)
DLLExport
modelica_metatype omc_VarTransform_getReplacement(threadData_t *threadData, modelica_metatype _inVariableReplacements, modelica_metatype _inComponentRef);
#define boxptr_VarTransform_getReplacement omc_VarTransform_getReplacement
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_getReplacement,2,0) {(void*) boxptr_VarTransform_getReplacement,0}};
#define boxvar_VarTransform_getReplacement MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_getReplacement)
#define boxptr_VarTransform_makeTransitive2 omc_VarTransform_makeTransitive2
#define boxptr_VarTransform_makeTransitive12 omc_VarTransform_makeTransitive12
#define boxptr_VarTransform_makeTransitive1 omc_VarTransform_makeTransitive1
#define boxptr_VarTransform_makeTransitive omc_VarTransform_makeTransitive
DLLExport
modelica_metatype omc_VarTransform_addReplacementIfNot(threadData_t *threadData, modelica_boolean _condition, modelica_metatype _repl, modelica_metatype _inSrc, modelica_metatype _inDst);
DLLExport
modelica_metatype boxptr_VarTransform_addReplacementIfNot(threadData_t *threadData, modelica_metatype _condition, modelica_metatype _repl, modelica_metatype _inSrc, modelica_metatype _inDst);
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_addReplacementIfNot,2,0) {(void*) boxptr_VarTransform_addReplacementIfNot,0}};
#define boxvar_VarTransform_addReplacementIfNot MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_addReplacementIfNot)
#define boxptr_VarTransform_amortizeUnion omc_VarTransform_amortizeUnion
#define boxptr_VarTransform_addReplacementInv2 omc_VarTransform_addReplacementInv2
#define boxptr_VarTransform_addReplacementInv omc_VarTransform_addReplacementInv
DLLExport
modelica_metatype omc_VarTransform_addReplacementNoTransitive(threadData_t *threadData, modelica_metatype _repl, modelica_metatype _src, modelica_metatype _dst);
#define boxptr_VarTransform_addReplacementNoTransitive omc_VarTransform_addReplacementNoTransitive
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_addReplacementNoTransitive,2,0) {(void*) boxptr_VarTransform_addReplacementNoTransitive,0}};
#define boxvar_VarTransform_addReplacementNoTransitive MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_addReplacementNoTransitive)
DLLExport
modelica_metatype omc_VarTransform_addReplacement(threadData_t *threadData, modelica_metatype _repl, modelica_metatype _inSrc, modelica_metatype _inDst);
#define boxptr_VarTransform_addReplacement omc_VarTransform_addReplacement
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_addReplacement,2,0) {(void*) boxptr_VarTransform_addReplacement,0}};
#define boxvar_VarTransform_addReplacement MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_addReplacement)
DLLExport
modelica_metatype omc_VarTransform_addReplacementLst(threadData_t *threadData, modelica_metatype _inRepl, modelica_metatype _crs, modelica_metatype _dsts);
#define boxptr_VarTransform_addReplacementLst omc_VarTransform_addReplacementLst
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_addReplacementLst,2,0) {(void*) boxptr_VarTransform_addReplacementLst,0}};
#define boxvar_VarTransform_addReplacementLst MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_addReplacementLst)
DLLExport
modelica_metatype omc_VarTransform_replacementTargets(threadData_t *threadData, modelica_metatype _repl);
#define boxptr_VarTransform_replacementTargets omc_VarTransform_replacementTargets
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_replacementTargets,2,0) {(void*) boxptr_VarTransform_replacementTargets,0}};
#define boxvar_VarTransform_replacementTargets MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_replacementTargets)
DLLExport
modelica_metatype omc_VarTransform_replacementSources(threadData_t *threadData, modelica_metatype _repl);
#define boxptr_VarTransform_replacementSources omc_VarTransform_replacementSources
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_replacementSources,2,0) {(void*) boxptr_VarTransform_replacementSources,0}};
#define boxvar_VarTransform_replacementSources MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_replacementSources)
#define boxptr_VarTransform_printReplacementTupleStr omc_VarTransform_printReplacementTupleStr
DLLExport
modelica_metatype omc_VarTransform_getAllReplacements(threadData_t *threadData, modelica_metatype _inVariableReplacements, modelica_metatype *out_dsts);
#define boxptr_VarTransform_getAllReplacements omc_VarTransform_getAllReplacements
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_getAllReplacements,2,0) {(void*) boxptr_VarTransform_getAllReplacements,0}};
#define boxvar_VarTransform_getAllReplacements MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_getAllReplacements)
DLLExport
modelica_string omc_VarTransform_dumpReplacementsStr(threadData_t *threadData, modelica_metatype _inVariableReplacements);
#define boxptr_VarTransform_dumpReplacementsStr omc_VarTransform_dumpReplacementsStr
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_dumpReplacementsStr,2,0) {(void*) boxptr_VarTransform_dumpReplacementsStr,0}};
#define boxvar_VarTransform_dumpReplacementsStr MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_dumpReplacementsStr)
DLLExport
void omc_VarTransform_dumpReplacements(threadData_t *threadData, modelica_metatype _inVariableReplacements);
#define boxptr_VarTransform_dumpReplacements omc_VarTransform_dumpReplacements
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_dumpReplacements,2,0) {(void*) boxptr_VarTransform_dumpReplacements,0}};
#define boxvar_VarTransform_dumpReplacements MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_dumpReplacements)
DLLExport
modelica_metatype omc_VarTransform_replaceEquationsStmts(threadData_t *threadData, modelica_metatype _inAlgorithmStatementLst, modelica_metatype _repl, modelica_metatype _condExpFunc, modelica_boolean *out_replacementPerformed);
DLLExport
modelica_metatype boxptr_VarTransform_replaceEquationsStmts(threadData_t *threadData, modelica_metatype _inAlgorithmStatementLst, modelica_metatype _repl, modelica_metatype _condExpFunc, modelica_metatype *out_replacementPerformed);
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_replaceEquationsStmts,2,0) {(void*) boxptr_VarTransform_replaceEquationsStmts,0}};
#define boxvar_VarTransform_replaceEquationsStmts MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_replaceEquationsStmts)
DLLExport
modelica_metatype omc_VarTransform_emptyReplacementsSized(threadData_t *threadData, modelica_integer _size);
DLLExport
modelica_metatype boxptr_VarTransform_emptyReplacementsSized(threadData_t *threadData, modelica_metatype _size);
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_emptyReplacementsSized,2,0) {(void*) boxptr_VarTransform_emptyReplacementsSized,0}};
#define boxvar_VarTransform_emptyReplacementsSized MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_emptyReplacementsSized)
DLLExport
modelica_metatype omc_VarTransform_emptyReplacements(threadData_t *threadData);
#define boxptr_VarTransform_emptyReplacements omc_VarTransform_emptyReplacements
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_emptyReplacements,2,0) {(void*) boxptr_VarTransform_emptyReplacements,0}};
#define boxvar_VarTransform_emptyReplacements MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_emptyReplacements)
DLLExport
modelica_metatype omc_VarTransform_emptyReplacementsArray(threadData_t *threadData, modelica_integer _n);
DLLExport
modelica_metatype boxptr_VarTransform_emptyReplacementsArray(threadData_t *threadData, modelica_metatype _n);
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_emptyReplacementsArray,2,0) {(void*) boxptr_VarTransform_emptyReplacementsArray,0}};
#define boxvar_VarTransform_emptyReplacementsArray MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_emptyReplacementsArray)
DLLExport
modelica_metatype omc_VarTransform_applyReplacementsExp(threadData_t *threadData, modelica_metatype _repl, modelica_metatype _inExp1, modelica_metatype _inExp2, modelica_metatype *out_outExp2);
#define boxptr_VarTransform_applyReplacementsExp omc_VarTransform_applyReplacementsExp
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_applyReplacementsExp,2,0) {(void*) boxptr_VarTransform_applyReplacementsExp,0}};
#define boxvar_VarTransform_applyReplacementsExp MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_applyReplacementsExp)
DLLExport
modelica_metatype omc_VarTransform_applyReplacementList(threadData_t *threadData, modelica_metatype _repl, modelica_metatype _increfs);
#define boxptr_VarTransform_applyReplacementList omc_VarTransform_applyReplacementList
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_applyReplacementList,2,0) {(void*) boxptr_VarTransform_applyReplacementList,0}};
#define boxvar_VarTransform_applyReplacementList MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_applyReplacementList)
DLLExport
modelica_metatype omc_VarTransform_applyReplacements(threadData_t *threadData, modelica_metatype _inVariableReplacements1, modelica_metatype _inComponentRef2, modelica_metatype _inComponentRef3, modelica_metatype *out_outComponentRef2);
#define boxptr_VarTransform_applyReplacements omc_VarTransform_applyReplacements
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_applyReplacements,2,0) {(void*) boxptr_VarTransform_applyReplacements,0}};
#define boxvar_VarTransform_applyReplacements MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_applyReplacements)
#define boxptr_VarTransform_applyReplacementsVarAttr omc_VarTransform_applyReplacementsVarAttr
DLLExport
modelica_metatype omc_VarTransform_applyReplacementsDAEElts(threadData_t *threadData, modelica_metatype _inDae, modelica_metatype _repl, modelica_metatype _condExpFunc);
#define boxptr_VarTransform_applyReplacementsDAEElts omc_VarTransform_applyReplacementsDAEElts
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_applyReplacementsDAEElts,2,0) {(void*) boxptr_VarTransform_applyReplacementsDAEElts,0}};
#define boxvar_VarTransform_applyReplacementsDAEElts MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_applyReplacementsDAEElts)
DLLExport
modelica_metatype omc_VarTransform_applyReplacementsDAE(threadData_t *threadData, modelica_metatype _dae, modelica_metatype _repl, modelica_metatype _condExpFunc);
#define boxptr_VarTransform_applyReplacementsDAE omc_VarTransform_applyReplacementsDAE
static const MMC_DEFSTRUCTLIT(boxvar_lit_VarTransform_applyReplacementsDAE,2,0) {(void*) boxptr_VarTransform_applyReplacementsDAE,0}};
#define boxvar_VarTransform_applyReplacementsDAE MMC_REFSTRUCTLIT(boxvar_lit_VarTransform_applyReplacementsDAE)
#ifdef __cplusplus
}
#endif
#endif
