#include "GuiInstanceLoader_TemplateControl.h"
#ifndef VCZH_DEBUG_NO_REFLECTION
namespace
 
{
	
namespace
 
	{
		
namespace
 
		{
			
class
  : 
public
 , 
public
 
			{
			
protected
:
				
					;
				
					;
			
public
:
				
()
				{
					
 = 
::
(
description
::
<
>::
.typeName);
					
 = 
::
(
L"AxisDirection"
);
				}
				
 ()
override
				{
					
return
 ;
				}
				
void
 (
const
 & 
, 
collections
::
<
>& 
)
override
				{
					
if
 (
(
))
					{
						
.
(
);
					}
				}
				
void
 (
const
 & 
, 
collections
::
<
>& 
)
override
				{
					
(
, 
);
				}
				
<
> 
(
const
 & 
)
override
				{
					
if
 (
.
  )
					{
						
auto
  = 
::
(
<
>::
());
						
info
 = 
::
;
						
return
 info
;
					}
					
return
 ::
(
);
				}
				
bool
 (
const
 & 
)
override
				{
					
return
   .
;
				}
				
<
workflow
::
> 
(
GuiResourcePrecompileContext
& 
, 
types
::
& 
, 
const
 & 
, 
 , 
& 
, 
 , 
::
& 
)
override
				{
					
if
 (
(
))
					{
						
  = 
.
().
(
);
						
if
 (
indexAxisDirection
 != -
1
)
						{
							
auto
  = 
<
>();
							
createExpr
  (
<
<
>>::
().
());
							
createExpr
.
(
.
(
indexAxisDirection
)
0
].
);
							
auto
  = 
<
>();
							
refVariable
.
  .
();
							
auto
  = 
<
>();
							
assignExpr
 = 
::
;
							
assignExpr
  refVariable
;
							
assignExpr
  createExpr
;
							
auto
  = 
<
>();
							
assignStat
  assignExpr
;
							
return
 assignStat
;
						}
					}
					
return
 nullptr
;
				}
			};
			
class
 GuiCompositionInstanceLoader
 : 
public
 , 
public
 
			{
			
protected
:
				
					;
			
public
:
				
GuiCompositionInstanceLoader
()
				{
					
 = 
::
(
description
::
<
>::
.typeName);
				}
				
 ()
override
				{
					
return
 ;
				}
				
void
 (
const
 & 
, 
collections
::
<
>& 
)
override
				{
					
.
(
::
);
				}
				
<
> 
(
const
 & 
)
override
				{
					
if
 (
.
 == 
::
)
					{
						
auto
  = 
::
(
nullptr
);
						
info
.
(
<
*>::
());
						
info
.
(
<
*>::
());
						
info
.
(
<
<
>>::
());
						
if
 (
.
.
()->
(
description
::
<
>()))
						{
							
info
.
(
<
*>::
());
						}
						
return
 info
;
					}
					
return
 ::
(
);
				}
				
<
workflow
::
> 
(
GuiResourcePrecompileContext
& 
, 
types
::
& 
, 
const
 & 
, 
 , 
& 
, 
 , 
::
& 
)
override
				{
					
auto
  = 
<
>();
					FOREACH_INDEXER(GlobalStringKey, prop, index, arguments.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__
.
(
prop
);
index
++)
 
					{
						
const
 auto
& 
 = 
.
(
index
);
						
if
 (
prop
 == 
::
)
						{
							
auto
  = 
values
0
].
;
							
auto
  = 
values
0
].
();
							
<
> 
;
							
if
 (
td
->
(
description
::
<
>()))
							{
								
auto
  = 
<
>();
								
refControl
.
  .
();
								
auto
  = 
<
>();
								
refAddComponent
  refControl
;
								
refAddComponent
.
 = 
L"AddComponent"
;
								
auto
  = 
<
>();
								
call
  refAddComponent
;
								
call
.
(
value
);
								
expr
  call
;
							}
							
else
 if
 (
td
->
(
description
::
<
>()))
							{
								
auto
  = 
<
>();
								
refControl
.
  .
();
								
auto
 refAddControlHostComponent
 = 
<
>();
								
refAddControlHostComponent
  refControl
;
								
refAddControlHostComponent
.
 = 
L"AddControlHostComponent"
;
								
auto
  = 
<
>();
								
call
  refAddControlHostComponent
;
								
call
.
(
value
);
								
expr
  call
;
							}
							
else
 if
 (
td
->
(
description
::
<
>()))
							{
								
auto
  = 
<
>();
								
refComposition
.
  .
();
								
auto
  = 
<
>();
								
refOwnedElement
  refComposition
;
								
refOwnedElement
.
 = 
L"OwnedElement"
;
								
auto
  = 
<
>();
								
assign
 = 
::
;
								
assign
  refOwnedElement
;
								
assign
  value
;
								
expr
  assign
;
							}
							
else
 if
 (
td
->
(
description
::
<
>()))
							{
								
auto
  = 
<
>();
								
refBoundsComposition
  value
;
								
refBoundsComposition
.
 = 
L"BoundsComposition"
;
								
auto
  = 
<
>();
								
refComposition
.
  .
();
								
auto
  = 
<
>();
								
refAddChild
  refComposition
;
								
refAddChild
.
 = 
L"AddChild"
;
								
auto
  = 
<
>();
								
call
  refAddChild
;
								
call
.
(
refBoundsComposition
);
								
expr
  call
;
							}
							
else
 if
 (
td
->
(
description
::
<
>()))
							{
								
auto
  = 
<
>();
								
refComposition
.
  .
();
								
auto
  = 
<
>();
								
refAddChild
  refComposition
;
								
refAddChild
.
 = 
L"AddChild"
;
								
auto
  = 
<
>();
								
call
  refAddChild
;
								
call
.
(
value
);
								
expr
  call
;
							}
							
if
 (
expr
)
							{
								
auto
  = 
<
>();
								
stat
  expr
;
								
block
.
(
stat
);
							}
						}
					}
					
if
 (
block
.
() > 
0
)
					{
						
return
 block
;
					}
					
return
 nullptr
;
				}
			};
			
