/***********************************************************************
!!!!!! DO NOT MODIFY !!!!!!

GacGen.exe Resource.xml

This file is generated by Workflow compiler
https://github.com/vczh-libraries
***********************************************************************/

#include "DemoReflection.h"

#if defined( _MSC_VER)
#pragma warning(push)
#pragma warning(disable:4250)
#elif defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wparentheses-equality"
#elif defined(__GNUC__)
#pragma GCC diagnostic push
#endif

/***********************************************************************
Reflection
***********************************************************************/

namespace vl
{
	namespace reflection
	{
		namespace description
		{
#ifndef VCZH_DEBUG_NO_REFLECTION
			IMPL_CPP_TYPE_INFO(demo::CategoryDisplayer)
			IMPL_CPP_TYPE_INFO(demo::CategoryDisplayerConstructor)
			IMPL_CPP_TYPE_INFO(demo::CategoryEditor)
			IMPL_CPP_TYPE_INFO(demo::CategoryEditorConstructor)
			IMPL_CPP_TYPE_INFO(demo::CategoryItemTemplate)
			IMPL_CPP_TYPE_INFO(demo::CategoryItemTemplateConstructor)
			IMPL_CPP_TYPE_INFO(demo::CategoryVisualizer)
			IMPL_CPP_TYPE_INFO(demo::CategoryVisualizerConstructor)
			IMPL_CPP_TYPE_INFO(demo::DateEditor)
			IMPL_CPP_TYPE_INFO(demo::DateEditorConstructor)
			IMPL_CPP_TYPE_INFO(demo::DateFilter)
			IMPL_CPP_TYPE_INFO(demo::DateFilterConstructor)
			IMPL_CPP_TYPE_INFO(demo::GenderDisplayer)
			IMPL_CPP_TYPE_INFO(demo::GenderDisplayerConstructor)
			IMPL_CPP_TYPE_INFO(demo::GenderEditor)
			IMPL_CPP_TYPE_INFO(demo::GenderEditorConstructor)
			IMPL_CPP_TYPE_INFO(demo::GenderItemTemplate)
			IMPL_CPP_TYPE_INFO(demo::GenderItemTemplateConstructor)
			IMPL_CPP_TYPE_INFO(demo::GenderVisualizer)
			IMPL_CPP_TYPE_INFO(demo::GenderVisualizerConstructor)
			IMPL_CPP_TYPE_INFO(demo::MainWindow)
			IMPL_CPP_TYPE_INFO(demo::MainWindowConstructor)
			IMPL_CPP_TYPE_INFO(demo::MyCategory)
			IMPL_CPP_TYPE_INFO(demo::MyDataItem)
			IMPL_CPP_TYPE_INFO(demo::MyGender)
			IMPL_CPP_TYPE_INFO(demo::TextEditor)
			IMPL_CPP_TYPE_INFO(demo::TextEditorConstructor)

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
#define _ ,
			BEGIN_CLASS_MEMBER(::demo::CategoryDisplayer)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryDisplayerConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl)
				CLASS_MEMBER_BASE(::demo::CategoryDisplayerConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryDisplayer*(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetCategory, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetCategory, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(CategoryChanged)
				CLASS_MEMBER_FIELD(__vwsn_prop_Category)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Category, GetCategory, SetCategory, CategoryChanged)
			END_CLASS_MEMBER(::demo::CategoryDisplayer)

			BEGIN_CLASS_MEMBER(::demo::CategoryDisplayerConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryDisplayerConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_CategoryDisplayer_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::CategoryDisplayerConstructor)

			BEGIN_CLASS_MEMBER(::demo::CategoryEditor)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryEditorConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate)
				CLASS_MEMBER_BASE(::demo::CategoryEditorConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryEditor*(), NO_PARAMETER)
				CLASS_MEMBER_FIELD(items)
			END_CLASS_MEMBER(::demo::CategoryEditor)

			BEGIN_CLASS_MEMBER(::demo::CategoryEditorConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryEditorConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_CategoryEditor_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(comboBox)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::CategoryEditorConstructor)

			BEGIN_CLASS_MEMBER(::demo::CategoryItemTemplate)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryItemTemplateConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate)
				CLASS_MEMBER_BASE(::demo::CategoryItemTemplateConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryItemTemplate*(::demo::MyCategory), { L"__vwsn_ctor_parameter_SelectedCategory" })
				CLASS_MEMBER_METHOD(GetSelectedCategory, NO_PARAMETER)
				CLASS_MEMBER_FIELD(__vwsn_parameter_SelectedCategory)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_READONLY(SelectedCategory, GetSelectedCategory)
			END_CLASS_MEMBER(::demo::CategoryItemTemplate)

			BEGIN_CLASS_MEMBER(::demo::CategoryItemTemplateConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryItemTemplateConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_CategoryItemTemplate_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(SelectedCategory)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::CategoryItemTemplateConstructor)

