#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORREFLECTION
#define VCZH_REFLECTION_GUITYPEDESCRIPTORREFLECTION
#include "GuiTypeDescriptorMacros.h"
namespace
{
namespace
{
namespace
{
#define REFLECTION_PREDEFINED_PRIMITIVE_TYPES(F)\
F(vuint8_t) \
F(vuint16_t) \
F(vuint32_t) \
F(vuint64_t) \
F(vint8_t) \
F(vint16_t) \
F(vint32_t) \
F(vint64_t) \
F(float) \
F(double) \
F(bool) \
F(wchar_t) \
F(WString) \
F(Locale) \
#define REFLECTION_PREDEFINED_SERIALIZABLE_TYPES(F)\
REFLECTION_PREDEFINED_PRIMITIVE_TYPES(F) \
F(DateTime) \
#ifndef VCZH_DEBUG_NO_REFLECTION
#define REFLECTION_PREDEFINED_COMPLEX_TYPES(F, VOID_TYPE)\
F(VOID_TYPE) \
F(VoidValue) \
F(IDescriptable) \
F(DescriptableObject) \
F(DateTime) \
F(IValueEnumerator) \
F(IValueEnumerable) \
F(IValueReadonlyList) \
F(IValueList) \
F(IValueObservableList) \
F(IValueReadonlyDictionary) \
F(IValueDictionary) \
F(IValueInterfaceProxy) \
F(IValueFunctionProxy) \
F(IValueSubscription) \
F(IValueCallStack) \
F(IValueException) \
F(IBoxedValue) \
F(IBoxedValue::CompareResult) \
F(IValueType) \
F(IEnumType) \
F(ISerializableType) \
F(ITypeInfo) \
F(ITypeInfo::Decorator) \
F(IMemberInfo) \
F(IEventHandler) \
F(IEventInfo) \
F(IPropertyInfo) \
F(IParameterInfo) \
F(IMethodInfo) \
F(IMethodGroupInfo) \
F(TypeDescriptorFlags) \
F(ITypeDescriptor) \
DECL_TYPE_INFO(Value)
template
<>
struct
<
>{
static
const
; };
REFLECTION_PREDEFINED_PRIMITIVE_TYPES(DECL_TYPE_INFO)
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
float
>{
static
const
; };
template
<>
struct
<
double
>{
static
const
; };
template
<>
struct
<
bool
>{
static
const
; };
template
<>
struct
<
wchar_t
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
REFLECTION_PREDEFINED_COMPLEX_TYPES(DECL_TYPE_INFO, void)
template
<>
struct
<
void
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
::
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
::
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
template
<>
struct
<
>{
static
const
; };
#endif
#define DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(TYPENAME)\
template<>\
struct TypedValueSerializerProvider<TYPENAME>\
{\
static TYPENAME GetDefaultValue();\
static bool Serialize(const TYPENAME& input, WString& output);\
static bool Deserialize(const WString& input, TYPENAME& output);\
static IBoxedValue::CompareResult Compare(const TYPENAME& a, const TYPENAME& b);\
};\
REFLECTION_PREDEFINED_SERIALIZABLE_TYPES(DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER)
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
template
<>
struct
TypedValueSerializerProvider
<
float
> {
static
float
();
static
bool
(
const
float
&
,
&
);
static
bool
(
const
&
,
float
&
);
static
::
(
const
float
&
,
const
float
&
); };
template
<>
struct
TypedValueSerializerProvider
<
double
> {
static
double
();
static
bool
(
const
double
&
,
&
);
static
bool
(
const
&
,
double
&
);
static
::
(
const
double
&
,
const
double
&
); };
template
<>
struct
TypedValueSerializerProvider
<
bool
> {
static
bool
();
static
bool
(
const
bool
&
,
&
);
static
bool
(
const
&
,
bool
&
);
static
::
(
const
bool
&
,
const
bool
&
); };
template
<>
struct
TypedValueSerializerProvider
<
wchar_t
> {
static
wchar_t
();
static
bool
(
const
wchar_t
&
,
&
);
static
bool
(
const
&
,
wchar_t
&
);
static
::
(
const
wchar_t
&
,
const
wchar_t
&
); };
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
template
<>
struct
TypedValueSerializerProvider
<
> {
static
();
static
bool
(
const
&
,
&
);
static
bool
(
const
&
,
&
);
static
::
(
const
&
,
const
&
); };
#undef DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
#pragma warning(push)
#pragma warning(disable:
4250
)
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueEnumerator)
template
<>
class
<
> :
public
<
> {
typedef
_interface_proxy_InterfaceType
;
public
:
static
<
>
(
<
>
) {
auto
=
new
<
>();
obj
->
(
);
return
obj
; }
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetCurrent);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetIndex);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
bool
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(Next);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
END_INTERFACE_PROXY(IValueEnumerator)
};
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueEnumerable)
template
<>
class
<
> :
public
<
> {
typedef
_interface_proxy_InterfaceType
;
public
:
static
<
>
(
<
>
) {
auto
=
new
<
>();
obj
->
(
);
return
obj
; }
<
>
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(CreateEnumerator);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
END_INTERFACE_PROXY(IValueEnumerable)
};
BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueReadonlyList, IValueEnumerable)
template
<>
class
<
> :
public
<
,
> {
typedef
_interface_proxy_InterfaceType
;
public
:
static
<
>
(
<
>
) {
auto
=
new
<
>();
obj
->
(
);
return
obj
; }
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetCount);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
(
)
override
{
INVOKEGET_INTERFACE_PROXY(Get, index);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
))>(
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
(
))>(
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
)))));
}
bool
(
const
&
)
override
{
INVOKEGET_INTERFACE_PROXY(Contains, value);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
))>(
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
(
))>(
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
)))));
}
(
const
&
)
override
{
INVOKEGET_INTERFACE_PROXY(IndexOf, value);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
))>(
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
(
))>(
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
)))));
}
END_INTERFACE_PROXY(IValueReadonlyList)
};
BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueList, IValueReadonlyList)
template
<>
class
<
> :
public
<
,
> {
typedef
_interface_proxy_InterfaceType
;
public
:
static
<
>
(
<
>
) {
auto
=
new
<
>();
obj
->
(
);
return
obj
; }
void
(
,
const
&
)
override
{
INVOKE_INTERFACE_PROXY(Set, index, value);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
,
))>(
,
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
))));
}
(
const
&
)
override
{
INVOKEGET_INTERFACE_PROXY(Add, value);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
))>(
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
(
))>(
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
)))));
}
(
,
const
&
)
override
{
INVOKEGET_INTERFACE_PROXY(Insert, index, value);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
,
))>(
,
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
(
,
))>(
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
)))));
}
bool
(
const
&
)
override
{
INVOKEGET_INTERFACE_PROXY(Remove, value);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
))>(
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
(
))>(
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
)))));
}
bool
(
)
override
{
INVOKEGET_INTERFACE_PROXY(RemoveAt, index);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
))>(
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
(
))>(
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
)))));
}
void
()
override
{
INVOKE_INTERFACE_PROXY_NOPARAMS(Clear);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
(
_interface_proxy_methodInfo
,
::
());
}
END_INTERFACE_PROXY(IValueList)
};
BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueObservableList, IValueList)
template
<>
class
<
> :
public
<
,
> {
typedef
_interface_proxy_InterfaceType
;
public
:
static
<
>
(
<
>
) {
auto
=
new
<
>();
obj
->
(
);
return
obj
; }
END_INTERFACE_PROXY(IValueObservableList)
};
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueReadonlyDictionary)
template
<>
class
<
> :
public
<
> {
typedef
_interface_proxy_InterfaceType
;
public
:
static
<
>
(
<
>
) {
auto
=
new
<
>();
obj
->
(
);
return
obj
; }
<
>
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetKeys);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
<
>
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetValues);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetCount);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
(
const
&
)
override
{
INVOKEGET_INTERFACE_PROXY(Get, key);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
))>(
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
(
))>(
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
)))));
}
END_INTERFACE_PROXY(IValueReadonlyDictionary)
};
BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueDictionary, IValueReadonlyDictionary)
template
<>
class
<
> :
public
<
,
> {
typedef
_interface_proxy_InterfaceType
;
public
:
static
<
>
(
<
>
) {
auto
=
new
<
>();
obj
->
(
);
return
obj
; }
void
(
const
&
,
const
&
)
override
{
INVOKE_INTERFACE_PROXY(Set, key, value);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
,
))>(
,
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
))));
}
bool
(
const
&
)
override
{
INVOKEGET_INTERFACE_PROXY(Remove, key);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
(
))>(
))) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
(
))>(
(
_interface_proxy_methodInfo
,
::
(
collections
::
((
collections
::
<
>&)(
()
)))));
}
void
()
override
{
INVOKE_INTERFACE_PROXY_NOPARAMS(Clear);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
(
_interface_proxy_methodInfo
,
::
());
}
END_INTERFACE_PROXY(IValueDictionary)
};
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueSubscription)
template
<>
class
<
> :
public
<
> {
typedef
_interface_proxy_InterfaceType
;
public
:
static
<
>
(
<
>
) {
auto
=
new
<
>();
obj
->
(
);
return
obj
; }
bool
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(Open);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
bool
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(Update);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
bool
()
override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(Close);
static
*
_interface_proxy_typeDescriptor
=
nullptr
;
static
*
_interface_proxy_methodInfo
=
nullptr
;
if
(
_interface_proxy_typeDescriptor
!=
static_cast
<
*>(
this
)->
()) {
_interface_proxy_typeDescriptor
=
static_cast
<
*>(
this
)->
();
do
{
if
(!(
_interface_proxy_typeDescriptor
!=
nullptr
))
throw
(
L"Internal error: The type of this interface has not been registered."
);}
while
(
0
);
auto
=
dynamic_cast
<
::
*>(
_interface_proxy_typeDescriptor
);
do
{
if
(!(
impl
!=
nullptr
))
throw
(
L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy."
);}
while
(
0
);
auto
= (
decltype
(
<
_interface_proxy_InterfaceType
,
decltype
(
())>())) &
_interface_proxy_InterfaceType
::
;
MethodPointerBinaryDataRetriver
<
decltype
(
_interface_proxy_method
)>
(
_interface_proxy_method
);
_interface_proxy_methodInfo
=
impl
->
(
binaryData
.
()); }
return
<
decltype
(
())>(
(
_interface_proxy_methodInfo
,
::
()));
}
END_INTERFACE_PROXY(IValueSubscription)
};
#pragma warning(pop)
#endif
extern
ITypeDescriptor_GetTypeDescriptorCount
();
extern
*
ITypeDescriptor_GetTypeDescriptor
(
);
extern
*
ITypeDescriptor_GetTypeDescriptor
(
const
&
);
extern
*
ITypeDescriptor_GetTypeDescriptor
(
const
&
);
extern
bool
();
}
}
}
#endif