#ifndef VCZH_PRESENTATION_CONTROLS_GUIBINDABLELISTCONTROLS
#define VCZH_PRESENTATION_CONTROLS_GUIBINDABLELISTCONTROLS
#include "GuiTextListControls.h"
#include "GuiListViewControls.h"
#include "GuiTreeViewControls.h"
namespace
{
namespace
{
namespace
{
template
<
typename
>
struct
{
static
()
{
return
reflection
::
description
::
TypedValueSerializerProvider
<
>::
();
}
};
template
<
typename
>
struct
<
<
>>
{
static
<
>
()
{
return
nullptr
;
}
};
template
<>
struct
<
description
::
>
{
static
description
::
()
{
return
description
::
();
}
};
template
<
typename
>
(
const
description
::
&
,
const
<
>&
)
{
if
(!
.
() &&
)
{
return
);
}
else
{
return
<
>::
();
}
}
template
<
typename
>
(
const
description
::
&
,
const
<
>&
)
{
auto
=
<
>::
();
if
(!
.
() &&
)
{
return
,
defaultValue
,
false
);
}
else
{
return
defaultValue
;
}
}
template
<
typename
>
void
(
const
description
::
&
,
const
<
>&
,
const
&
)
{
if
(!
.
() &&
)
{
,
,
true
);
}
}
class
:
public
,
public
<
>
{
protected
:
class
:
public
list
::
,
protected
list
::
{
protected
:
<
>
;
<
description
::
>
;
public
:
<
>
;
<
bool
>
;
public
:
();
();
<
description
::
>
();
void
(
<
description
::
>
);
description
::
(
);
void
();
(
)
override
;
description
::
(
)
override
;
()
override
;
*
(
const
&
)
override
;
bool
(
)
override
;
void
(
,
bool
)
override
;
};
protected
:
*
;
public
:
(
theme
::
);
();
compositions
::
;
compositions
::
;
<
description
::
>
();
void
(
<
description
::
>
);
<
>
();
void
(
const
<
>&
);
<
bool
>
();
void
(
const
<
bool
>&
);
description
::
();
};
class
:
public
,
public
<
>
{
protected
:
class
:
public
list
::
,
protected
virtual
list
::
,
public
virtual
list
::
,
public
virtual
list
::
ListViewColumnItemArranger
::
{
typedef
collections
::
<
list
::
ListViewColumnItemArranger
::
*>
ColumnItemViewCallbackList
;
protected
:
list
::
;
list
::
;
ColumnItemViewCallbackList
;
<
>
;
<
description
::
>
;
public
:
<
<
>>
;
<
<
>>
;
public
:
();
();
<
description
::
>
();
void
(
<
description
::
>
);
description
::
(
);
void
();
bool
(
,
);
list
::
&
();
list
::
&
();
void
()
override
;
void
()
override
;
(
)
override
;
description
::
(
)
override
;
()
override
;
*
(
const
&
)
override
;
<
>
(
)
override
;
<
>
(
)
override
;
(
)
override
;
(
,
)
override
;
()
override
;
(
)
override
;
()
override
;
(
)
override
;
bool
(
list
::
ListViewColumnItemArranger
::
*
)
override
;
bool
(
list
::
ListViewColumnItemArranger
::
*
)
override
;
(
)
override
;
void
(
,
)
override
;
* (
)
override
;
(
)
override
;
};
protected
:
*
;
public
:
(
theme
::
);
();
list
::
&
();
list
::
&
();
<
description
::
>
();
void
(
<
description
::
>
);
compositions
::
LargeImagePropertyChanged
;
compositions
::
SmallImagePropertyChanged
;
<
<
>>
();
void
(
const
<
<
>>&
);
<
<
>>
();
void
(
const
<
<
>>&
);
description
::
();
};
class
:
public
,
public
<
>
{
using
=
reflection
::
description
::
;
protected
:
class
;
class
:
public
,
public
virtual
tree
::
{
friend
class
;
typedef
collections
::
<
<
>>
;
protected
:
description
::
;
*
;
*
;
tree
::
*
;
bool
=
false
;
<
>
;
<
description
::
>
;
;
<
description
::
>
(
const
description
::
&
);
void
(
<
description
::
>
);
void
();
public
:
(
const
description
::
&
,
*
);
(
*
);
();
description
::
();
void
(
const
description
::
&
);
bool
()
override
;
void
(
bool
)
override
;
CalculateTotalVisibleNodes
()
override
;
()
override
;
<
tree
::
>
()
override
;
<
tree
::
>
(
)
override
;
};
class
:
public
tree
::
,
public
virtual
tree
::
{
friend
class
;
public
:
<
>
;
<
<
>>
;
<
<
>>
;
<
>
;
public
:
();
();
description
::
();
void
(
const
description
::
&
);
void
(
bool
);
<
tree
::
>
()
override
;
(
tree
::
*
)
override
;
description
::
(
tree
::
*
)
override
;
*
(
const
&
)
override
;
<
>
(
tree
::
*
)
override
;
};
protected
:
*
;
public
:
(
theme
::
);
();
compositions
::
;
compositions
::
;
compositions
::
;
description
::
();
void
(
description
::
);
<
>
();
void
(
const
<
>&
);
<
<
>>
();
void
(
const
<
<
>>&
);
<
<
>>
();
void
(
const
<
<
>>&
);
description
::
();
};
}
}
}
#endif