/***********************************************************************
!!!!!! 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::ICategory)
			IMPL_CPP_TYPE_INFO(demo::IContact)
			IMPL_CPP_TYPE_INFO(demo::IViewModel)
			IMPL_CPP_TYPE_INFO(demo::MainWindow)
			IMPL_CPP_TYPE_INFO(demo::MainWindowConstructor)
			IMPL_CPP_TYPE_INFO(demo::NewContactWindow)
			IMPL_CPP_TYPE_INFO(demo::NewContactWindowConstructor)
			IMPL_CPP_TYPE_INFO(demo::NewFolderWindow)
			IMPL_CPP_TYPE_INFO(demo::NewFolderWindowConstructor)

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
#define _ ,
			BEGIN_INTERFACE_MEMBER(::demo::ICategory)
				CLASS_MEMBER_BASE(::vl::reflection::IDescriptable)
				CLASS_MEMBER_METHOD(GetContacts, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetFolders, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetImage, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetName, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetParent, NO_PARAMETER)
				CLASS_MEMBER_PROPERTY_READONLY(Contacts, GetContacts)
				CLASS_MEMBER_PROPERTY_READONLY(Folders, GetFolders)
				CLASS_MEMBER_PROPERTY_READONLY(Image, GetImage)
				CLASS_MEMBER_PROPERTY_READONLY(Name, GetName)
				CLASS_MEMBER_PROPERTY_READONLY(Parent, GetParent)
			END_INTERFACE_MEMBER(::demo::ICategory)

			BEGIN_INTERFACE_MEMBER(::demo::IContact)
				CLASS_MEMBER_BASE(::vl::reflection::IDescriptable)
				CLASS_MEMBER_METHOD(GetAddress, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetBigImage, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetBirthday, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetBirthdayText, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetName, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetPhone, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetSmallImage, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Update, { L"name" _ L"birthday" _ L"phone" _ L"address" })
				CLASS_MEMBER_PROPERTY_READONLY(Address, GetAddress)
				CLASS_MEMBER_PROPERTY_READONLY(BigImage, GetBigImage)
				CLASS_MEMBER_PROPERTY_READONLY(Birthday, GetBirthday)
				CLASS_MEMBER_PROPERTY_READONLY(BirthdayText, GetBirthdayText)
				CLASS_MEMBER_PROPERTY_READONLY(Name, GetName)
				CLASS_MEMBER_PROPERTY_READONLY(Phone, GetPhone)
				CLASS_MEMBER_PROPERTY_READONLY(SmallImage, GetSmallImage)
			END_INTERFACE_MEMBER(::demo::IContact)

			BEGIN_INTERFACE_MEMBER(::demo::IViewModel)
				CLASS_MEMBER_BASE(::vl::reflection::IDescriptable)
				CLASS_MEMBER_METHOD(AddCategory, { L"name" })
				CLASS_MEMBER_METHOD(AddContact, { L"contact" })
				CLASS_MEMBER_METHOD(CreateContact, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetRootCategory, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetSelectedCategory, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetSelectedContact, NO_PARAMETER)
				CLASS_MEMBER_METHOD(RemoveCategory, NO_PARAMETER)
				CLASS_MEMBER_METHOD(RemoveContact, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetSelectedCategory, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetSelectedContact, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(SelectedCategoryChanged)
				CLASS_MEMBER_EVENT(SelectedContactChanged)
				CLASS_MEMBER_PROPERTY_EVENT(SelectedCategory, GetSelectedCategory, SetSelectedCategory, SelectedCategoryChanged)
				CLASS_MEMBER_PROPERTY_EVENT(SelectedContact, GetSelectedContact, SetSelectedContact, SelectedContactChanged)
			END_INTERFACE_MEMBER(::demo::IViewModel)

			BEGIN_CLASS_MEMBER(::demo::MainWindow)
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
				CLASS_MEMBER_BASE(::demo::MainWindowConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" })
				CLASS_MEMBER_METHOD(ClearViewSelection, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
				CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
				CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
			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_" })
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				CLASS_MEMBER_FIELD(__vwsn_precompile_10)
				CLASS_MEMBER_FIELD(__vwsn_precompile_11)
				CLASS_MEMBER_FIELD(__vwsn_precompile_12)
				CLASS_MEMBER_FIELD(__vwsn_precompile_13)
				CLASS_MEMBER_FIELD(__vwsn_precompile_14)
				CLASS_MEMBER_FIELD(__vwsn_precompile_15)
				CLASS_MEMBER_FIELD(__vwsn_precompile_16)
				CLASS_MEMBER_FIELD(__vwsn_precompile_17)
				CLASS_MEMBER_FIELD(__vwsn_precompile_18)
				CLASS_MEMBER_FIELD(__vwsn_precompile_19)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				CLASS_MEMBER_FIELD(__vwsn_precompile_20)
				CLASS_MEMBER_FIELD(__vwsn_precompile_21)
				CLASS_MEMBER_FIELD(__vwsn_precompile_22)
				CLASS_MEMBER_FIELD(__vwsn_precompile_23)
				CLASS_MEMBER_FIELD(__vwsn_precompile_24)
				CLASS_MEMBER_FIELD(__vwsn_precompile_25)
				CLASS_MEMBER_FIELD(__vwsn_precompile_26)
				CLASS_MEMBER_FIELD(__vwsn_precompile_27)
				CLASS_MEMBER_FIELD(__vwsn_precompile_28)
				CLASS_MEMBER_FIELD(__vwsn_precompile_29)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				CLASS_MEMBER_FIELD(__vwsn_precompile_30)
				CLASS_MEMBER_FIELD(__vwsn_precompile_31)
				CLASS_MEMBER_FIELD(__vwsn_precompile_32)
				CLASS_MEMBER_FIELD(__vwsn_precompile_33)
				CLASS_MEMBER_FIELD(__vwsn_precompile_34)
				CLASS_MEMBER_FIELD(__vwsn_precompile_35)
				CLASS_MEMBER_FIELD(__vwsn_precompile_36)
				CLASS_MEMBER_FIELD(__vwsn_precompile_37)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				CLASS_MEMBER_FIELD(__vwsn_precompile_9)
				CLASS_MEMBER_FIELD(ViewModel)
				CLASS_MEMBER_FIELD(commandBigIcon)
				CLASS_MEMBER_FIELD(commandDeleteContact)
				CLASS_MEMBER_FIELD(commandDeleteFolder)
				CLASS_MEMBER_FIELD(commandDetail)
				CLASS_MEMBER_FIELD(commandEditContact)
				CLASS_MEMBER_FIELD(commandInformation)
				CLASS_MEMBER_FIELD(commandList)
				CLASS_MEMBER_FIELD(commandNewContact)
				CLASS_MEMBER_FIELD(commandNewFolder)
				CLASS_MEMBER_FIELD(commandSmallIcon)
				CLASS_MEMBER_FIELD(commandTile)
				CLASS_MEMBER_FIELD(listViewContacts)
				CLASS_MEMBER_FIELD(self)
				CLASS_MEMBER_FIELD(treeViewFolders)
			END_CLASS_MEMBER(::demo::MainWindowConstructor)

			BEGIN_CLASS_MEMBER(::demo::NewContactWindow)
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
				CLASS_MEMBER_BASE(::demo::NewContactWindowConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::NewContactWindow*(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetForEdit, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetContact, { L"value" })
				CLASS_MEMBER_METHOD(SetForEdit, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(ForEditChanged)
				CLASS_MEMBER_FIELD(__vwsn_prop_ForEdit)
				CLASS_MEMBER_PROPERTY_EVENT(ForEdit, GetForEdit, SetForEdit, ForEditChanged)
				CLASS_MEMBER_FIELD(Ready)
				CLASS_MEMBER_FIELD(contact)
			END_CLASS_MEMBER(::demo::NewContactWindow)

			BEGIN_CLASS_MEMBER(::demo::NewContactWindowConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::NewContactWindowConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_NewContactWindow_Initialize, { L"__vwsn_this_" })
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				CLASS_MEMBER_FIELD(__vwsn_precompile_10)
				CLASS_MEMBER_FIELD(__vwsn_precompile_11)
				CLASS_MEMBER_FIELD(__vwsn_precompile_12)
				CLASS_MEMBER_FIELD(__vwsn_precompile_13)
				CLASS_MEMBER_FIELD(__vwsn_precompile_14)
				CLASS_MEMBER_FIELD(__vwsn_precompile_15)
				CLASS_MEMBER_FIELD(__vwsn_precompile_16)
				CLASS_MEMBER_FIELD(__vwsn_precompile_17)
				CLASS_MEMBER_FIELD(__vwsn_precompile_18)
				CLASS_MEMBER_FIELD(__vwsn_precompile_19)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				CLASS_MEMBER_FIELD(__vwsn_precompile_20)
				CLASS_MEMBER_FIELD(__vwsn_precompile_21)
				CLASS_MEMBER_FIELD(__vwsn_precompile_22)
				CLASS_MEMBER_FIELD(__vwsn_precompile_23)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				CLASS_MEMBER_FIELD(__vwsn_precompile_9)
				CLASS_MEMBER_FIELD(datePickerBirthday)
				CLASS_MEMBER_FIELD(self)
				CLASS_MEMBER_FIELD(textBoxAddress)
				CLASS_MEMBER_FIELD(textBoxName)
				CLASS_MEMBER_FIELD(textBoxPhone)
			END_CLASS_MEMBER(::demo::NewContactWindowConstructor)

			BEGIN_CLASS_MEMBER(::demo::NewFolderWindow)
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
				CLASS_MEMBER_BASE(::demo::NewFolderWindowConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::NewFolderWindow*(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetFolderName, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetFolderName, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(FolderNameChanged)
				CLASS_MEMBER_FIELD(__vwsn_prop_FolderName)
				CLASS_MEMBER_PROPERTY_EVENT(FolderName, GetFolderName, SetFolderName, FolderNameChanged)
				CLASS_MEMBER_FIELD(Ready)
			END_CLASS_MEMBER(::demo::NewFolderWindow)

			BEGIN_CLASS_MEMBER(::demo::NewFolderWindowConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::NewFolderWindowConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_NewFolderWindow_Initialize, { L"__vwsn_this_" })
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				CLASS_MEMBER_FIELD(__vwsn_precompile_10)
				CLASS_MEMBER_FIELD(__vwsn_precompile_11)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				CLASS_MEMBER_FIELD(__vwsn_precompile_9)
				CLASS_MEMBER_FIELD(self)
				CLASS_MEMBER_FIELD(textBoxName)
			END_CLASS_MEMBER(::demo::NewFolderWindowConstructor)

#undef _
			class DemoTypeLoader : public Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
					ADD_TYPE_INFO(::demo::ICategory)
					ADD_TYPE_INFO(::demo::IContact)
					ADD_TYPE_INFO(::demo::IViewModel)
					ADD_TYPE_INFO(::demo::MainWindow)
					ADD_TYPE_INFO(::demo::MainWindowConstructor)
					ADD_TYPE_INFO(::demo::NewContactWindow)
					ADD_TYPE_INFO(::demo::NewContactWindowConstructor)
					ADD_TYPE_INFO(::demo::NewFolderWindow)
					ADD_TYPE_INFO(::demo::NewFolderWindowConstructor)
				}

				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
