#ifdef VCZH_DEBUG_NO_REFLECTION
static_assert(false, "Don't use GacUICompiler.(h|cpp) if VCZH_DEBUG_NO_REFLECTION is defined.");
#endif
#ifndef VCZH_PRESENTATION_REFLECTION_GUIINSTANCELOADER
#define VCZH_PRESENTATION_REFLECTION_GUIINSTANCELOADER
#include <VlppWorkflowCompiler.h>
#include "../Controls/GuiApplication.h"
#include "../Controls/Templates/GuiThemeStyleFactory.h"
#include "GuiInstanceRepresentation.h"
namespace
{
namespace
{
namespace
{
struct
;
}
/***********************************************************************
Instance Loader
***********************************************************************/
class
:
public
,
public
<
>
{
typedef
collections
::
<
<
description
::
>>
;
public
:
enum
{
,
,
,
,
,
};
enum
{
,
,
};
enum
{
,
,
};
enum
{
,
,
};
=
;
=
;
=
;
=
;
;
static
<
>
();
static
<
>
(
<
description
::
>
);
static
<
>
(
<
description
::
>
);
static
<
>
(
<
description
::
>
);
static
<
>
(
<
description
::
>
);
static
<
>
(
<
description
::
>
);
static
<
>
(
<
description
::
>
);
};
class
:
public
,
public
<
>
{
public
:
struct
{
;
<
description
::
>
=
nullptr
;
()
{
}
(
,
<
description
::
>
)
:typeName(
)
, typeInfo(
)
{
}
};
struct
{
;
;
(){}
(
const
&
,
)
:typeInfo(
)
, propertyName(
)
{
}
};
struct
:
{
description
::
;
description
::
;
(){}
(
const
&
,
,
description
::
,
description
::
=
description
::
())
:
(
,
)
, instanceValue(
)
, propertyValue(
)
{
}
};
struct
{
<
workflow
::
>
;
<
description
::
>
;
;
;
};
typedef
collections
::
<
,
>
;
virtual
() =
0
;
virtual
void
();
virtual
void
(
const
&
,
collections
::
<
>&
);
virtual
void
(
const
&
,
collections
::
<
>&
);
virtual
void
(
const
&
,
collections
::
<
>&
);
virtual
<
>
(
const
&
);
virtual
bool
(
const
&
);
virtual
<
workflow
::
>
(
GuiResourcePrecompileContext
&
,
types
::
&
,
const
&
,
&
,
::
&
);
virtual
<
workflow
::
>
(
GuiResourcePrecompileContext
&
,
types
::
&
,
const
&
,
,
&
,
::
&
);
virtual
<
workflow
::
>
(
GuiResourcePrecompileContext
&
,
types
::
&
,
const
&
,
,
&
,
,
::
&
);
virtual
<
workflow
::
>
(
GuiResourcePrecompileContext
&
,
types
::
&
,
const
&
,
,
&
,
,
::
&
);
virtual
<
workflow
::
>
(
GuiResourcePrecompileContext
&
,
types
::
&
,
const
&
,
,
,
::
&
);
};
/***********************************************************************
Instance Binder
***********************************************************************/
class
:
public
,
public
<
>
{
public
:
virtual
() =
0
;
virtual
bool
ApplicableToConstructorArgument
() =
0
;
virtual
bool
() =
0
;
virtual
<
workflow
::
>
GenerateConstructorArgument
(
GuiResourcePrecompileContext
&
,
types
::
&
,
*
,
const
::
&
,
<
>
,
const
&
,
,
::
&
) =
0
;
virtual
<
workflow
::
>
(
GuiResourcePrecompileContext
&
,
types
::
&
,
,
description
::
*
,
*
,
const
::
&
,
<
>
,
const
&
,
,
::
&
) =
0
;
};
class
:
public
,
public
<
>
{
public
:
virtual
() =
0
;
virtual
<
workflow
::
>
(
GuiResourcePrecompileContext
&
,
types
::
&
,
,
description
::
*
,
const
&
,
,
::
&
) =
0
;
};
class
:
public
,
public
<
>
{
public
:
virtual
bool
(
const
::
&
,
description
::
*
) =
0
;
virtual
description
::
*
(
const
::
&
,
description
::
*
) =
0
;
virtual
<
workflow
::
>
(
GuiResourcePrecompileContext
&
,
types
::
&
,
const
::
&
,
description
::
*
,
<
workflow
::
>
,
,
::
&
) =
0
;
};
/***********************************************************************
Instance Loader Manager
***********************************************************************/
class
IGuiInstanceLoaderManager
:
public
,
public
<
IGuiInstanceLoaderManager
>
{
public
:
virtual
bool
(
<
>
) =
0
;
virtual
*
(
) =
0
;
virtual
bool
(
<
>
) =
0
;
virtual
*
(
) =
0
;
virtual
bool
(
<
>
) =
0
;
virtual
*
(
const
::
&
,
description
::
*
) =
0
;
virtual
bool
(
,
<
>
) =
0
;
virtual
bool
(
<
>
) =
0
;
virtual
*
(
) =
0
;
virtual
*
(
*
) =
0
;
virtual
<
description
::
>
(
) =
0
;
virtual
void
(
collections
::
<
>&
) =
0
;
virtual
GetParentTypeForVirtualType
(
) =
0
;
virtual
void
() =
0
;
};
extern
IGuiInstanceLoaderManager
*
();
/***********************************************************************
Helper Functions
***********************************************************************/
extern
void
(
const
&
,
collections
::
<
>&
);
extern
void
(
const
&
,
collections
::
<
>&
);
}
}
#endif