class
 GuiTableCompositionInstanceLoader
 : 
public
 , 
public
 
			{
			
protected
:
				
					;
				
					, 
;
			
public
:
				
GuiTableCompositionInstanceLoader
()
				{
					
 = 
::
(
description
::
<
>::
.typeName);
					
 = 
::
(
L"Rows"
);
					
 = 
::
(
L"Columns"
);
				}
				
 ()
override
				{
					
return
 ;
				}
				
void
 (
const
 & 
, 
collections
::
<
>& 
)
override
				{
					
.
(
);
					
.
(
);
				}
				
void
 (
const
 & 
, 
collections
::
<
>& 
)
override
				{
					
if
 (
.
   || 
.
 == 
)
					{
						
.
(
);
						
.
(
);
					}
				}
				
<
> 
(
const
 & 
)
override
				{
					
if
 (
.
   || 
.
 == 
)
					{
						
return
 ::
(
<
>::
());
					}
					
return
 ::
(
);
				}
				
<
workflow
::
> 
(
GuiResourcePrecompileContext
& 
, 
types
::
& 
, 
const
 & 
, 
 , 
& 
, 
 , 
::
& 
)
override
				{
					
auto
  = 
<
>();
					FOREACH_INDEXER(GlobalStringKey, prop, index, arguments.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__
.
(
prop
);
index
++)
 
					{
						
if
 (
prop
  )
						{
							
auto
  = 
.
().
(
);
							
if
 (
indexColumns
 != -
1
)
							{
								
auto
& 
 = 
.
(
index
);
								
auto
& 
 = 
.
(
indexColumns
);
								{
									
auto
  = 
<
>();
									
refComposition
.
  .
();
									
auto
  = 
<
>();
									
refSetRowsAndColumns
  refComposition
;
									
refSetRowsAndColumns
.
 = 
L"SetRowsAndColumns"
;
									
auto
  = 
<
>();
									
rowsExpr
.
  (
rows
.
());
									
auto
  = 
<
>();
									
columnsExpr
.
  (
columns
.
());
									
auto
  = 
<
>();
									
call
  refSetRowsAndColumns
;
									
call
.
(
rowsExpr
);
									
call
.
(
columnsExpr
);
									
auto
  = 
<
>();
									
stat
  call
;
									
block
.
(
stat
);
								}
								
for
 (
  = 
0
; 
i
 < 
rows
.
(); 
i
++)
								{
									
auto
  = 
<
>();
									
refComposition
.
  .
();
									
auto
  = 
<
>();
									
refSetRowOption
  refComposition
;
									
refSetRowOption
.
 = 
L"SetRowOption"
;
									
auto
  = 
<
>();
									
indexExpr
.
  (
i
);
									
auto
  = 
<
>();
									
call
  refSetRowOption
;
									
call
.
(
indexExpr
);
									
call
.
(
rows
i
].
);
									
auto
  = 
<
>();
									
stat
  call
;
									
block
.
(
stat
);
								}
								
for
 (
  = 
0
; 
i
 < 
columns
.
(); 
i
++)
								{
									
auto
  = 
<
>();
									
refComposition
.
  .
();
									
auto
  = 
<
>();
									
refSetColumnOption
  refComposition
;
									
refSetColumnOption
.
 = 
L"SetColumnOption"
;
									
auto
  = 
<
>();
									
indexExpr
.
  (
i
);
									
auto
  = 
<
>();
									
call
  refSetColumnOption
;
									
call
.
(
indexExpr
);
									
call
.
(
columns
i
].
);
									
auto
  = 
<
>();
									
stat
  call
;
									
block
.
(
stat
);
								}
							}
						}
					}
					