			BEGIN_CLASS_MEMBER(::demo::CategoryVisualizer)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryVisualizerConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridVisualizerTemplate)
				CLASS_MEMBER_BASE(::demo::CategoryVisualizerConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryVisualizer*(), NO_PARAMETER)
			END_CLASS_MEMBER(::demo::CategoryVisualizer)

			BEGIN_CLASS_MEMBER(::demo::CategoryVisualizerConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryVisualizerConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_CategoryVisualizer_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::CategoryVisualizerConstructor)

			BEGIN_CLASS_MEMBER(::demo::DateEditor)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DateEditorConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate)
				CLASS_MEMBER_BASE(::demo::DateEditorConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::DateEditor*(), NO_PARAMETER)
			END_CLASS_MEMBER(::demo::DateEditor)

			BEGIN_CLASS_MEMBER(::demo::DateEditorConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DateEditorConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_DateEditor_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(comboBox)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::DateEditorConstructor)

			BEGIN_CLASS_MEMBER(::demo::DateFilter)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DateFilterConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl)
				CLASS_MEMBER_BASE(::demo::DateFilterConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::DateFilter*(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetFilter, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetFilter, { L"__vwsn_value_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_METHOD(UpdateFilter, NO_PARAMETER)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Filter)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_READONLY(Filter, GetFilter)
				CLASS_MEMBER_FIELD(callback)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
			END_CLASS_MEMBER(::demo::DateFilter)

			BEGIN_CLASS_MEMBER(::demo::DateFilterConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DateFilterConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_DateFilter_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(checkFrom)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(checkTo)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(dateFrom)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(dateTo)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::DateFilterConstructor)

			BEGIN_CLASS_MEMBER(::demo::GenderDisplayer)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderDisplayerConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl)
				CLASS_MEMBER_BASE(::demo::GenderDisplayerConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::GenderDisplayer*(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetGender, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetGender, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(GenderChanged)
				CLASS_MEMBER_FIELD(__vwsn_prop_Gender)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Gender, GetGender, SetGender, GenderChanged)
			END_CLASS_MEMBER(::demo::GenderDisplayer)

			BEGIN_CLASS_MEMBER(::demo::GenderDisplayerConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderDisplayerConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_GenderDisplayer_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::GenderDisplayerConstructor)

			BEGIN_CLASS_MEMBER(::demo::GenderEditor)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderEditorConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate)
				CLASS_MEMBER_BASE(::demo::GenderEditorConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::GenderEditor*(), NO_PARAMETER)
				CLASS_MEMBER_FIELD(items)
			END_CLASS_MEMBER(::demo::GenderEditor)

			BEGIN_CLASS_MEMBER(::demo::GenderEditorConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderEditorConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_GenderEditor_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(comboBox)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::GenderEditorConstructor)

			BEGIN_CLASS_MEMBER(::demo::GenderItemTemplate)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderItemTemplateConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate)
				CLASS_MEMBER_BASE(::demo::GenderItemTemplateConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::GenderItemTemplate*(::demo::MyGender), { L"__vwsn_ctor_parameter_SelectedGender" })
				CLASS_MEMBER_METHOD(GetSelectedGender, NO_PARAMETER)
				CLASS_MEMBER_FIELD(__vwsn_parameter_SelectedGender)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_READONLY(SelectedGender, GetSelectedGender)
			END_CLASS_MEMBER(::demo::GenderItemTemplate)

			BEGIN_CLASS_MEMBER(::demo::GenderItemTemplateConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderItemTemplateConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_GenderItemTemplate_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(SelectedGender)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::GenderItemTemplateConstructor)

			BEGIN_CLASS_MEMBER(::demo::GenderVisualizer)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderVisualizerConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridVisualizerTemplate)
				CLASS_MEMBER_BASE(::demo::GenderVisualizerConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::GenderVisualizer*(), NO_PARAMETER)
			END_CLASS_MEMBER(::demo::GenderVisualizer)

			BEGIN_CLASS_MEMBER(::demo::GenderVisualizerConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderVisualizerConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_GenderVisualizer_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::GenderVisualizerConstructor)

			BEGIN_CLASS_MEMBER(::demo::MainWindow)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
				CLASS_MEMBER_BASE(::demo::MainWindowConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER)
			END_CLASS_MEMBER(::demo::MainWindow)

			BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_10)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_11)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_12)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_13)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_14)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_15)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_16)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_17)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_18)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_19)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_20)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_9)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(comboView)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(dataGrid)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(dateFilter)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::MainWindowConstructor)

			BEGIN_ENUM_ITEM(::demo::MyCategory)
				ENUM_CLASS_ITEM(Black)
				ENUM_CLASS_ITEM(Blue)
				ENUM_CLASS_ITEM(Lime)
				ENUM_CLASS_ITEM(Red)
				ENUM_CLASS_ITEM(White)
			END_ENUM_ITEM(::demo::MyCategory)

			BEGIN_CLASS_MEMBER(::demo::MyDataItem)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MyDataItem>(), NO_PARAMETER)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MyDataItem>(const ::vl::WString&, ::demo::MyGender, ::demo::MyCategory, ::vl::DateTime, const ::vl::WString&), { L"name" _ L"gender" _ L"category" _ L"birthday" _ L"website" })
				CLASS_MEMBER_METHOD(GetBirthday, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetCategory, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetGender, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetLargeImage, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetName, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetSmallImage, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetWebsite, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetBirthday, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetCategory, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetGender, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetLargeImage, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetName, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetSmallImage, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetWebsite, { L"__vwsn_value_" })
				CLASS_MEMBER_FIELD(__vwsn_prop_Birthday)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Category)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Gender)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_LargeImage)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Name)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_SmallImage)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Website)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY(Birthday, GetBirthday, SetBirthday)
				CLASS_MEMBER_PROPERTY(Category, GetCategory, SetCategory)
				CLASS_MEMBER_PROPERTY(Gender, GetGender, SetGender)
				CLASS_MEMBER_PROPERTY(LargeImage, GetLargeImage, SetLargeImage)
				CLASS_MEMBER_PROPERTY(Name, GetName, SetName)
				CLASS_MEMBER_PROPERTY(SmallImage, GetSmallImage, SetSmallImage)
				CLASS_MEMBER_PROPERTY(Website, GetWebsite, SetWebsite)
			END_CLASS_MEMBER(::demo::MyDataItem)

			BEGIN_ENUM_ITEM(::demo::MyGender)
				ENUM_CLASS_ITEM(Female)
				ENUM_CLASS_ITEM(Male)
			END_ENUM_ITEM(::demo::MyGender)

			BEGIN_CLASS_MEMBER(::demo::TextEditor)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TextEditorConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate)
				CLASS_MEMBER_BASE(::demo::TextEditorConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::TextEditor*(), NO_PARAMETER)
			END_CLASS_MEMBER(::demo::TextEditor)

			BEGIN_CLASS_MEMBER(::demo::TextEditorConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TextEditorConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_TextEditor_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(textBox)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::TextEditorConstructor)

