#include <limits.h>
#include <float.h>
#include "GuiTypeDescriptorReflection.h"
#include <VlppRegex.h>
namespace
{
using
namespace
collections
;
using
namespace
regex
;
namespace
{
namespace
{
#ifndef VCZH_DEBUG_NO_REFLECTION
IMPL_TYPE_INFO_RENAME(void, system::Void)
const
<
void
>::
= {
L"system::Void"
,
L"void"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::VoidValue, system::Void)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::Void"
,
L"vl::reflection::description::VoidValue"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::IDescriptable, system::Interface)
const
<
vl
::
reflection
::
>::
= {
L"system::Interface"
,
L"vl::reflection::IDescriptable"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::DescriptableObject, system::ReferenceType)
const
<
vl
::
reflection
::
>::
= {
L"system::ReferenceType"
,
L"vl::reflection::DescriptableObject"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::Value, system::Object)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::Object"
,
L"vl::reflection::description::Value"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::vuint8_t, system::UInt8)
const
<
vl
::
>::
= {
L"system::UInt8"
,
L"vl::vuint8_t"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::vuint16_t, system::UInt16)
const
<
vl
::
>::
= {
L"system::UInt16"
,
L"vl::vuint16_t"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::vuint32_t, system::UInt32)
const
<
vl
::
>::
= {
L"system::UInt32"
,
L"vl::vuint32_t"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::vuint64_t, system::UInt64)
const
<
vl
::
>::
= {
L"system::UInt64"
,
L"vl::vuint64_t"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::vint8_t, system::Int8)
const
<
vl
::
>::
= {
L"system::Int8"
,
L"vl::vint8_t"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::vint16_t, system::Int16)
const
<
vl
::
>::
= {
L"system::Int16"
,
L"vl::vint16_t"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::vint32_t, system::Int32)
const
<
vl
::
>::
= {
L"system::Int32"
,
L"vl::vint32_t"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::vint64_t, system::Int64)
const
<
vl
::
>::
= {
L"system::Int64"
,
L"vl::vint64_t"
,
::
};
IMPL_TYPE_INFO_RENAME(float, system::Single)
const
<
float
>::
= {
L"system::Single"
,
L"float"
,
::
};
IMPL_TYPE_INFO_RENAME(double, system::Double)
const
<
double
>::
= {
L"system::Double"
,
L"double"
,
::
};
IMPL_TYPE_INFO_RENAME(bool, system::Boolean)
const
<
bool
>::
= {
L"system::Boolean"
,
L"bool"
,
::
};
IMPL_TYPE_INFO_RENAME(wchar_t, system::Char)
const
<
wchar_t
>::
= {
L"system::Char"
,
L"wchar_t"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::WString, system::String)
const
<
vl
::
>::
= {
L"system::String"
,
L"vl::WString"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::DateTime, system::DateTime)
const
<
vl
::
>::
= {
L"system::DateTime"
,
L"vl::DateTime"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::Locale, system::Locale)
const
<
vl
::
>::
= {
L"system::Locale"
,
L"vl::Locale"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueEnumerator, system::Enumerator)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::Enumerator"
,
L"vl::reflection::description::IValueEnumerator"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueEnumerable, system::Enumerable)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::Enumerable"
,
L"vl::reflection::description::IValueEnumerable"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueReadonlyList, system::ReadonlyList)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::ReadonlyList"
,
L"vl::reflection::description::IValueReadonlyList"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueList, system::List)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::List"
,
L"vl::reflection::description::IValueList"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueObservableList, system::ObservableList)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::ObservableList"
,
L"vl::reflection::description::IValueObservableList"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueReadonlyDictionary, system::ReadonlyDictionary)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::ReadonlyDictionary"
,
L"vl::reflection::description::IValueReadonlyDictionary"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueDictionary, system::Dictionary)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::Dictionary"
,
L"vl::reflection::description::IValueDictionary"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueInterfaceProxy, system::InterfaceProxy)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::InterfaceProxy"
,
L"vl::reflection::description::IValueInterfaceProxy"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueFunctionProxy, system::Function)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::Function"
,
L"vl::reflection::description::IValueFunctionProxy"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueSubscription, system::Subscription)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::Subscription"
,
L"vl::reflection::description::IValueSubscription"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueCallStack, system::CallStack)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::CallStack"
,
L"vl::reflection::description::IValueCallStack"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueException, system::Exception)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::Exception"
,
L"vl::reflection::description::IValueException"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IBoxedValue, system::reflection::BoxedValue)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::BoxedValue"
,
L"vl::reflection::description::IBoxedValue"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IBoxedValue::CompareResult, system::reflection::ValueType::CompareResult)
const
<
vl
::
reflection
::
description
::
::
>::
= {
L"system::reflection::ValueType::CompareResult"
,
L"vl::reflection::description::IBoxedValue::CompareResult"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueType, system::reflection::ValueType)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::ValueType"
,
L"vl::reflection::description::IValueType"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IEnumType, system::reflection::EnumType)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::EnumType"
,
L"vl::reflection::description::IEnumType"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::ISerializableType, system::reflection::SerializableType)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::SerializableType"
,
L"vl::reflection::description::ISerializableType"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::ITypeInfo, system::reflection::TypeInfo)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::TypeInfo"
,
L"vl::reflection::description::ITypeInfo"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::ITypeInfo::Decorator, system::reflection::TypeInfo::Decorator)
const
<
vl
::
reflection
::
description
::
::
>::
= {
L"system::reflection::TypeInfo::Decorator"
,
L"vl::reflection::description::ITypeInfo::Decorator"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IMemberInfo, system::reflection::MemberInfo)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::MemberInfo"
,
L"vl::reflection::description::IMemberInfo"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IEventHandler, system::reflection::EventHandler)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::EventHandler"
,
L"vl::reflection::description::IEventHandler"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IEventInfo, system::reflection::EventInfo)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::EventInfo"
,
L"vl::reflection::description::IEventInfo"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IPropertyInfo, system::reflection::PropertyInfo)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::PropertyInfo"
,
L"vl::reflection::description::IPropertyInfo"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IParameterInfo, system::reflection::ParameterInfo)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::ParameterInfo"
,
L"vl::reflection::description::IParameterInfo"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IMethodInfo, system::reflection::MethodInfo)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::MethodInfo"
,
L"vl::reflection::description::IMethodInfo"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IMethodGroupInfo, system::reflection::MethodGroupInfo)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::MethodGroupInfo"
,
L"vl::reflection::description::IMethodGroupInfo"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::TypeDescriptorFlags, system::reflection::TypeDescriptorFlags)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::TypeDescriptorFlags"
,
L"vl::reflection::description::TypeDescriptorFlags"
,
::
};
IMPL_TYPE_INFO_RENAME(vl::reflection::description::ITypeDescriptor, system::reflection::TypeDescriptor)
const
<
vl
::
reflection
::
description
::
>::
= {
L"system::reflection::TypeDescriptor"
,
L"vl::reflection::description::ITypeDescriptor"
,
::
};
#endif
#define DEFINE_COMPARE(TYPENAME)\
IBoxedValue::CompareResult TypedValueSerializerProvider<TYPENAME>::Compare(const TYPENAME& a, const TYPENAME& b)\
{\
if (a < b) return IBoxedValue::Smaller;\
if (a > b) return IBoxedValue::Greater;\
return IBoxedValue::Equal;\
}\
REFLECTION_PREDEFINED_PRIMITIVE_TYPES(DEFINE_COMPARE)
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
float
>::
(
const
float
&
,
const
float
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
double
>::
(
const
double
&
,
const
double
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
bool
>::
(
const
bool
&
,
const
bool
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
wchar_t
>::
(
const
wchar_t
&
,
const
wchar_t
&
) {
if
(
<
)
return
::
;
if
(
>
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
) {
if
(
)
return
::
;
if
(
)
return
::
;
return
::
; }
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
) {
if
(
)
return
::
;
if
(
)
return
::
;
return
::
; }
#undef DEFINE_COMPARE
TypedValueSerializerProvider
<
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
(
);
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
bool
=
false
;
=
(
,
success
);
if
(!
success
)
return
false
;
if (result>_UI8_MAX) return false;
if
(
result
>
0xffui8
)
return
false
;
= (
)
result
;
return
true
;
}
TypedValueSerializerProvider
<
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
(
);
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
bool
=
false
;
=
(
,
success
);
if
(!
success
)
return
false
;
if (result>_UI16_MAX) return false;
if
(
result
>
0xffffui16
)
return
false
;
= (
)
result
;
return
true
;
}
TypedValueSerializerProvider
<
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
(
);
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
bool
=
false
;
=
(
,
success
);
if
(!
success
)
return
false
;
if (result>_UI32_MAX) return false;
if
(
result
>
0xffffffffui32
)
return
false
;
= (
)
result
;
return
true
;
}
TypedValueSerializerProvider
<
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
(
);
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
bool
=
false
;
=
(
,
success
);
if
(!
success
)
return
false
;
=
result
;
return
true
;
}
TypedValueSerializerProvider
<
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
(
);
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
bool
=
false
;
=
(
,
success
);
if
(!
success
)
return
false
;
if (result<_I8_MIN || result>_I8_MAX) return false;
if
(
result
<(-
127i8
-
1
) ||
result
>
127i8
)
return
false
;
= (
)
result
;
return
true
;
}
TypedValueSerializerProvider
<
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
(
);
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
bool
=
false
;
=
(
,
success
);
if
(!
success
)
return
false
;
if (result<_I16_MIN || result>_I16_MAX) return false;
if
(
result
<(-
32767i16
-
1
) ||
result
>
32767i16
)
return
false
;
= (
)
result
;
return
true
;
}
TypedValueSerializerProvider
<
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
(
);
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
bool
=
false
;
=
(
,
success
);
if
(!
success
)
return
false
;
if (result<_I32_MIN || result>_I32_MAX) return false;
if
(
result
<(-
2147483647i32
-
1
) ||
result
>
2147483647i32
)
return
false
;
= (
)
result
;
return
true
;
}
TypedValueSerializerProvider
<
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
(
);
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
bool
=
false
;
=
(
,
success
);
if
(!
success
)
return
false
;
=
result
;
return
true
;
}
float
TypedValueSerializerProvider
<
float
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
float
>::
(
const
float
&
,
&
)
{
(
);
if
(
==
L"-0"
)
=
L"0"
;
return
true
;
}
bool
TypedValueSerializerProvider
<
float
>::
(
const
&
,
float
&
)
{
bool
=
false
;
double
=
(
,
success
);
if
(!
success
)
return
false
;
if (result<-FLT_MAX || result>FLT_MAX) return false;
if
(
result
<-
3.402823466e+38F
||
result
>
3.402823466e+38F
)
return
false
;
= (
float
)
result
;
return
true
;
}
double
TypedValueSerializerProvider
<
double
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
double
>::
(
const
double
&
,
&
)
{
(
);
if
(
==
L"-0"
)
=
L"0"
;
return
true
;
}
bool
TypedValueSerializerProvider
<
double
>::
(
const
&
,
double
&
)
{
bool
=
false
;
double
=
(
,
success
);
if
(!
success
)
return
false
;
=
result
;
return
true
;
}
wchar_t
TypedValueSerializerProvider
<
wchar_t
>::
()
{
return
0
;
}
bool
TypedValueSerializerProvider
<
wchar_t
>::
(
const
wchar_t
&
,
&
)
{
?
(
) :
L""
;
return
true
;
}
bool
TypedValueSerializerProvider
<
wchar_t
>::
(
const
&
,
wchar_t
&
)
{
if
(
.
()>
1
)
return
false
;
=
.
() ==
0
?
0
:
0
];
return
true
;
}
TypedValueSerializerProvider
<
>::
()
{
return
L""
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
;
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
;
return
true
;
}
bool
TypedValueSerializerProvider
<
bool
>::
()
{
return
false
;
}
bool
TypedValueSerializerProvider
<
bool
>::
(
const
bool
&
,
&
)
{
=
?
L"true"
:
L"false"
;
return
true
;
}
bool
TypedValueSerializerProvider
<
bool
>::
(
const
&
,
bool
&
)
{
=
L"true"
;
return
L"true"
||
==
L"false"
;
}
TypedValueSerializerProvider
<
>::
()
{
return
();
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
.
();
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
(
);
return
true
;
}
BEGIN_GLOBAL_STORAGE_CLASS(DateTimeSerializerStorage)
class
DateTimeSerializerStorage
:
public
vl
::
{
public
:
DateTimeSerializerStorage
() :
vl
::
(
L"DateTimeSerializerStorage"
) {
(); }
~
DateTimeSerializerStorage
() {
if
(!
())
(); }
*
=
nullptr
;
INITIALIZE_GLOBAL_STORAGE_CLASS
=
new
(
L"(<Y>/d/d/d/d)-(<M>/d/d)-(<D>/d/d) (<h>/d/d):(<m>/d/d):(<s>/d/d).(<ms>/d/d/d)"
);
FINALIZE_GLOBAL_STORAGE_CLASS
delete
;
=
nullptr
;
END_GLOBAL_STORAGE_CLASS(DateTimeSerializerStorage)
} };
DateTimeSerializerStorage
&
GetDateTimeSerializerStorage
() {
static
DateTimeSerializerStorage
__global_storage_DateTimeSerializerStorage
;
return
__global_storage_DateTimeSerializerStorage
; }
TypedValueSerializerProvider
<
>::
()
{
return
();
}
(
,
)
{
=
(
);
while
(
result
.
() <
)
{
result
=
L"0"
+
result
;
}
return
result
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
=
(
.
,
4
) +
L"-"
+
(
.
,
2
) +
L"-"
+
(
.
,
2
) +
L" "
+
(
.
,
2
) +
L":"
+
(
.
,
2
) +
L":"
+
(
.
,
2
) +
L"."
+
(
.
,
3
);
return
true
;
}
bool
TypedValueSerializerProvider
<
>::
(
const
&
,
&
)
{
<
>
=
GetDateTimeSerializerStorage
().
->
(
);
if
(!
match
)
return
false
;
if
(!
match
())
return
false
;
if
(
match
().
() !=
0
)
return
false
;
if
(
match
().
() !=
.
())
return
false
;
=
(
match
()[
L"Y"
].Get(
0
).
());
=
(
match
()[
L"M"
].Get(
0
).
());
=
(
match
()[
L"D"
].Get(
0
).
());
=
(
match
()[
L"h"
].Get(
0
).
());
=
(
match
()[
L"m"
].Get(
0
).
());
=
(
match
()[
L"s"
].Get(
0
).
());
=
(
match
()[
L"ms"
].Get(
0
).
());
::
(
year
,
month
,
day
,
hour
,
minute
,
second
,
milliseconds
);
return
true
;
}
::
TypedValueSerializerProvider
<
>::
(
const
&
,
const
&
)
{
auto
=
.
;
auto
=
.
;
if
(
ta
<
tb
)
return
::
;
if
(
ta
>
tb
)
return
::
;
return
::
;
}
#ifndef VCZH_DEBUG_NO_REFLECTION
ITypeDescriptor_GetTypeDescriptorCount
()
{
return
()->
();
}
*
ITypeDescriptor_GetTypeDescriptor
(
)
{
return
()->
(
);
}
*
ITypeDescriptor_GetTypeDescriptor
(
const
&
)
{
return
()->
(
);
}
#else
vint ITypeDescriptor_GetTypeDescriptorCount()
{
return 0;
}
ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(vint index)
{
return nullptr;
}
ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const WString& name)
{
return nullptr;
}
#endif
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
*
ITypeDescriptor_GetTypeDescriptor
(
const
&
)
{
return
.
();
}
#else
ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const Value& value)
{
return nullptr;
}
#endif
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
#define _ ,
template
<>
struct
CustomTypeDescriptorSelector
<
>
{
public
:
class
:
public
{
public
:
()
:
(
::
, &
<
>::
)
{
<
>::
SetAssociatedTypeDescriptor
(
this
);
}
~
CustomTypeDescriptorImpl
()
{
<
>::
SetAssociatedTypeDescriptor
(
0
);
}
protected
:
void
()
override
{
}
};
};
BEGIN_STRUCT_MEMBER_FLAG(VoidValue, TypeDescriptorFlags::Primitive)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
<
,
::
> {
typedef
;
protected
:
void
()
override
{
END_STRUCT_MEMBER(VoidValue)
} }; };
BEGIN_INTERFACE_MEMBER_NOPROXY_FLAG(IDescriptable, TypeDescriptorFlags::IDescriptable)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
END_INTERFACE_MEMBER(IDescriptable)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_STRUCT_MEMBER(DateTime)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
<
,
::
> {
typedef
;
protected
:
void
()
override
{
new
<
>();
new
<
>();
STRUCT_MEMBER(year)
.
(
L"year"
,
new
<
decltype
(((
*)
0
)->
)>(
this
, &
::
,
L"year"
));
STRUCT_MEMBER(month)
.
(
L"month"
,
new
<
decltype
(((
*)
0
)->
)>(
this
, &
::
,
L"month"
));
STRUCT_MEMBER(dayOfWeek)
.
(
L"dayOfWeek"
,
new
<
decltype
(((
*)
0
)->
)>(
this
, &
::
,
L"dayOfWeek"
));
STRUCT_MEMBER(day)
.
(
L"day"
,
new
<
decltype
(((
*)
0
)->
)>(
this
, &
::
,
L"day"
));
STRUCT_MEMBER(hour)
.
(
L"hour"
,
new
<
decltype
(((
*)
0
)->
)>(
this
, &
::
,
L"hour"
));
STRUCT_MEMBER(minute)
.
(
L"minute"
,
new
<
decltype
(((
*)
0
)->
)>(
this
, &
::
,
L"minute"
));
STRUCT_MEMBER(second)
.
(
L"second"
,
new
<
decltype
(((
*)
0
)->
)>(
this
, &
::
,
L"second"
));
STRUCT_MEMBER(milliseconds)
.
(
L"milliseconds"
,
new
<
decltype
(((
*)
0
)->
)>(
this
, &
::
,
L"milliseconds"
));
STRUCT_MEMBER(totalMilliseconds)
.
(
L"totalMilliseconds"
,
new
<
decltype
(((
*)
0
)->
)>(
this
, &
::
,
L"totalMilliseconds"
));
STRUCT_MEMBER(filetime)
.
(
L"filetime"
,
new
<
decltype
(((
*)
0
)->
)>(
this
, &
::
,
L"filetime"
));
END_STRUCT_MEMBER(DateTime)
} }; };
BEGIN_INTERFACE_MEMBER(IValueEnumerator)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{ {
const
wchar_t
*
[]={
L"proxy"
};
(
new
CustomStaticMethodInfoImpl
<
decltype
(
<
>::
(
nullptr
))(
<
>)>(
parameterNames
, (
<
decltype
(
<
>::
(
nullptr
))(
<
>)>)&::
vl
::
reflection
::
description
::
<
>::
,
L"::"
L"vl::reflection::description::ValueInterfaceProxy<IValueEnumerator>::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ValueInterfaceProxy<IValueEnumerator>::Create"
L")"
) ); }
CLASS_MEMBER_PROPERTY_READONLY_FAST(Current)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetCurrent"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Current"
,
dynamic_cast
<
*>(
(
L"GetCurrent"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(Index)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetIndex"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Index"
,
dynamic_cast
<
*>(
(
L"GetIndex"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_METHOD(Next, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Next"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IValueEnumerator)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER(IValueEnumerable)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{ {
const
wchar_t
*
[]={
L"proxy"
};
(
new
CustomStaticMethodInfoImpl
<
decltype
(
<
>::
(
nullptr
))(
<
>)>(
parameterNames
, (
<
decltype
(
<
>::
(
nullptr
))(
<
>)>)&::
vl
::
reflection
::
description
::
<
>::
,
L"::"
L"vl::reflection::description::ValueInterfaceProxy<IValueEnumerable>::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ValueInterfaceProxy<IValueEnumerable>::Create"
L")"
) ); }
CLASS_MEMBER_METHOD(CreateEnumerator, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"CreateEnumerator"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IValueEnumerable)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER(IValueReadonlyList)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{ {
const
wchar_t
*
[]={
L"proxy"
};
(
new
CustomStaticMethodInfoImpl
<
decltype
(
<
>::
(
nullptr
))(
<
>)>(
parameterNames
, (
<
decltype
(
<
>::
(
nullptr
))(
<
>)>)&::
vl
::
reflection
::
description
::
<
>::
,
L"::"
L"vl::reflection::description::ValueInterfaceProxy<IValueReadonlyList>::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ValueInterfaceProxy<IValueReadonlyList>::Create"
L")"
) ); }
CLASS_MEMBER_BASE(IValueEnumerable)
CLASS_MEMBER_PROPERTY_READONLY_FAST(Count)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Count"
,
dynamic_cast
<
*>(
(
L"GetCount"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_METHOD(Get, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Get"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Contains, { L"value" })
{
const
wchar_t
*
[]={
L"value"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Contains"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(IndexOf, { L"value" })
{
const
wchar_t
*
[]={
L"value"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"IndexOf"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IValueReadonlyList)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER(IValueList)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{ {
const
wchar_t
*
[]={
L"proxy"
};
(
new
CustomStaticMethodInfoImpl
<
decltype
(
<
>::
(
nullptr
))(
<
>)>(
parameterNames
, (
<
decltype
(
<
>::
(
nullptr
))(
<
>)>)&::
vl
::
reflection
::
description
::
<
>::
,
L"::"
L"vl::reflection::description::ValueInterfaceProxy<IValueList>::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ValueInterfaceProxy<IValueList>::Create"
L")"
) ); }
CLASS_MEMBER_BASE(IValueReadonlyList)
CLASS_MEMBER_EXTERNALCTOR(Ptr<IValueList>(), NO_PARAMETER, vl::reflection::description::IValueList::Create)
{
const
wchar_t
*
[]={
L""
};
(
new
CustomStaticMethodInfoImpl
<
<
>()>(
parameterNames
, (
<
<
>()>)&::
vl
::
reflection
::
description
::
::
,
L"::"
L"vl::reflection::description::IValueList::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::IValueList::Create"
L")"
) ); }
CLASS_MEMBER_EXTERNALCTOR(Ptr<IValueList>(Ptr<IValueReadonlyList>), { L"values" }, vl::reflection::description::IValueList::Create)
{
const
wchar_t
*
[]={
L"values"
};
(
new
CustomStaticMethodInfoImpl
<
<
>(
<
>)>(
parameterNames
, (
<
<
>(
<
>)>)&::
vl
::
reflection
::
description
::
::
,
L"::"
L"vl::reflection::description::IValueList::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::IValueList::Create"
L")"
) ); }
CLASS_MEMBER_METHOD(Set, { L"index" _ L"value" })
{
const
wchar_t
*
[]={
L"index"
,
L"value"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Set"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Add, { L"value" })
{
const
wchar_t
*
[]={
L"value"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Add"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Insert, { L"index" _ L"value" })
{
const
wchar_t
*
[]={
L"index"
,
L"value"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Insert"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Remove, { L"value" })
{
const
wchar_t
*
[]={
L"value"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Remove"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(RemoveAt, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"RemoveAt"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Clear, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Clear"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IValueList)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER(IValueObservableList)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{ {
const
wchar_t
*
[]={
L"proxy"
};
(
new
CustomStaticMethodInfoImpl
<
decltype
(
<
>::
(
nullptr
))(
<
>)>(
parameterNames
, (
<
decltype
(
<
>::
(
nullptr
))(
<
>)>)&::
vl
::
reflection
::
description
::
<
>::
,
L"::"
L"vl::reflection::description::ValueInterfaceProxy<IValueObservableList>::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ValueInterfaceProxy<IValueObservableList>::Create"
L")"
) ); }
CLASS_MEMBER_BASE(IValueList)
CLASS_MEMBER_EXTERNALCTOR(Ptr<IValueObservableList>(), NO_PARAMETER, vl::reflection::description::IValueObservableList::Create)
{
const
wchar_t
*
[]={
L""
};
(
new
CustomStaticMethodInfoImpl
<
<
>()>(
parameterNames
, (
<
<
>()>)&::
vl
::
reflection
::
description
::
::
,
L"::"
L"vl::reflection::description::IValueObservableList::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::IValueObservableList::Create"
L")"
) ); }
CLASS_MEMBER_EXTERNALCTOR(Ptr<IValueObservableList>(Ptr<IValueReadonlyList>), { L"values" }, vl::reflection::description::IValueObservableList::Create)
{
const
wchar_t
*
[]={
L"values"
};
(
new
CustomStaticMethodInfoImpl
<
<
>(
<
>)>(
parameterNames
, (
<
<
>(
<
>)>)&::
vl
::
reflection
::
description
::
::
,
L"::"
L"vl::reflection::description::IValueObservableList::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::IValueObservableList::Create"
L")"
) ); }
CLASS_MEMBER_EVENT(ItemChanged)
(
new
<
,
CustomEventFunctionTypeRetriver
<
decltype
(&
::
)>::
>(
this
,
L"ItemChanged"
, &
::
) );
END_INTERFACE_MEMBER(IValueObservableList)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER(IValueReadonlyDictionary)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{ {
const
wchar_t
*
[]={
L"proxy"
};
(
new
CustomStaticMethodInfoImpl
<
decltype
(
<
>::
(
nullptr
))(
<
>)>(
parameterNames
, (
<
decltype
(
<
>::
(
nullptr
))(
<
>)>)&::
vl
::
reflection
::
description
::
<
>::
,
L"::"
L"vl::reflection::description::ValueInterfaceProxy<IValueReadonlyDictionary>::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ValueInterfaceProxy<IValueReadonlyDictionary>::Create"
L")"
) ); }
CLASS_MEMBER_PROPERTY_READONLY_FAST(Keys)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetKeys"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Keys"
,
dynamic_cast
<
*>(
(
L"GetKeys"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(Values)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetValues"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Values"
,
dynamic_cast
<
*>(
(
L"GetValues"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(Count)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Count"
,
dynamic_cast
<
*>(
(
L"GetCount"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_METHOD(Get, { L"key" })
{
const
wchar_t
*
[]={
L"key"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Get"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IValueReadonlyDictionary)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER(IValueDictionary)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{ {
const
wchar_t
*
[]={
L"proxy"
};
(
new
CustomStaticMethodInfoImpl
<
decltype
(
<
>::
(
nullptr
))(
<
>)>(
parameterNames
, (
<
decltype
(
<
>::
(
nullptr
))(
<
>)>)&::
vl
::
reflection
::
description
::
<
>::
,
L"::"
L"vl::reflection::description::ValueInterfaceProxy<IValueDictionary>::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ValueInterfaceProxy<IValueDictionary>::Create"
L")"
) ); }
CLASS_MEMBER_BASE(IValueReadonlyDictionary)
CLASS_MEMBER_EXTERNALCTOR(Ptr<IValueDictionary>(), NO_PARAMETER, vl::reflection::description::IValueDictionary::Create)
{
const
wchar_t
*
[]={
L""
};
(
new
CustomStaticMethodInfoImpl
<
<
>()>(
parameterNames
, (
<
<
>()>)&::
vl
::
reflection
::
description
::
::
,
L"::"
L"vl::reflection::description::IValueDictionary::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::IValueDictionary::Create"
L")"
) ); }
CLASS_MEMBER_EXTERNALCTOR(Ptr<IValueDictionary>(Ptr<IValueReadonlyDictionary>), { L"values" }, vl::reflection::description::IValueDictionary::Create)
{
const
wchar_t
*
[]={
L"values"
};
(
new
CustomStaticMethodInfoImpl
<
<
>(
<
>)>(
parameterNames
, (
<
<
>(
<
>)>)&::
vl
::
reflection
::
description
::
::
,
L"::"
L"vl::reflection::description::IValueDictionary::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::IValueDictionary::Create"
L")"
) ); }
CLASS_MEMBER_METHOD(Set, { L"key" _ L"value" })
{
const
wchar_t
*
[]={
L"key"
,
L"value"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Set"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Remove, { L"key" })
{
const
wchar_t
*
[]={
L"key"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Remove"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Clear, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Clear"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IValueDictionary)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IValueInterfaceProxy)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_METHOD(Invoke, { L"methodInfo" _ L"arguments" })
{
const
wchar_t
*
[]={
L"methodInfo"
,
L"arguments"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Invoke"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IValueInterfaceProxy)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IValueFunctionProxy)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_METHOD(Invoke, { L"arguments" })
{
const
wchar_t
*
[]={
L"arguments"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Invoke"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IValueFunctionProxy)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER(IValueSubscription)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{ {
const
wchar_t
*
[]={
L"proxy"
};
(
new
CustomStaticMethodInfoImpl
<
decltype
(
<
>::
(
nullptr
))(
<
>)>(
parameterNames
, (
<
decltype
(
<
>::
(
nullptr
))(
<
>)>)&::
vl
::
reflection
::
description
::
<
>::
,
L"::"
L"vl::reflection::description::ValueInterfaceProxy<IValueSubscription>::Create"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ValueInterfaceProxy<IValueSubscription>::Create"
L")"
) ); }
CLASS_MEMBER_EVENT(ValueChanged)
(
new
<
,
CustomEventFunctionTypeRetriver
<
decltype
(&
::
)>::
>(
this
,
L"ValueChanged"
, &
::
) );
CLASS_MEMBER_METHOD(Open, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Open"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Update, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Update"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Close, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Close"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_CLASS_MEMBER(IValueSubscription)
if
(
GetBaseTypeDescriptorCount
() ==
0
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IValueCallStack)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_PROPERTY_READONLY_FAST(LocalVariables)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetLocalVariables"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"LocalVariables"
,
dynamic_cast
<
*>(
(
L"GetLocalVariables"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(LocalArguments)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetLocalArguments"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"LocalArguments"
,
dynamic_cast
<
*>(
(
L"GetLocalArguments"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(CapturedVariables)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetCapturedVariables"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"CapturedVariables"
,
dynamic_cast
<
*>(
(
L"GetCapturedVariables"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(GlobalVariables)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetGlobalVariables"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"GlobalVariables"
,
dynamic_cast
<
*>(
(
L"GetGlobalVariables"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(FunctionName)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetFunctionName"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"FunctionName"
,
dynamic_cast
<
*>(
(
L"GetFunctionName"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(SourceCodeBeforeCodegen)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
GetSourceCodeBeforeCodegen
)>::
> (
parameterNames
, (
decltype
(&
::
GetSourceCodeBeforeCodegen
))&
::
GetSourceCodeBeforeCodegen
,
nullptr
,
nullptr
);
(
L"GetSourceCodeBeforeCodegen"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
GetSourceCodeBeforeCodegen
)>
(&
::
GetSourceCodeBeforeCodegen
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"SourceCodeBeforeCodegen"
,
dynamic_cast
<
*>(
(
L"GetSourceCodeBeforeCodegen"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(SourceCodeAfterCodegen)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
GetSourceCodeAfterCodegen
)>::
> (
parameterNames
, (
decltype
(&
::
GetSourceCodeAfterCodegen
))&
::
GetSourceCodeAfterCodegen
,
nullptr
,
nullptr
);
(
L"GetSourceCodeAfterCodegen"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
GetSourceCodeAfterCodegen
)>
(&
::
GetSourceCodeAfterCodegen
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"SourceCodeAfterCodegen"
,
dynamic_cast
<
*>(
(
L"GetSourceCodeAfterCodegen"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(RowBeforeCodegen)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetRowBeforeCodegen"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"RowBeforeCodegen"
,
dynamic_cast
<
*>(
(
L"GetRowBeforeCodegen"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(RowAfterCodegen)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetRowAfterCodegen"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"RowAfterCodegen"
,
dynamic_cast
<
*>(
(
L"GetRowAfterCodegen"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
END_INTERFACE_MEMBER(IValueCallStack)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IValueException)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
#pragma push_macro("GetMessage")
#if defined GetMessage
#undef GetMessage
#endif
CLASS_MEMBER_PROPERTY_READONLY_FAST(Message)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetMessage"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Message"
,
dynamic_cast
<
*>(
(
L"GetMessage"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
#pragma pop_macro("GetMessage")
CLASS_MEMBER_PROPERTY_READONLY_FAST(Fatal)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetFatal"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Fatal"
,
dynamic_cast
<
*>(
(
L"GetFatal"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(CallStack)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetCallStack"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"CallStack"
,
dynamic_cast
<
*>(
(
L"GetCallStack"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
END_INTERFACE_MEMBER(IValueException)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IBoxedValue)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_METHOD(Copy, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Copy"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IBoxedValue)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_ENUM_ITEM(IBoxedValue::CompareResult)
template
<>
struct
CustomTypeDescriptorSelector
<
::
> {
public
:
class
:
public
<
::
,
::
> {
typedef
::
;
public
:
void
()
override
{
<
::
,
::
>::
();
ENUM_ITEM_NAMESPACE(IBoxedValue)
ENUM_NAMESPACE_ITEM(Smaller)
->AddItem(
L"Smaller"
,
::
);
ENUM_NAMESPACE_ITEM(Greater)
->AddItem(
L"Greater"
,
::
);
ENUM_NAMESPACE_ITEM(Equal)
ENUM_NAMESPACE_ITEM(NotComparable)
->AddItem(
L"NotComparable"
,
::
);
END_ENUM_ITEM(ITypeInfo::Decorator)
} }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IValueType)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_METHOD(CreateDefault, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"CreateDefault"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Compare, { L"a" _ L"b" })
{
const
wchar_t
*
[]={
L"a"
,
L"b"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Compare"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IValueType)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IEnumType)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_METHOD(IsFlagEnum, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"IsFlagEnum"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(GetItemCount, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetItemCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(GetItemName, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetItemName"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(GetItemValue, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetItemValue"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(IndexOfItem, { L"name" })
{
const
wchar_t
*
[]={
L"name"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"IndexOfItem"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(ToEnum, { L"value" })
{
const
wchar_t
*
[]={
L"value"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"ToEnum"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(FromEnum, { L"value" })
{
const
wchar_t
*
[]={
L"value"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"FromEnum"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IEnumType)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(ISerializableType)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_METHOD(Serialize, { L"input" _ L"output" })
{
const
wchar_t
*
[]={
L"input"
,
L"output"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Serialize"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Deserialize, { L"input" _ L"output" })
{
const
wchar_t
*
[]={
L"input"
,
L"output"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Deserialize"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(ISerializableType)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(ITypeInfo)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_PROPERTY_READONLY_FAST(Decorator)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetDecorator"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Decorator"
,
dynamic_cast
<
*>(
(
L"GetDecorator"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(ElementType)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetElementType"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"ElementType"
,
dynamic_cast
<
*>(
(
L"GetElementType"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeDescriptor)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetTypeDescriptor"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"TypeDescriptor"
,
dynamic_cast
<
*>(
(
L"GetTypeDescriptor"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(GenericArgumentCount)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetGenericArgumentCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"GenericArgumentCount"
,
dynamic_cast
<
*>(
(
L"GetGenericArgumentCount"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeFriendlyName)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetTypeFriendlyName"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"TypeFriendlyName"
,
dynamic_cast
<
*>(
(
L"GetTypeFriendlyName"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_METHOD(GetGenericArgument, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetGenericArgument"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(ITypeInfo)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_ENUM_ITEM(ITypeInfo::Decorator)
template
<>
struct
CustomTypeDescriptorSelector
<
::
> {
public
:
class
:
public
<
::
,
::
> {
typedef
::
;
public
:
void
()
override
{
<
::
,
::
>::
();
ENUM_ITEM_NAMESPACE(ITypeInfo)
ENUM_NAMESPACE_ITEM(RawPtr)
->AddItem(
L"RawPtr"
,
::
);
ENUM_NAMESPACE_ITEM(SharedPtr)
->AddItem(
L"SharedPtr"
,
::
);
ENUM_NAMESPACE_ITEM(Nullable)
->AddItem(
L"Nullable"
,
::
);
ENUM_NAMESPACE_ITEM(TypeDescriptor)
->AddItem(
L"TypeDescriptor"
,
::
);
ENUM_NAMESPACE_ITEM(Generic)
->AddItem(
L"Generic"
,
::
);
END_ENUM_ITEM(ITypeInfo::Decorator)
} }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IMemberInfo)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerTypeDescriptor)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetOwnerTypeDescriptor"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"OwnerTypeDescriptor"
,
dynamic_cast
<
*>(
(
L"GetOwnerTypeDescriptor"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(Name)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetName"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Name"
,
dynamic_cast
<
*>(
(
L"GetName"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
END_INTERFACE_MEMBER(IMemberInfo)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IEventHandler)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_METHOD(IsAttached, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"IsAttached"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IEventHandler)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IEventInfo)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_BASE(IMemberInfo)
CLASS_MEMBER_PROPERTY_READONLY_FAST(HandlerType)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetHandlerType"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"HandlerType"
,
dynamic_cast
<
*>(
(
L"GetHandlerType"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(ObservingPropertyCount)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
GetObservingPropertyCount
)>::
> (
parameterNames
, (
decltype
(&
::
GetObservingPropertyCount
))&
::
GetObservingPropertyCount
,
nullptr
,
nullptr
);
(
L"GetObservingPropertyCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
GetObservingPropertyCount
)>
(&
::
GetObservingPropertyCount
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"ObservingPropertyCount"
,
dynamic_cast
<
*>(
(
L"GetObservingPropertyCount"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_METHOD(GetObservingProperty, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetObservingProperty"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Attach, { L"thisObject" _ L"handler" })
{
const
wchar_t
*
[]={
L"thisObject"
,
L"handler"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Attach"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Invoke, { L"thisObject" _ L"arguments" })
{
const
wchar_t
*
[]={
L"thisObject"
,
L"arguments"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Invoke"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IEventInfo)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IPropertyInfo)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_BASE(IMemberInfo)
CLASS_MEMBER_PROPERTY_READONLY_FAST(Return)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetReturn"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Return"
,
dynamic_cast
<
*>(
(
L"GetReturn"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(Getter)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetGetter"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Getter"
,
dynamic_cast
<
*>(
(
L"GetGetter"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(Setter)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetSetter"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Setter"
,
dynamic_cast
<
*>(
(
L"GetSetter"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(ValueChangedEvent)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetValueChangedEvent"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"ValueChangedEvent"
,
dynamic_cast
<
*>(
(
L"GetValueChangedEvent"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_METHOD(IsReadable, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"IsReadable"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(IsWritable, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"IsWritable"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(GetValue, { L"thisObject" })
{
const
wchar_t
*
[]={
L"thisObject"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetValue"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(SetValue, { L"thisObject" _ L"newValue" })
{
const
wchar_t
*
[]={
L"thisObject"
,
L"newValue"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"SetValue"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IPropertyInfo)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IParameterInfo)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_BASE(IMemberInfo)
CLASS_MEMBER_PROPERTY_READONLY_FAST(Type)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetType"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Type"
,
dynamic_cast
<
*>(
(
L"GetType"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerMethod)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetOwnerMethod"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"OwnerMethod"
,
dynamic_cast
<
*>(
(
L"GetOwnerMethod"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
END_CLASS_MEMBER(IParameterInfo)
if
(
GetBaseTypeDescriptorCount
() ==
0
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IMethodInfo)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_BASE(IMemberInfo)
CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerMethodGroup)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetOwnerMethodGroup"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"OwnerMethodGroup"
,
dynamic_cast
<
*>(
(
L"GetOwnerMethodGroup"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerProperty)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetOwnerProperty"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"OwnerProperty"
,
dynamic_cast
<
*>(
(
L"GetOwnerProperty"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(ParameterCount)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetParameterCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"ParameterCount"
,
dynamic_cast
<
*>(
(
L"GetParameterCount"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(Return)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetReturn"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"Return"
,
dynamic_cast
<
*>(
(
L"GetReturn"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_METHOD(GetParameter, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetParameter"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(IsStatic, NO_PARAMETER)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"IsStatic"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(CheckArguments, { L"arguments" })
{
const
wchar_t
*
[]={
L"arguments"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"CheckArguments"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(Invoke, { L"thisObject" _ L"arguments" })
{
const
wchar_t
*
[]={
L"thisObject"
,
L"arguments"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"Invoke"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_BASE(IMemberInfo)
END_INTERFACE_MEMBER(IMethodInfo)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(IMethodGroupInfo)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_BASE(IMemberInfo)
CLASS_MEMBER_PROPERTY_READONLY_FAST(MethodCount)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetMethodCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"MethodCount"
,
dynamic_cast
<
*>(
(
L"GetMethodCount"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_METHOD(GetMethod, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetMethod"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
END_INTERFACE_MEMBER(IMethodGroupInfo)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
BEGIN_ENUM_ITEM_MERGABLE(TypeDescriptorFlags)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
<
,
::
> {
typedef
;
public
:
void
()
override
{
<
,
::
>::
();
ENUM_CLASS_ITEM(Object)
->AddItem(
L"Object"
,
::
);
ENUM_CLASS_ITEM(IDescriptable)
->AddItem(
L"IDescriptable"
,
::
);
ENUM_CLASS_ITEM(Interface)
->AddItem(
L"Interface"
,
::
);
ENUM_CLASS_ITEM(Primitive)
->AddItem(
L"Primitive"
,
::
);
ENUM_CLASS_ITEM(Struct)
->AddItem(
L"Struct"
,
::
);
ENUM_CLASS_ITEM(FlagEnum)
->AddItem(
L"FlagEnum"
,
::
);
ENUM_CLASS_ITEM(NormalEnum)
->AddItem(
L"NormalEnum"
,
::
);
END_ENUM_ITEM(TypeDescriptorFlags)
} }; };
BEGIN_INTERFACE_MEMBER_NOPROXY(ITypeDescriptor)
template
<>
struct
CustomTypeDescriptorSelector
<
> {
public
:
class
:
public
,
public
::
{
typedef
;
static
const
=
::
;
::
;
public
:
() :
(
::
, &
<
>::
) {
<
>::
SetAssociatedTypeDescriptor
(
this
); }
~
CustomTypeDescriptorImpl
() {
<
>::
SetAssociatedTypeDescriptor
(
0
); }
void
(
const
&
,
*
)
override
{
.
(
,
); }
*
(
const
&
)
override
{
();
return
]; }
protected
:
void
()
override
{
CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeDescriptorFlags)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetTypeDescriptorFlags"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"TypeDescriptorFlags"
,
dynamic_cast
<
*>(
(
L"GetTypeDescriptorFlags"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeName)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetTypeName"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"TypeName"
,
dynamic_cast
<
*>(
(
L"GetTypeName"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(ValueType)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetValueType"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"ValueType"
,
dynamic_cast
<
*>(
(
L"GetValueType"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(EnumType)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetEnumType"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"EnumType"
,
dynamic_cast
<
*>(
(
L"GetEnumType"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(SerializableType)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetSerializableType"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"SerializableType"
,
dynamic_cast
<
*>(
(
L"GetSerializableType"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(BaseTypeDescriptorCount)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
GetBaseTypeDescriptorCount
)>::
> (
parameterNames
, (
decltype
(&
::
GetBaseTypeDescriptorCount
))&
::
GetBaseTypeDescriptorCount
,
nullptr
,
nullptr
);
(
L"GetBaseTypeDescriptorCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
GetBaseTypeDescriptorCount
)>
(&
::
GetBaseTypeDescriptorCount
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"BaseTypeDescriptorCount"
,
dynamic_cast
<
*>(
(
L"GetBaseTypeDescriptorCount"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(PropertyCount)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetPropertyCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"PropertyCount"
,
dynamic_cast
<
*>(
(
L"GetPropertyCount"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(EventCount)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetEventCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"EventCount"
,
dynamic_cast
<
*>(
(
L"GetEventCount"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(MethodGroupCount)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetMethodGroupCount"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"MethodGroupCount"
,
dynamic_cast
<
*>(
(
L"GetMethodGroupCount"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_PROPERTY_READONLY_FAST(ConstructorGroup)
{
const
wchar_t
*
[]={
L""
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetConstructorGroup"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
(
new
(
this
,
L"ConstructorGroup"
,
dynamic_cast
<
*>(
(
L"GetConstructorGroup"
,
true
)->GetMethod(
0
)),
nullptr
,
nullptr
) );
CLASS_MEMBER_METHOD(GetBaseTypeDescriptor, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetBaseTypeDescriptor"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(CanConvertTo, { L"targetType" })
{
const
wchar_t
*
[]={
L"targetType"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"CanConvertTo"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(GetProperty, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetProperty"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(IsPropertyExists, { L"name" _ L"inheritable" })
{
const
wchar_t
*
[]={
L"name"
,
L"inheritable"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"IsPropertyExists"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(GetPropertyByName, { L"name" _ L"inheritable" })
{
const
wchar_t
*
[]={
L"name"
,
L"inheritable"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetPropertyByName"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(GetEvent, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetEvent"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(IsEventExists, { L"name" _ L"inheritable" })
{
const
wchar_t
*
[]={
L"name"
,
L"inheritable"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"IsEventExists"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(GetEventByName, { L"name" _ L"inheritable" })
{
const
wchar_t
*
[]={
L"name"
,
L"inheritable"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetEventByName"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(GetMethodGroup, { L"index" })
{
const
wchar_t
*
[]={
L"index"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetMethodGroup"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(IsMethodGroupExists, { L"name" _ L"inheritable" })
{
const
wchar_t
*
[]={
L"name"
,
L"inheritable"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"IsMethodGroupExists"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_METHOD(GetMethodGroupByName, { L"name" _ L"inheritable" })
{
const
wchar_t
*
[]={
L"name"
,
L"inheritable"
};
auto
=
new
<
,
vl
::
function_lambda
::
<
decltype
(&
::
)>::
> (
parameterNames
, (
decltype
(&
::
))&
::
,
nullptr
,
nullptr
);
(
L"GetMethodGroupByName"
,
methodInfo
);
MethodPointerBinaryDataRetriver
<
decltype
(&
::
)>
(&
::
);
MethodPointerBinaryDataRecorder
<
,
>::
(
binaryDataRetriver
.
(),
this
,
methodInfo
); }
CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptorCount, NO_PARAMETER, vint(*)(), vl::reflection::description::ITypeDescriptor_GetTypeDescriptorCount)
{
const
wchar_t
*
[]={
L""
};
(
L"GetTypeDescriptorCount"
,
new
CustomStaticMethodInfoImpl
<
vl
::
function_lambda
::
FunctionObjectRetriveType
<
(*)()>::
>(
parameterNames
, (
(*)())&::
vl
::
reflection
::
description
::
ITypeDescriptor_GetTypeDescriptorCount
,
L"::"
L"vl::reflection::description::ITypeDescriptor_GetTypeDescriptorCount"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ITypeDescriptor_GetTypeDescriptorCount"
L")"
) ); }
CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptor, { L"index" }, ITypeDescriptor*(*)(vint), vl::reflection::description::ITypeDescriptor_GetTypeDescriptor)
{
const
wchar_t
*
[]={
L"index"
};
(
L"GetTypeDescriptor"
,
new
CustomStaticMethodInfoImpl
<
vl
::
function_lambda
::
FunctionObjectRetriveType
<
*(*)(
)>::
>(
parameterNames
, (
*(*)(
))&::
vl
::
reflection
::
description
::
ITypeDescriptor_GetTypeDescriptor
,
L"::"
L"vl::reflection::description::ITypeDescriptor_GetTypeDescriptor"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ITypeDescriptor_GetTypeDescriptor"
L")"
) ); }
CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptor, { L"name" }, ITypeDescriptor*(*)(const WString&), vl::reflection::description::ITypeDescriptor_GetTypeDescriptor)
{
const
wchar_t
*
[]={
L"name"
};
(
L"GetTypeDescriptor"
,
new
CustomStaticMethodInfoImpl
<
vl
::
function_lambda
::
FunctionObjectRetriveType
<
*(*)(
const
&)>::
>(
parameterNames
, (
*(*)(
const
&))&::
vl
::
reflection
::
description
::
ITypeDescriptor_GetTypeDescriptor
,
L"::"
L"vl::reflection::description::ITypeDescriptor_GetTypeDescriptor"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ITypeDescriptor_GetTypeDescriptor"
L")"
) ); }
CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptor, { L"value" }, ITypeDescriptor*(*)(const Value&), vl::reflection::description::ITypeDescriptor_GetTypeDescriptor)
{
const
wchar_t
*
[]={
L"value"
};
(
L"GetTypeDescriptor"
,
new
CustomStaticMethodInfoImpl
<
vl
::
function_lambda
::
FunctionObjectRetriveType
<
*(*)(
const
&)>::
>(
parameterNames
, (
*(*)(
const
&))&::
vl
::
reflection
::
description
::
ITypeDescriptor_GetTypeDescriptor
,
L"::"
L"vl::reflection::description::ITypeDescriptor_GetTypeDescriptor"
L"($Arguments)"
,
L"::vl::Func<$Func>(&::"
L"vl::reflection::description::ITypeDescriptor_GetTypeDescriptor"
L")"
) ); }
END_INTERFACE_MEMBER(ITypeDescriptor)
if
(
GetBaseTypeDescriptorCount
() ==
0
&&
==
::
)
(
description
::
<
>()); } }; };
#undef _
class
:
public
,
public
{
public
:
void
(
*
)
override
{
->
(
<
>::
.typeName,
new
TypedValueTypeDescriptorBase
<
,
::
>);
#define ADD_PRIMITIVE_TYPE(TYPE) manager->SetTypeDescriptor(TypeInfo<TYPE>::content.typeName, new PrimitiveTypeDescriptor<TYPE>());
REFLECTION_PREDEFINED_PRIMITIVE_TYPES(ADD_PRIMITIVE_TYPE)
->
(
<
>::
.typeName,
new
<
>());
->
(
<
>::
.typeName,
new
<
>());
->
(
<
>::
.typeName,
new
<
>());
->
(
<
>::
.typeName,
new
<
>());
->
(
<
>::
.typeName,
new
<
>());
->
(
<
>::
.typeName,
new
<
>());
->
(
<
>::
.typeName,
new
<
>());
->
(
<
>::
.typeName,
new
<
>());
->
(
<
float
>::
.typeName,
new
<
float
>());
->
(
<
double
>::
.typeName,
new
<
double
>());
->
(
<
bool
>::
.typeName,
new
<
bool
>());
->
(
<
wchar_t
>::
.typeName,
new
<
wchar_t
>());
->
(
<
>::
.typeName,
new
<
>());
->
(
<
>::
.typeName,
new
<
>());
#undef ADD_PRIMITIVE_TYPE
REFLECTION_PREDEFINED_COMPLEX_TYPES(ADD_TYPE_INFO, VoidValue)
{
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
::
>::
();
->
(
<
::
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
::
>::
();
->
(
<
::
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); } {
<
>
=
new
CustomTypeDescriptorSelector
<
>::
();
->
(
<
>::
.typeName,
type
); }
}
void
(
*
)
override
{
}
};
#endif
bool
()
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
*
=
();
if
(
manager
)
{
<
>
=
new
;
return
manager
->
(
loader
);
}
#endif
return
false
;
}
}
}
}