#include "GuiTypeDescriptorBuilder.h"
namespace
{
using
namespace
collections
;
namespace
{
namespace
{
#ifndef VCZH_DEBUG_NO_REFLECTION
::
(
*
,
)
:typeDescriptor(
)
, hint(
)
{
}
::
()
{
}
::
::
()
{
return
::
;
}
::
()
{
return
;
}
*
::
()
{
return
nullptr
;
}
*
::
()
{
return
;
}
::
()
{
return
0
;
}
*
::
(
)
{
return
nullptr
;
}
::
()
{
return
->
();
}
::
(
<
>
)
:elementType(
)
{
}
::
()
{
}
::
()
{
return
();
}
*
::
()
{
return
.
();
}
*
::
()
{
return
();
}
::
()
{
return
0
;
}
*
::
(
)
{
return
nullptr
;
}
::
(
<
>
)
:
(
)
{
}
::
()
{
}
::
::
()
{
return
::
;
}
::
()
{
return
() +
L"*"
;
}
::
(
<
>
)
:
(
)
{
}
::
()
{
}
::
::
()
{
return
::
;
}
::
()
{
return
() +
L"^"
;
}
::
(
<
>
)
:
(
)
{
}
::
()
{
}
::
::
()
{
return
::
;
}
::
()
{
return
() +
L"?"
;
}
::
(
<
>
)
:
(
)
{
}
::
()
{
}
::
::
()
{
return
::
;
}
::
()
{
return
.
();
}
*
::
(
)
{
return
].
();
}
::
()
{
=
() +
L"<"
;
FOREACH_INDEXER(Ptr<ITypeInfo>, type, i, genericArguments)
if
(
bool
=
true
)
for
(
const
::
vl
::
collections
::
<
<
>>&
= ::
vl
::
collections
::
(
);
__scope_variable_flag__
;
__scope_variable_flag__
=
false
)
if
(
bool
=
true
)
for
(
=
0
;
__scope_variable_flag__
;
__scope_variable_flag__
=
false
)
for
(
<
>
;
__foreach_iterator__
.
(
type
);
i
++)
{
if
(
i
>
0
)
result
+=
L", "
;
result
type
();
}
result
+=
L">"
;
return
result
;
}
void
::
(
<
>
)
{
.
(
);
}
#endif
#ifndef VCZH_DEBUG_NO_REFLECTION
const
&
::
()
{
return
;
}
const
*
::
GetTypeInfoContentInternal
()
{
return
;
}
::
(
,
const
*
)
:typeDescriptorFlags(
)
, typeInfoContent(
)
, typeName(
->
,
false
)
{
switch
(
->
)
{
case
::
:
break
;
case
::
:
(
->
,
false
);
break
;
case
::
:
(
->
,
false
);
break
;
}
}
::
()
{
}
::
*
::
()
{
return
->
==
::
?
nullptr
:
this
;
}
::
()
{
return
;
}
const
&
::
()
{
return
;
}
void
::
()
{
}
void
::
()
{
if
(!
)
{
=
true
;
();
}
}
::
(
,
const
*
)
:
(
,
)
, loaded(
false
)
{
}
::
()
{
}
bool
::
()
{
return
false
;
}
*
::
()
{
();
return
.
();
}
*
::
()
{
();
return
.
();
}
*
::
()
{
();
return
.
();
}
::
GetBaseTypeDescriptorCount
()
{
return
0
;
}
*
::
(
)
{
return
0
;
}
bool
::
(
*
)
{
return
this
==
;
}
::
()
{
return
0
;
}
*
::
(
)
{
return
0
;
}
bool
::
(
const
&
,
bool
)
{
return
false
;
}
*
::
(
const
&
,
bool
)
{
return
0
;
}
::
()
{
return
0
;
}
*
::
(
)
{
return
0
;
}
bool
::
(
const
&
,
bool
)
{
return
false
;
}
*
::
(
const
&
,
bool
)
{
return
0
;
}
::
()
{
return
0
;
}
*
::
(
)
{
return
0
;
}
bool
::
(
const
&
,
bool
)
{
return
false
;
}
*
::
(
const
&
,
bool
)
{
return
0
;
}
*
::
()
{
return
0
;
}
::
(
*
,
const
&
,
<
>
)
:ownerMethod(
)
,name(
)
,type(
)
{
}
::
()
{
}
*
::
()
{
return
->
();
}
const
&
::
()
{
return
;
}
*
::
()
{
return
.
();
}
*
::
()
{
return
;
}
::
(
*
,
<
>
,
bool
)
:ownerMethodGroup(
)
,ownerProperty(
0
)
,returnInfo(
)
,isStatic(
)
{
}
::
()
{
}
*
::
()
{
return
->
();
}
*
::
()
{
return
;
}
const
&
::
()
{
return
->
();
}
*
::
()
{
return
;
}
::
()
{
return
.
();
}
*
::
(
)
{
if
(
0
<=
&&
<
.
())
{
return
].
();
}
else
{
return
0
;
}
}
*
::
()
{
return
.
();
}
bool
::
()
{
return
;
}
void
::
(
collections
::
<
>&
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
.
()!=
.
())
{
throw
ArgumentCountMismtatchException
(
);
}
for
(
=
0
;
i
<
.
();
i
++)
{
if
(!
i
].
(
i
]
()))
{
throw
ArgumentTypeMismtatchException
(
i
]
(),
i
]
(),
i
]);
}
}
#else
CHECK_FAIL(L"Not Implemented under VCZH_DEBUG_METAONLY_REFLECTION!");
#endif
}
::
(
const
&
,
collections
::
<
>&
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
.
())
{
if
(!
)
{
throw
(
L"thisObject"
,
this
);
}
}
else
if
(!
.
(
->
(),
::
))
{
throw
ArgumentTypeMismtatchException
(
L"thisObject"
,
->
(),
::
,
);
}
(
);
return
(
,
);
#else
CHECK_FAIL(L"Not Implemented under VCZH_DEBUG_METAONLY_REFLECTION!");
#endif
}
::
(
const
&
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
.
())
{
if
(!
)
{
throw
(
L"thisObject"
,
this
);
}
}
else
if
(!
.
(
->
(),
::
))
{
throw
ArgumentTypeMismtatchException
(
L"thisObject"
,
->
(),
::
,
);
}
return
CreateFunctionProxyInternal
(
);
#else
CHECK_FAIL(L"Not Implemented under VCZH_DEBUG_METAONLY_REFLECTION!");
#endif
}
bool
::
(
<
>
)
{
for
(
=
0
;
i
<
.
();
i
++)
{
if
(
i
]
()
())
{
return
false
;
}
}
.
(
);
return
true
;
}
bool
::
(
*
)
{
if
(
)
return
false
;
=
;
return
true
;
}
::
(
*
,
const
&
)
:ownerTypeDescriptor(
)
,name(
)
{
}
::
()
{
}
*
::
()
{
return
;
}
const
&
::
()
{
return
;
}
::
()
{
return
.
();
}
*
::
(
)
{
if
(
0
<=
&&
<
.
())
{
return
].
();
}
else
{
return
0
;
}
}
bool
::
(
<
>
)
{
.
(
);
return
true
;
}
::
(
*
,
const
&
)
:ownerTypeDescriptor(
)
,name(
)
{
}
::
()
{
}
*
::
()
{
return
;
}
*
::
()
{
if
(!
)
{
();
}
return
.
();
}
::
GetObservingPropertyCount
()
{
return
.
();
}
*
::
(
)
{
return
];
}
const
&
::
()
{
return
;
}
<
>
::
(
const
&
,
<
>
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
.
())
{
throw
(
L"thisObject"
,
this
);
}
else
if
(!
.
(
,
::
))
{
throw
ArgumentTypeMismtatchException
(
L"thisObject"
,
,
::
,
);
}
*
=
.
();
if
(
rawThisObject
)
{
return
(
rawThisObject
,
);
}
else
{
return
nullptr
;
}
#else
CHECK_FAIL(L"Not Implemented under VCZH_DEBUG_METAONLY_REFLECTION!");
#endif
}
bool
::
(
const
&
,
<
>
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
.
())
{
throw
(
L"thisObject"
,
this
);
}
else
if
(!
.
(
,
::
))
{
throw
ArgumentTypeMismtatchException
(
L"thisObject"
,
,
::
,
);
}
*
=
.
();
if
(
rawThisObject
)
{
return
(
rawThisObject
,
);
}
else
{
return
false
;
}
#else
CHECK_FAIL(L"Not Implemented under VCZH_DEBUG_METAONLY_REFLECTION!");
#endif
}
void
::
(
const
&
,
<
>
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
.
())
{
throw
(
L"thisObject"
,
this
);
}
else
if
(!
.
(
,
::
))
{
throw
ArgumentTypeMismtatchException
(
L"thisObject"
,
,
::
,
);
}
*
=
.
();
if
(
rawThisObject
)
{
(
rawThisObject
,
);
}
else
{
return
;
}
#else
CHECK_FAIL(L"Not Implemented under VCZH_DEBUG_METAONLY_REFLECTION!");
#endif
}
::
(
*
,
const
&
,
*
,
*
,
*
)
:ownerTypeDescriptor(
)
,name(
)
,getter(
)
,setter(
)
,valueChangedEvent(
)
{
if
(
)
->
=
this
;
if
(
)
->
=
this
;
if
(
)
{
->
.
(
this
);
}
}
::
()
{
}
*
::
()
{
return
;
}
const
&
::
()
{
return
;
}
::
*
::
()
{
return
nullptr
;
}
bool
::
()
{
return
!=
0
;
}
bool
::
()
{
return
!=
0
;
}
*
::
()
{
return
?
->
():
0
;
}
*
::
()
{
return
;
}
*
::
()
{
return
;
}
*
::
()
{
return
;
}
::
(
const
&
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
)
{
<
>
;
return
->
(
,
arguments
);
}
else
{
throw
PropertyIsNotReadableException
(
this
);
}
#else
CHECK_FAIL(L"Not Implemented under VCZH_DEBUG_METAONLY_REFLECTION!");
#endif
}
void
::
(
&
,
const
&
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
)
{
<
>
(
1
);
arguments
0
]
;
->
(
,
arguments
);
}
else
{
throw
PropertyIsNotWritableException
(
this
);
}
#else
CHECK_FAIL(L"Not Implemented under VCZH_DEBUG_METAONLY_REFLECTION!");
#endif
}
const
&
PropertyInfoImpl_StaticCpp
::
()
{
return
;
}
PropertyInfoImpl_StaticCpp
::
PropertyInfoImpl_StaticCpp
(
*
,
const
&
,
*
,
*
,
*
,
const
&
)
:
(
,
,
,
,
)
, referenceTemplate(
)
{
}
PropertyInfoImpl_StaticCpp
::
~
PropertyInfoImpl_StaticCpp
()
{
}
::
*
PropertyInfoImpl_StaticCpp
::
()
{
return
this
;
}
::
(
*
,
const
&
,
<
>
)
:ownerTypeDescriptor(
)
,name(
)
,returnInfo(
)
{
}
::
()
{
}
*
::
()
{
return
;
}
const
&
::
()
{
return
;
}
bool
::
()
{
return
true
;
}
bool
::
()
{
return
true
;
}
*
::
()
{
return
.
();
}
*
::
()
{
return
0
;
}
*
::
()
{
return
0
;
}
*
::
()
{
return
0
;
}
::
(
const
&
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
.
())
{
throw
(
L"thisObject"
,
this
);
}
else
{
auto
=
.
();
auto
=
td
->
() ?
::
:
::
;
if
(!
.
(
,
valueType
))
{
throw
ArgumentTypeMismtatchException
(
L"thisObject"
,
,
valueType
,
);
}
}
return
(
);
#else
CHECK_FAIL(L"Not Implemented under VCZH_DEBUG_METAONLY_REFLECTION!");
#endif
}
void
::
(
&
,
const
&
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
.
())
{
throw
(
L"thisObject"
,
this
);
}
else
{
auto
=
.
();
auto
=
td
->
() ?
::
:
::
;
if
(!
.
(
,
valueType
))
{
throw
ArgumentTypeMismtatchException
(
L"thisObject"
,
,
valueType
,
);
}
}
if
(!
.
(
.
()))
{
throw
ArgumentTypeMismtatchException
(
L"newValue"
,
.
(),
);
}
(
,
);
#else
CHECK_FAIL(L"Not Implemented under VCZH_DEBUG_METAONLY_REFLECTION!");
#endif
}
*
::
(
const
&
)
{
=
.
().
(
);
if
(
index
==-
1
)
{
<
>
=
new
(
this
,
);
.
(
,
methodGroup
);
return
methodGroup
.
();
}
else
{
return
.
().
(
index
).
();
}
}
*
::
()
{
if
(!
)
{
new
(
this
,
L""
);
}
return
.
();
}
*
::
(
<
>
)
{
.
(
(),
);
return
.
();
}
*
::
(
<
>
)
{
.
(
(),
);
return
.
();
}
*
::
(
const
&
,
<
>
)
{
*
=
(
);
(
methodGroup
);
methodGroup
->
(
);
return
.
();
}
*
::
(
<
>
)
{
*
=
();
(
methodGroup
);
methodGroup
->
(
);
return
.
();
}
void
::
(
*
)
{
.
(
);
}
void
::
()
{
if
(!
)
{
=
true
;
();
}
}
::
(
,
const
*
)
:
(
,
)
,loaded(
false
)
{
}
::
()
{
}
bool
::
()
{
return
false
;
}
*
::
()
{
return
nullptr
;
}
*
::
()
{
return
nullptr
;
}
*
::
()
{
return
nullptr
;
}
::
GetBaseTypeDescriptorCount
()
{
();
return
.
();
}
*
::
(
)
{
();
if
(
0
<=
&&
<
.
())
{
return
];
}
else
{
return
0
;
}
}
bool
::
(
*
)
{
();
if
(
this
==
)
return
true
;
for
(
=
0
;
i
<
.
();
i
++)
{
if
(
i
]->
(
))
return
true
;
}
return
false
;
}
::
()
{
();
return
.
();
}
*
::
(
)
{
();
if
(
0
<=
&&
<
.
())
{
return
.
().
(
).
();
}
else
{
return
0
;
}
}
bool
::
(
const
&
,
bool
)
{
();
if
(
.
().
(
))
{
return
true
;
}
if
(
)
{
for
(
=
0
;
i
<
.
();
i
++)
{
if
(
i
]->
(
,
true
))
{
return
true
;
}
}
}
return
false
;
}
*
::
(
const
&
,
bool
)
{
();
=
.
().
(
);
if
(
index
!=-
1
)
{
return
.
().
(
index
).
();
}
if
(
)
{
for
(
=
0
;
i
<
.
();
i
++)
{
*
=
i
]->
(
,
true
);
if
(
result
)
{
return
result
;
}
}
}
return
0
;
}
::
()
{
();
return
.
();
}
*
::
(
)
{
();
if
(
0
<=
&&
<
.
())
{
return
.
().
(
).
();
}
else
{
return
0
;
}
}
bool
::
(
const
&
,
bool
)
{
();
if
(
.
().
(
))
{
return
true
;
}
if
(
)
{
for
(
=
0
;
i
<
.
();
i
++)
{
if
(
i
]->
(
,
true
))
{
return
true
;
}
}
}
return
false
;
}
*
::
(
const
&
,
bool
)
{
();
=
.
().
(
);
if
(
index
!=-
1
)
{
return
.
().
(
index
).
();
}
if
(
)
{
for
(
=
0
;
i
<
.
();
i
++)
{
*
=
i
]->
(
,
true
);
if
(
result
)
{
return
result
;
}
}
}
return
0
;
}
::
()
{
();
return
.
();
}
*
::
(
)
{
();
if
(
0
<=
&&
<
.
())
{
return
.
().
(
).
();
}
else
{
return
0
;
}
}
bool
::
(
const
&
,
bool
)
{
();
if
(
.
().
(
))
{
return
true
;
}
if
(
)
{
for
(
=
0
;
i
<
.
();
i
++)
{
if
(
i
]->
(
,
true
))
{
return
true
;
}
}
}
return
false
;
}
*
::
(
const
&
,
bool
)
{
();
=
.
().
(
);
if
(
index
!=-
1
)
{
return
.
().
(
index
).
();
}
if
(
)
{
for
(
=
0
;
i
<
.
();
i
++)
{
*
=
i
]->
(
,
true
);
if
(
result
)
{
return
result
;
}
}
}
return
0
;
}
*
::
()
{
();
return
.
();
}
#endif
namespace
{
void
(
<
>
,
)
{
}
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
void
(
*
,
collections
::
<
>&
,
)
{
}
#endif
void
(
<
>
)
{
}
}
}
}
}