#undef _
			class DemoTypeLoader : public Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
					ADD_TYPE_INFO(::demo::CategoryDisplayer)
					ADD_TYPE_INFO(::demo::CategoryDisplayerConstructor)
					ADD_TYPE_INFO(::demo::CategoryEditor)
					ADD_TYPE_INFO(::demo::CategoryEditorConstructor)
					ADD_TYPE_INFO(::demo::CategoryItemTemplate)
					ADD_TYPE_INFO(::demo::CategoryItemTemplateConstructor)
					ADD_TYPE_INFO(::demo::CategoryVisualizer)
					ADD_TYPE_INFO(::demo::CategoryVisualizerConstructor)
					ADD_TYPE_INFO(::demo::DateEditor)
					ADD_TYPE_INFO(::demo::DateEditorConstructor)
					ADD_TYPE_INFO(::demo::DateFilter)
					ADD_TYPE_INFO(::demo::DateFilterConstructor)
					ADD_TYPE_INFO(::demo::GenderDisplayer)
					ADD_TYPE_INFO(::demo::GenderDisplayerConstructor)
					ADD_TYPE_INFO(::demo::GenderEditor)
					ADD_TYPE_INFO(::demo::GenderEditorConstructor)
					ADD_TYPE_INFO(::demo::GenderItemTemplate)
					ADD_TYPE_INFO(::demo::GenderItemTemplateConstructor)
					ADD_TYPE_INFO(::demo::GenderVisualizer)
					ADD_TYPE_INFO(::demo::GenderVisualizerConstructor)
					ADD_TYPE_INFO(::demo::MainWindow)
					ADD_TYPE_INFO(::demo::MainWindowConstructor)
					ADD_TYPE_INFO(::demo::MyCategory)
					ADD_TYPE_INFO(::demo::MyDataItem)
					ADD_TYPE_INFO(::demo::MyGender)
					ADD_TYPE_INFO(::demo::TextEditor)
					ADD_TYPE_INFO(::demo::TextEditorConstructor)
				}

				void Unload(ITypeManager* manager)
				{
				}
			};
#endif
#endif

			bool LoadDemoTypes()
			{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
				if (auto manager = GetGlobalTypeManager())
				{
					return manager->AddTypeLoader(Ptr(new DemoTypeLoader));
				}
#endif
				return false;
			}
		}
	}
}

#if defined( _MSC_VER)
#pragma warning(pop)
#elif defined(__clang__)
#pragma clang diagnostic pop
#elif defined(__GNUC__)
#pragma GCC diagnostic pop
#endif