if
 (
block
.
() > 
0
)
					{
						
return
 block
;
					}
					
return
 nullptr
;
				}
			};
			
class
 GuiCellCompositionInstanceLoader
 : 
public
 , 
public
 
			{
			
protected
:
				
					;
				
					;
			
public
:
				
GuiCellCompositionInstanceLoader
()
				{
					
 = 
::
(
description
::
<
>::
.typeName);
					
 = 
::
(
L"Site"
);
				}
				
 ()
override
				{
					
return
 ;
				}
				
void
 (
const
 & 
, 
collections
::
<
>& 
)
override
				{
					
.
(
);
				}
				
<
> 
(
const
 & 
)
override
				{
					
if
 (
.
  )
					{
						
return
 ::
(
<
>::
());
					}
					
return
 ::
(
);
				}
				
<
workflow
::
> 
(
GuiResourcePrecompileContext
& 
, 
types
::
& 
, 
const
 & 
, 
 , 
& 
, 
 , 
::
& 
)
override
				{
					
auto
  = 
<
>();
					FOREACH_INDEXER(GlobalStringKey, prop, index, arguments.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__
.
(
prop
);
index
++)
 
					{
						
if
 (
prop
  )
						{
							
 ;
							{
								
auto
  = 
.
(
index
)
0
].
;
								
if
 (
auto
  = 
siteExpr
.
<
>())
								{
									
if
 (
auto
  = 
inferExpr
.
<
>())
									{
										
auto
  = 
description
::
<
>()->
();
										FOREACH(Ptr<WfConstructorArgument>, argument, ctorExpr->arguments)
										if
(
bool
 =
true
) 
for
(
const
 ::
vl
::
collections
::
<
<
>>& 
 = ::
vl
::
collections
::
(
ctorExpr
);
__scope_variable_flag__
;
__scope_variable_flag__
=
false
) 
for
(
<
> 
;
__foreach_iterator__
.
(
argument
);)
 
										{
											
if
 (
auto
  = 
argument
.
<
>())
											{
												
if
 (
auto
  = 
argument
.
<
>())
												{
													
 ;
													
if
 (
st
->
(
valueExpr
.
, 
value
))
													{
														
  = 
<
>(
value
);
														
if
 (
keyExpr
.
 == 
L"row"
)
														{
															
site
.
 = 
propValue
;
														}
														
else
 if
 (
keyExpr
.
 == 
L"column"
)
														{
															
site
.
 = 
propValue
;
														}
														
else
 if
 (
keyExpr
.
 == 
L"rowSpan"
)
														{
															
site
.
 = 
propValue
;
														}
														
else
 if
 (
keyExpr
.
 == 
L"columnSpan"
)
														{
															
site
.
 = 
propValue
;
														}
														
else
														{
															
goto
 ILLEGAL_SITE_PROPERTY;
														}
														
continue
;
													}
												}
											}
											
goto
 ILLEGAL_SITE_PROPERTY;
										}
										
goto
 FINISH_SITE_PROPERTY;
									}
								}
							ILLEGAL_SITE_PROPERTY:
								
.
(
({ 
.
 }, 
,
									
L"Precompile: The value of property \"Site\" of type \""
 +
									
.
.
() +
									
L"\" is not in a correct format: \"row:<integer> column:<integer> [rowSpan:<integer>] [columnSpan:<integer>]\"."
));
								
continue
;
							}
						FINISH_SITE_PROPERTY:;
							{
								
auto
  = 
<
>();
								
refComposition
.
  .
();
								
auto
  = 
<
>();
								
refSetSite
  refComposition
;
								
refSetSite
.
 = 
L"SetSite"
;
								
auto
  = 
<
>();
								
call
  refSetSite
;
								{
									
auto
  = 
<
>();
									
arg
.
  (
site
.
);
									
call
.
(
arg
);
								}
								{
									
auto
  = 
<
>();
									
arg
.
  (
site
.
);
									
call
.
(
arg
);
								}
								{
									
auto
  = 
<
>();
									
arg
.
  (
site
.
);
									
call
.
(
arg
);
								}
								{
									
auto
  = 
<
>();
									
arg
.
  (
site
.
);
									
call
.
(
arg
);
								}
								
auto
  = 
<
>();
								
stat
  call
;
								
block
.
(
stat
);
							}
						}
					}
					
if
 (
block
.
() > 
0
)
					{
						
return
 block
;
					}
					
return
 nullptr
;
				}
			};
			
void
 (
IGuiInstanceLoaderManager
* 
)
			{
				
->
(
new
 );
				
->
(
new
 GuiCompositionInstanceLoader
);
				
->
(
new
 GuiTableCompositionInstanceLoader
);
				
->
(
new
 GuiCellCompositionInstanceLoader
);
			}
		}
	}
}
#endif