#include "GuiInstanceQuery.h"
namespace
{
namespace
{
using
namespace
collections
;
class
:
public
,
public
::
{
public
:
<
>
;
<
<
>>&
;
<
<
>>&
;
(
<
>
,
<
<
>>&
,
<
<
>>&
)
:context(
), input(
), output(
)
{
}
static
bool
(
*
,
,
<
>
)
{
if
(
->
==
::
&&
->
.
!=
.
())
{
return
false
;
}
if
(
->
==
::
&&
->
.
!=
.
())
{
return
false
;
}
if
(
->
.
!=
L""
)
{
bool
=
!=
::
&&
->
.
==
.
();
bool
=
&&
->
.
==
.
();
return
instanceName
||
styleName
;
}
return
true
;
}
void
(
*
,
<
>
)
{
if
(
)
{
FOREACH_INDEXER(GlobalStringKey, attribute, index, setter->setters.Keys())
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__
.
(
attribute
);
index
++)
{
auto
=
.
()
index
];
FOREACH(Ptr<GuiValueRepr>, value, setterValue->values)
if
(
bool
=
true
)
for
(
const
::
vl
::
collections
::
<
<
>>&
= ::
vl
::
collections
::
(
setterValue
);
__scope_variable_flag__
;
__scope_variable_flag__
=
false
)
for
(
<
>
;
__foreach_iterator__
.
(
value
);)
{
if
(
auto
=
value
.
<
>())
{
if
(
(
,
attribute
,
ctor
))
{
.
(
ctor
);
}
}
if
(
->
==
::
)
{
if
(
auto
=
value
.
<
>())
{
(
,
setter
);
}
}
}
}
}
else
{
if
(
(
,
::
,
))
{
.
(
);
}
if
(
->
==
::
)
{
(
,
);
}
}
}
void
(
*
)
override
{
auto
= &
;
if
(
inputExists
)
{
FOREACH(Ptr<GuiConstructorRepr>, setter, input)
if
(
bool
=
true
)
for
(
const
::
vl
::
collections
::
<
<
>>&
= ::
vl
::
collections
::
(
);
__scope_variable_flag__
;
__scope_variable_flag__
=
false
)
for
(
<
>
;
__foreach_iterator__
.
(
setter
);)
{
(
,
setter
);
}
}
else
{
(
,
0
);
}
}
void
(
*
)
override
{
<
<
>>
;
(
->
,
,
,
temp
);
(
->
,
,
temp
,
);
}
void
(
*
)
override
{
<
<
>>
,
;
(
->
,
,
,
first
);
(
->
,
,
,
second
);
switch
(
->
)
{
case
::
:
(
,
(
first
).Except(
second
).Union(
(
second
).Except(
second
)));
break
;
case
::
:
(
,
(
first
).Intersect(
second
));
break
;
case
::
:
(
,
(
first
).Union(
second
));
break
;
case
::
:
(
,
(
first
).Except(
second
));
break
;
}
}
};
void
(
<
>
,
<
>
,
collections
::
<
<
>>&
,
collections
::
<
<
>>&
)
{
(
,
,
);
(&
visitor
);
}
void
(
<
>
,
<
>
,
collections
::
<
<
>>&
)
{
#if defined(VCZH_GCC) && defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnull-dereference"
#endif
(
,
, *(
<
<
>>*)
0
,
);
#if defined(VCZH_GCC) && defined(__clang__)
#pragma clang diagnostic pop
#endif
}
void
(
<
>
,
<
>
)
{
FOREACH_INDEXER(GlobalStringKey, attribute, srcIndex, src->setters.Keys())
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__
.
(
attribute
);
srcIndex
++)
{
auto
=
.
()
srcIndex
];
=
.
().
(
attribute
);
if
(
dstIndex
== -
1
)
{
.
(
attribute
,
srcValue
);
}
else
{
auto
=
.
()
dstIndex
];
if
(
srcValue
dstValue
)
{
if
(
srcValue
==
::
)
{
(
srcValue
0
].
<
>(),
dstValue
0
].
<
>());
}
else
{
(
dstValue
,
srcValue
,
true
);
}
}
}
}
FOREACH_INDEXER(GlobalStringKey, eventName, srcIndex, src->eventHandlers.Keys())
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__
.
(
eventName
);
srcIndex
++)
{
if
(!
.
().
(
eventName
))
{
auto
=
.
()
srcIndex
];
.
(
eventName
,
srcValue
);
}
}
FOREACH_INDEXER(GlobalStringKey, varName, srcIndex, src->environmentVariables.Keys())
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__
.
(
varName
);
srcIndex
++)
{
if
(!
.
().
(
varName
))
{
auto
=
.
()
srcIndex
];
.
(
varName
,
srcValue
);
}
}
}
void
(
<
>
,
<
>
)
{
(
().
<
>(),
);
}
class
:
public
,
public
::
{
public
:
stream
::
&
;
(
stream
::
&
)
:writer(
)
{
}
void
(
*
)
override
{
switch
(
->
)
{
case
::
:
.
(
L"/"
);
break
;
case
::
:
.
(
L"//"
);
break
;
}
if
(
->
==
::
)
{
.
(
L'@'
);
.
(
->
.
);
.
(
L':'
);
}
if
(
->
==
::
)
{
.
(
->
.
);
}
else
{
.
(
L'*'
);
}
if
(
->
.
!=
L""
)
{
.
(
L'.'
);
.
(
->
.
);
}
}
void
(
*
)
override
{
->
(
this
);
->
(
this
);
}
void
(
*
)
override
{
.
(
L'('
);
->
(
this
);
switch
(
->
)
{
case
::
:
.
(
L" ^ "
);
break
;
case
::
:
.
(
L" * "
);
break
;
case
::
:
.
(
L" + "
);
break
;
case
::
:
.
(
L" - "
);
break
;
}
->
(
this
);
.
(
L')'
);
}
};
void
(
<
>
,
stream
::
&
)
{
(
);
(&
visitor
);
}
}
}