#ifndef VCZH_WORKFLOW_LIBRARY_CPPLIBRARY
#define VCZH_WORKFLOW_LIBRARY_CPPLIBRARY
#include <VlppReflection.h>
namespace
{
namespace
{
template
<
typename
>
struct
{
*
;
(
*
)
:function(
)
{
}
()
{
->
operator
()();
}
};
template
<
typename
>
*
(
*
)
{
CHECK_ERROR(thisValue != nullptr, L"The this pointer cannot be null.");
do
{
if
(!(
!=
nullptr
))
throw
(
L"The this pointer cannot be null."
);}
while
(
0
);
return
;
}
template
<
typename
>
*
(
*
)
{
CHECK_ERROR(pointer != nullptr, L"The pointer cannot be null.");
do
{
if
(!(
!=
nullptr
))
throw
(
L"The pointer cannot be null."
);}
while
(
0
);
return
;
}
template
<
typename
>
<
>&
(
<
>&
)
{
CHECK_ERROR(pointer != nullptr, L"The pointer cannot be null.");
do
{
if
(!(
nullptr
))
throw
(
L"The pointer cannot be null."
);}
while
(
0
);
return
;
}
template
<
typename
>
<
>
(
<
>&&
)
{
CHECK_ERROR(pointer != nullptr, L"The pointer cannot be null.");
do
{
if
(!(
nullptr
))
throw
(
L"The pointer cannot be null."
);}
while
(
0
);
return
(
);
}
template
<
typename
>
<
>
(
<
>&&
)
{
CHECK_ERROR(nullable, L"The pointer cannot be null.");
do
{
if
(!(
))
throw
(
L"The pointer cannot be null."
);}
while
(
0
);
return
(
);
}
template
<
typename
>
<
>&
(
<
>&
)
{
CHECK_ERROR(nullable, L"The pointer cannot be null.");
do
{
if
(!(
))
throw
(
L"The pointer cannot be null."
);}
while
(
0
);
return
;
}
template
<
typename
>
(
const
&
)
{
using
=
typename
<
>::
;
;
CHECK_ERROR(reflection::description::TypedValueSerializerProvider<T>::Serialize(value, str), L"Failed to serialize.");
do
{
if
(!(
reflection
::
description
::
TypedValueSerializerProvider
<
>::
(
,
str
)))
throw
(
L"Failed to serialize."
);}
while
(
0
);
return
str
;
}
template
<
typename
>
(
const
&
)
{
using
=
typename
<
>::
;
;
CHECK_ERROR(reflection::description::TypedValueSerializerProvider<T>::Deserialize(str, value), L"Failed to serialize.");
do
{
if
(!(
reflection
::
description
::
TypedValueSerializerProvider
<
>::
(
,
value
)))
throw
(
L"Failed to serialize."
);}
while
(
0
);
return
value
;
}
template
<
typename
,
typename
>
struct
{
static
<
>
(
<
>
)
{
return
<
>(
static_cast
<
>(
.
()));
}
};
template
<
typename
>
struct
<
,
>
{
static
<
>
(
<
>
)
{
return
<
>(
(
.
()));
}
};
template
<
typename
>
struct
<
,
>
{
static
<
>
(
<
>
)
{
return
<
>(
<
>(
.
()));
}
};
template
<
typename
,
typename
>
<
>
(
<
>
)
{
if
(!
)
return
<
>();
return
<
,
>::
(
);
}
template
<
typename
,
typename
>
*
(
*
)
{
if
(!
)
return
nullptr
;
return
->
template
SafeAggregationCast<
>();
}
template
<
typename
,
typename
>
<
>
(
*
)
{
if
(!
)
return
nullptr
;
return
->
template
SafeAggregationCast<
>();
}
template
<
typename
>
reflection
::
description
::
(
const
&
)
{
using
=
typename
<
>::
;
return
reflection
::
description
::
<
>(
const_cast
<
&>(
));
}
template
<
typename
>
(
const
reflection
::
description
::
&
)
{
using
=
typename
<
>::
;
;
reflection
::
description
::
<
>(
,
result
);
return
result
;
}
template
<
typename
>
struct
{
};
template
<
typename
>
struct
<
*>
{
static
*
(
const
reflection
::
description
::
&
)
{
if
(
.
())
return
nullptr
;
return
.
()->
<
>();
}
};
template
<
typename
>
struct
<
<
>>
{
static
<
>
(
const
reflection
::
description
::
&
)
{
if
(
.
())
return
nullptr
;
return
.
()->
<
>();
}
};
template
<
typename
>
struct
<
<
>>
{
static
<
>
(
const
reflection
::
description
::
&
)
{
if
(
.
())
return
<
>();
auto
=
.
().
<
reflection
::
description
::
::
<
>>();
if
(!
boxed
)
return
<
>();
return
<
>(
boxed
);
}
};
template
<
typename
>
(
const
reflection
::
description
::
&
)
{
using
=
typename
<
>::
;
return
<
>::
(
);
}
template
<
typename
>
collections
::
<
>
(
,
)
{
return
collections
::
<
>(
,
-
);
}
template
<
typename
>
bool
(
const
&
,
const
collections
::
<
>&
)
{
return
.
([&](
const
&
) {
return
element
==
; });
}
template
<
typename
>
bool
(
const
&
,
<
reflection
::
description
::
>
)
{
return
<
>(
,
reflection
::
description
::
<
>(
));
}
template
<
typename
,
typename
>
<
>
(
const
&
)
{
auto
=
reflection
::
description
::
<
>(
const_cast
<
&>(
));
<
>
;
reflection
::
description
::
<
<
>>(
boxedValue
,
result
);
return
result
;
}
template
<
typename
,
typename
>
<
>
(
const
collections
::
<
>&
)
{
auto
=
reflection
::
description
::
<
collections
::
<
>>(
const_cast
<
collections
::
<
>&>(
));
<
>
;
reflection
::
description
::
<
<
>>(
boxedValue
,
result
);
return
result
;
}
struct
{
using
=
reflection
::
description
::
;
<
>
;
();
(
<
>
);
template
<
typename
>
(
const
&
)
{
(
(
));
return
{
};
}
};
struct
{
using
=
reflection
::
description
::
;
<
>
;
();
(
<
>
);
template
<
typename
>
(
const
&
)
{
(
(
));
return
{
};
}
};
struct
{
using
=
reflection
::
description
::
;
<
>
;
();
(
<
>
);
template
<
typename
,
typename
>
(
const
&
,
const
&
)
{
(
(
),
(
));
return
{
};
}
};
template
<
typename
>
struct
{
};
template
<
typename
>
<
reflection
::
description
::
>
(
&
,
typename
<
>::Handler
)
{
return
<
>::
(
,
);
}
template
<
typename
>
bool
(
&
,
<
reflection
::
description
::
>
)
{
return
<
>::
(
,
);
}
template
<
typename
>
decltype
(
auto
)
(
&
)
{
return
<
>::
(
);
}
template
<
typename
...
>
struct
<
<
void
(
...)>>
{
using
=
const
<
void
(
...)>&;
class
:
public
,
public
reflection
::
description
::
{
public
:
<
>
;
(
<
>
)
:handler(
)
{
}
bool
()
override
{
return
();
}
};
static
<
reflection
::
description
::
>
(
<
void
(
...)>&
,
)
{
return
<
>(
.
(
));
}
static
bool
(
<
void
(
...)>&
,
<
reflection
::
description
::
>
)
{
auto
=
.
<
>();
if
(!
impl
)
return
false
;
return
.
(
impl
);
}
static
<
void
(
...)>&
(
<
void
(
...)>&
)
{
return
;
}
};
}
}
#endif