#include "GuiTypeDescriptorReflection.h"
namespace
{
using
namespace
collections
;
namespace
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
bool
::
()
{
return
!=
nullptr
;
}
::
()
{
CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::GetAggregationSize()#This function should not be called on non-aggregated objects.");
do
{
if
(!(
()))
throw
(
L"vl::reflection::DescriptableObject::GetAggregationSize()#This function should not be called on non-aggregated objects."
);}
while
(
0
);
return
;
}
*
::
()
{
CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::GetAggregationRoot()#This function should not be called on non-aggregated objects.");
do
{
if
(!(
()))
throw
(
L"vl::reflection::DescriptableObject::GetAggregationRoot()#This function should not be called on non-aggregated objects."
);}
while
(
0
);
return
[
];
}
void
::
(
*
)
{
CHECK_ERROR(value != nullptr, L"vl::reflection::DescriptableObject::SetAggregationRoot(Descriptable*)#The root object should not null.");
do
{
if
(!(
!=
nullptr
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationRoot(Descriptable*)#The root object should not null."
);}
while
(
0
);
CHECK_ERROR(value->IsAggregated() && value->GetAggregationRoot() == nullptr, L"vl::reflection::DescriptableObject::SetAggregationRoot(Descriptable*)#The root object should not have an aggregation root.");
do
{
if
(!(
->
() &&
->
() ==
nullptr
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationRoot(Descriptable*)#The root object should not have an aggregation root."
);}
while
(
0
);
if
(!
())
{
(
0
);
}
[
] =
;
[
+
1
] =
;
for
(
=
0
;
i
<
;
i
++)
{
if
(
[
i
])
{
[
i
]->
(
);
}
}
}
*
::
(
)
{
CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::GetAggregationParent(vint)#This function should not be called on non-aggregated objects.");
do
{
if
(!(
()))
throw
(
L"vl::reflection::DescriptableObject::GetAggregationParent(vint)#This function should not be called on non-aggregated objects."
);}
while
(
0
);
CHECK_ERROR(0 <= index && index < aggregationSize, L"vl::reflection::DescriptableObject::GetAggregationParent(vint)#Index out of range.");
do
{
if
(!(
0
<=
&&
<
))
throw
(
L"vl::reflection::DescriptableObject::GetAggregationParent(vint)#Index out of range."
);}
while
(
0
);
return
[
];
}
void
::
(
,
*
)
{
CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#This function should not be called on non-aggregated objects.");
do
{
if
(!(
()))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#This function should not be called on non-aggregated objects."
);}
while
(
0
);
CHECK_ERROR(0 <= index && index < aggregationSize, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Index out of range.");
do
{
if
(!(
0
<=
&&
<
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Index out of range."
);}
while
(
0
);
CHECK_ERROR(aggregationInfo[index] == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#This index has been used.");
do
{
if
(!(
[
] ==
nullptr
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#This index has been used."
);}
while
(
0
);
CHECK_ERROR(value != nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent should not be null.");
do
{
if
(!(
!=
nullptr
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent should not be null."
);}
while
(
0
);
CHECK_ERROR(!value->IsAggregated() || value->GetAggregationRoot() == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent already has a aggregation root.");
do
{
if
(!(!
->
() ||
->
() ==
nullptr
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent already has a aggregation root."
);}
while
(
0
);
CHECK_ERROR(value->referenceCounter == 0, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent should not be contained in any smart pointer.");
do
{
if
(!(
->
==
0
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent should not be contained in any smart pointer."
);}
while
(
0
);
->
(
this
);
[
] =
;
}
void
::
(
,
<
>&
)
{
CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#This function should not be called on non-aggregated objects.");
do
{
if
(!(
()))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#This function should not be called on non-aggregated objects."
);}
while
(
0
);
CHECK_ERROR(0 <= index && index < aggregationSize, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#Index out of range.");
do
{
if
(!(
0
<=
&&
<
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#Index out of range."
);}
while
(
0
);
CHECK_ERROR(aggregationInfo[index] == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#This index has been used.");
do
{
if
(!(
[
] ==
nullptr
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#This index has been used."
);}
while
(
0
);
CHECK_ERROR(value, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#Parent should not be null");
do
{
if
(!(
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#Parent should not be null"
);}
while
(
0
);
CHECK_ERROR(!value->IsAggregated() || value->GetAggregationRoot() == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#Parent already has a aggregation root.");
do
{
if
(!(!
() ||
() ==
nullptr
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#Parent already has a aggregation root."
);}
while
(
0
);
CHECK_ERROR(value->referenceCounter == 1, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#Parent should not be contained in any other smart pointer.");
do
{
if
(!(
==
1
))
throw
(
L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr<DescriptableObject>&)#Parent should not be contained in any other smart pointer."
);}
while
(
0
);
(
this
);
auto
=
.
();
[
] =
parent
;
}
void
::
(
)
{
CHECK_ERROR(!IsAggregated(), L"vl::reflection::DescriptableObject::InitializeAggregation(vint)#This function should not be called on aggregated objects.");
do
{
if
(!(!
()))
throw
(
L"vl::reflection::DescriptableObject::InitializeAggregation(vint)#This function should not be called on aggregated objects."
);}
while
(
0
);
CHECK_ERROR(size >= 0, L"vl::reflection::DescriptableObject::InitializeAggregation(vint)#Size shout not be negative.");
do
{
if
(!(
>=
0
))
throw
(
L"vl::reflection::DescriptableObject::InitializeAggregation(vint)#Size shout not be negative."
);}
while
(
0
);
=
;
=
new
*[
+
2
];
(
,
0
,
sizeof
(*
) * (
+
2
));
}
#endif
void
::
()
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
())
{
if
(
auto
=
())
{
if
(
[
+
1
] ==
nullptr
)
{
return
;
}
else
{
[
+
1
] =
nullptr
;
}
if
(!
root
->
)
{
=
true
;
delete
root
;
}
}
}
#endif
}
::
()
:referenceCounter(
0
)
, sharedPtrDestructorProc(
0
)
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
, objectSize(
0
)
, typeDescriptor(
0
)
, destructing(
false
)
, aggregationInfo(
nullptr
)
, aggregationSize(-
1
)
#endif
{
}
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wexceptions"
#elif defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wterminate"
#endif
::
()
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
=
true
;
if
(
())
{
if
(
auto
=
())
{
if
(
[
+
1
] !=
nullptr
)
{
#pragma warning (push)
#pragma warning (disable:
4297
)
CHECK_ERROR(!IsAggregated(), L"vl::reflection::DescriptableObject::~DescriptableObject0()#FinalizeAggregation function should be called.");
do
{
if
(!(!
()))
throw
(
L"vl::reflection::DescriptableObject::~DescriptableObject0()#FinalizeAggregation function should be called."
);}
while
(
0
);
#pragma warning (pop)
}
}
for
(
=
0
;
i
<
;
i
++)
{
if
(
auto
=
(
i
))
{
if
(!
parent
->
)
{
delete
parent
;
}
}
}
delete
[]
;
}
#endif
}
#if defined(__clang__)
#pragma clang diagnostic pop
#elif defined(__GNUC__)
#pragma GCC diagnostic pop
#endif
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
description
::
*
::
()
{
return
?*
:
0
;
}
#endif
<
>
::
(
const
&
)
{
if
(!
)
return
0
;
=
().
(
);
if
(
index
==-
1
)
return
0
;
return
().
(
index
);
}
void
::
(
const
&
,
<
>
)
{
if
(
)
{
=
().
(
);
if
(
index
==-
1
)
{
if
(
)
{
(
,
);
}
}
else
{
if
(
)
{
(
,
);
}
else
{
(
);
if
(
()==
0
)
{
0
;
}
}
}
}
else
{
if
(
)
{
new
;
(
,
);
}
}
}
bool
::
(
bool
)
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
())
{
if
(
auto
=
())
{
return
root
->
(
);
}
}
#endif
if
(
>
0
&&
)
{
throw
description
::
ValueNotDisposableException
();
}
if
(
)
{
return
(
this
,
);
}
else
{
delete
this
;
return
true
;
}
}
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
*
::
()
{
if
(
())
{
if
(
auto
=
())
{
return
root
;
}
}
return
this
;
}
#endif
namespace
{
::
(
*
)
:valueType(
?
:
)
,rawPtr(
nullptr
)
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
,typeDescriptor(
nullptr
)
#endif
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
)
{
=
->
();
}
#else
rawPtr = value;
#endif
}
::
(
<
>
)
:valueType(
?
:
)
,rawPtr(
nullptr
)
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
,typeDescriptor(
nullptr
)
#endif
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
if
(
)
{
=
();
;
}
#else
rawPtr = value.Obj();
sharedPtr = value;
#endif
}
::
(
<
>
,
*
)
:valueType(
?
:
)
, rawPtr(
nullptr
)
, boxedValue(
)
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
, typeDescriptor(
)
#endif
{
}
::
(
const
&
,
const
&
)
const
{
switch
(
.
())
{
case
::
:
case
::
:
switch
(
.
())
{
case
::
:
case
::
:
{
auto
=
.
();
auto
=
.
();
if
(
pa
<
pb
)
return
-
1
;
if
(
pa
>
pb
)
return
1
;
return
0
;
}
case
::
:
return
-
1
;
default
:
return
1
;
}
case
::
:
switch
(
.
())
{
case
::
:
case
::
:
return
1
;
case
::
:
{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
auto
=
.
()->
();
auto
=
.
()->
();
if
(
aSt
)
{
if
(
bSt
)
{
auto
=
.
()->
();
auto
=
.
()->
();
;
;
aSt
->
(
,
aText
);
bSt
->
(
,
bText
);
if
(
aText
<
bText
)
return
-
1
;
if
(
aText
>
bText
)
return
1
;
return
0
;
}
else
{
return
1
;
}
}
else
{
if
(
bSt
)
{
return
-
1
;
}
else
{
if
(
.
() !=
.
())
{
auto
=
.
()->
();
auto
=
.
()->
();
if
(
aText
<
bText
)
return
-
1
;
if
(
aText
>
bText
)
return
1
;
return
0
;
}
switch
(
.
()->
())
{
case
::
:
{
auto
=
.
();
=
td
->
();
for
(
=
0
;
i
<
count
;
i
++)
{
auto
=
td
->
(
i
);
auto
=
prop
->
(
);
auto
=
prop
->
(
);
=
(
ap
,
bp
);
if
(
result
!=
0
)
{
return
result
;
}
}
}
return
0
;
case
::
:
case
::
:
{
auto
=
.
()->
()->
(
);
auto
=
.
()->
()->
(
);
if
(
ai
<
bi
)
return
-
1
;
if
(
ai
>
bi
)
return
1
;
return
0
;
}
default
:
return
0
;
}
}
}
#else
auto pa = a.GetBoxedValue();
auto pb = b.GetBoxedValue();
switch (pa->ComparePrimitive(pb))
{
case IBoxedValue::Smaller: return -1;
case IBoxedValue::Greater: return 1;
case IBoxedValue::Equal: return 0;
default:;
}
if (pa.Obj() < pb.Obj()) return -1;
if (pa.Obj() > pb.Obj()) return 1;
return 0;
#endif
}
default
:
return
1
;
}
default
:
switch
(
.
())
{
case
::
:
case
::
:
case
::
:
return
-
1
;
default
:
return
0
;
}
}
}
::
()
:valueType(
)
,rawPtr(
0
)
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
,typeDescriptor(
nullptr
)
#endif
{
}
::
(
const
&
)
:valueType(
.
)
,rawPtr(
.
)
,sharedPtr(
.
)
,boxedValue(
.
?
.
() :
nullptr
)
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
,typeDescriptor(
.
)
#endif
{
}
&
::
(
const
&
)
{
=
.
;
=
.
;
.
;
.
?
.
() :
nullptr
;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
=
.
;
#endif
return
*
this
;
}
::
::
()
const
{
return
;
}
*
::
()
const
{
return
;
}
<
>
::
()
const
{
return
;
}
<
>
::
()
const
{
return
;
}
bool
::
()
const
{
return
==
;
}
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
*
::
()
const
{
switch
(
)
{
case
:
case
:
return
?
->
():
0
;
case
:
return
;
default
:;
}
return
0
;
}
::
()
const
{
switch
(
)
{
case
:
return
()->
()+
L"*"
;
case
:
return
L"Ptr<"
+
()->
()+
L">"
;
case
:
return
()->
();
default
:
return
L"null"
;
}
}
bool
::
(
*
,
)
const
{
if
(
==
()->
())
{
return
true
;
}
switch
(
)
{
case
:
return
!=
;
case
:
case
:
if
(
!=
&&
!=
)
return
false
;
break
;
case
:
return
==
;
}
return
()->
(
);
}
bool
::
(
*
)
const
{
if
(
==
&&
->
()==
::
)
{
return
true
;
}
=
::
;
{
*
=
;
while
(
currentType
)
{
switch
(
->
())
{
case
::
:
targetValueType
=
;
currentType
=
0
;
break
;
case
::
:
targetValueType
=
;
currentType
=
0
;
break
;
case
::
:
case
::
:
targetValueType
=
;
currentType
=
0
;
break
;
default
:
currentType
=
currentType
->
();
}
}
}
return
(
->
(),
targetValueType
);
}
#endif
::
(
*
)
{
return
(
);
}
::
(
<
>
)
{
return
(
);
}
::
(
<
>
,
*
)
{
return
(
,
);
}
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
*
::
(
*
,
collections
::
<
>&
)
{
if
(
->
()==
1
)
{
return
->
(
0
);
}
<
*>
;
for
(
=
0
;
i
<
->
();
i
++)
{
*
=
->
(
i
);
if
(
method
->
()==
.
())
{
methods
.
(
method
);
}
}
if
(
methods
.
()==
0
)
{
throw
ArgumentCountMismtatchException
(
);
}
else
if
(
methods
.
()==
1
)
{
return
methods
0
];
}
else
{
for
(
=
0
;
i
<
methods
.
();
i
++)
{
*
=
methods
i
];
try
{
method
->
(
);
return
method
;
}
catch
(
const
&)
{
}
}
return
methods
0
];
}
}
::
(
*
)
{
<
>
;
return
(
,
arguments
);
}
::
(
*
,
collections
::
<
>&
)
{
*
=
->
();
if
(!
methodGroup
)
throw
ConstructorNotExistsException
(
);
*
=
(
methodGroup
,
);
return
method
->
(
(),
);
}
::
(
const
&
)
{
<
>
;
return
(
,
arguments
);
}
::
(
const
&
,
collections
::
<
>&
)
{
*
=
vl
::
reflection
::
description
::
(
);
if
(!
type
)
throw
(
);
return
(
type
,
);
}
::
(
const
&
,
const
&
)
{
<
>
;
return
(
,
,
arguments
);
}
::
(
const
&
,
const
&
,
collections
::
<
>&
)
{
*
=
vl
::
reflection
::
description
::
(
);
if
(!
type
)
throw
(
);
*
=
type
->
(
,
true
);
if
(!
methodGroup
)
throw
(
,
type
);
*
=
(
methodGroup
,
);
return
method
->
(
(),
);
}
::
(
const
&
)
const
{
*
=
();
if
(!
type
)
throw
(
L"thisObject"
,
);
*
=
type
->
(
,
true
);
if
(!
prop
)
throw
(
,
type
);
return
prop
->
(*
this
);
}
void
::
(
const
&
,
const
&
)
{
*
=
();
if
(!
type
)
throw
(
L"thisObject"
,
);
*
=
type
->
(
,
true
);
if
(!
prop
)
throw
(
,
type
);
prop
->
(*
this
,
);
}
::
(
const
&
)
const
{
<
>
;
return
(
,
arguments
);
}
::
(
const
&
,
collections
::
<
>&
)
const
{
*
=
();
if
(!
type
)
throw
(
L"thisObject"
,
);
*
=
type
->
(
,
true
);
if
(!
methodGroup
)
throw
(
,
type
);
*
=
(
methodGroup
,
);
return
method
->
(*
this
,
);
}
<
>
::
(
const
&
,
const
&
)
const
{
*
=
();
if
(!
type
)
throw
(
L"thisObject"
,
);
*
=
type
->
(
,
true
);
if
(!
eventInfo
)
throw
(
,
type
);
<
>
=
<
<
>>(
,
description
::
<
>(),
L"function"
);
return
eventInfo
->
(*
this
,
proxy
);
}
bool
::
(
const
&
,
<
>
)
const
{
*
=
();
if
(!
type
)
throw
(
L"thisObject"
,
);
*
=
type
->
(
,
true
);
if
(!
eventInfo
)
throw
(
,
type
);
return
eventInfo
->
(*
this
,
);
}
#endif
bool
::
()
{
if
(
!=
)
return
false
;
if
(!
)
return
false
;
->
(
true
);
*
this
();
return
true
;
}
#ifndef VCZH_DEBUG_NO_REFLECTION
class
:
public
,
public
{
public
:
static
;
protected
:
<
,
<
>>
;
<
<
>>
;
*
=
nullptr
;
bool
=
false
;
public
:
()
{
}
()
{
();
}
()
override
{
return
.
().
();
}
*
(
)
override
{
return
.
().
(
).
();
}
*
(
const
&
)
override
{
=
.
().
(
);
return
index
== -
1
?
0
:
.
().
(
index
).
();
}
bool
(
const
&
,
<
>
)
override
{
if
(
&&
!=
())
{
return
false
;
}
if
(!
.
().
(
))
{
if
(
)
{
.
(
,
);
++;
return
true
;
}
}
else
{
if
(!
)
{
.
(
);
++;
return
true
;
}
}
return
false
;
}
bool
(
<
>
)
override
{
=
.
(
.
());
if
(
index
== -
1
)
{
.
(
);
if
(
)
{
auto
=
;
(
this
);
=
oldTypeVersion
+
1
;
}
return
true
;
}
else
{
return
false
;
}
}
bool
(
<
>
)
override
{
=
.
(
.
());
if
(
index
!= -
1
)
{
if
(
)
{
auto
=
;
(
this
);
=
oldTypeVersion
+
1
;
}
.
(
index
);
return
true
;
}
else
{
return
false
;
}
}
bool
()
override
{
if
(!
)
{
=
true
;
auto
=
;
for
(
=
0
;
i
<
.
();
i
++)
{
i
]
(
this
);
}
=
oldTypeVersion
+
1
;
return
true
;
}
else
{
return
false
;
}
}
bool
()
override
{
if
(
)
{
=
false
;
=
0
;
auto
=
;
for
(
=
0
;
i
<
.
();
i
++)
{
i
]
(
this
);
}
=
oldTypeVersion
+
1
;
.
();
return
true
;
}
else
{
return
false
;
}
}
bool
()
override
{
();
();
return
true
;
}
bool
()
override
{
return
;
}
*
()
override
{
if
(!
)
{
=
description
::
<
>();
}
return
;
}
()
override
{
return
;
}
};
::
= -
1
;
*
=
0
;
bool
initializedGlobalTypeManager
=
false
;
*
()
{
if
(!
initializedGlobalTypeManager
)
{
initializedGlobalTypeManager
=
true
;
globalTypeManager
=
new
;
}
return
globalTypeManager
;
}
bool
()
{
if
(
initializedGlobalTypeManager
&&
globalTypeManager
)
{
delete
globalTypeManager
;
globalTypeManager
=
nullptr
;
::
++;
return
true
;
}
else
{
return
false
;
}
}
bool
()
{
if
(!
())
return
false
;
initializedGlobalTypeManager
=
false
;
return
true
;
}
*
(
const
&
)
{
if
(
globalTypeManager
)
{
if
(!
globalTypeManager
->
())
{
globalTypeManager
->
();
}
return
globalTypeManager
->
(
);
}
return
nullptr
;
}
(
*
)
{
if
(
auto
=
->
())
{
if
(
cpp
->
()
L"void"
||
cpp
->
() ==
L"vl::reflection::description::VoidValue"
)
{
return
L"void"
;
}
else
if
(
cpp
->
()
L"float"
)
{
return
L"float"
;
}
else
if
(
cpp
->
()
L"double"
)
{
return
L"double"
;
}
else
if
(
cpp
->
()
L"bool"
)
{
return
L"bool"
;
}
else
if
(
cpp
->
()
L"wchar_t"
)
{
return
L"wchar_t"
;
}
else
{
return
L"::"
+
cpp
->
();
}
}
else
{
return
L"::vl::"
+
->
();
}
}
(
*
)
{
if
(
auto
=
->
())
{
return
cpp
->
();
}
else
if
((
->
()->
()
::
) !=
::
)
{
return
(
L"$This->$Name"
,
false
);
}
else
{
return
(
L"$This.$Name"
,
false
);
}
}
(
*
)
{
if
(
auto
=
->
())
{
return
cpp
->
();
}
if
(
->
())
{
return
(
L"::vl::Func<$Func>(&$Type::$Name)"
,
false
);
}
else
{
return
(
L"::vl::Func<$Func>($This, &$Type::$Name)"
,
false
);
}
}
(
*
)
{
if
(
auto
=
->
())
{
return
cpp
->
();
}
if
(
->
() ==
->
()->
())
{
return
(
L"new $Type($Arguments)"
,
false
);
}
else
if
(
->
())
{
return
(
L"$Type::$Name($Arguments)"
,
false
);
}
else
{
return
(
L"$This->$Name($Arguments)"
,
false
);
}
}
(
*
)
{
auto
=
->
();
return
cpp
==
nullptr
?
(
L"::vl::__vwsn::EventAttach($This->$Name, $Handler)"
,
false
) :
cpp
->
();
}
(
*
)
{
auto
=
->
();
return
cpp
==
nullptr
?
(
L"::vl::__vwsn::EventDetach($This->$Name, $Handler)"
,
false
) :
cpp
->
();
}
(
*
)
{
auto
=
->
();
return
cpp
==
nullptr
?
(
L"::vl::__vwsn::EventInvoke($This->$Name)($Arguments)"
,
false
) :
cpp
->
();
}
bool
(
*
)
{
auto
=
->
();
return
cpp
==
nullptr
||
cpp
->
() !=
L"*"
;
}
bool
(
*
)
{
if
(
auto
=
->
())
{
return
cpp
->
()
L"*"
;
}
else
if
(
auto
=
->
())
{
return
(
method
);
}
else
{
return
true
;
}
}
bool
(
*
)
{
auto
=
->
();
return
cpp
==
nullptr
||
cpp
->
() !=
L"*"
;
}
bool
(
*
)
{
auto
=
->
();
return
cpp
==
nullptr
||
cpp
->
() !=
L"*"
;
}
#endif
}
}
}