diff --git a/Import/DarkSkin.cpp b/Import/DarkSkin.cpp new file mode 100644 index 00000000..73fcc179 --- /dev/null +++ b/Import/DarkSkin.cpp @@ -0,0 +1,32522 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "DarkSkin.h" +#ifndef VCZH_DEBUG_NO_REFLECTION +#include "DarkSkinReflection.h" +#endif + +/*********************************************************************** +.\DARKSKINPARTIALCLASSES.CPP +***********************************************************************/ +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! + +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries +***********************************************************************/ + + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#endif + +#define GLOBAL_SYMBOL ::vl_workflow_global::DarkSkin:: +#define GLOBAL_NAME ::vl_workflow_global::DarkSkin::Instance(). +#define GLOBAL_OBJ &::vl_workflow_global::DarkSkin::Instance() + +/*********************************************************************** +Global Variables +***********************************************************************/ + +BEGIN_GLOBAL_STORAGE_CLASS(vl_workflow_global_DarkSkin) + vl_workflow_global::DarkSkin instance; + INITIALIZE_GLOBAL_STORAGE_CLASS + FINALIZE_GLOBAL_STORAGE_CLASS +END_GLOBAL_STORAGE_CLASS(vl_workflow_global_DarkSkin) + +namespace vl_workflow_global +{ +/*********************************************************************** +Global Functions +***********************************************************************/ + + DarkSkin& DarkSkin::Instance() + { + return Getvl_workflow_global_DarkSkin().instance; + } + +/*********************************************************************** +Closures +***********************************************************************/ + + //------------------------------------------------------------------- + + __vwsnf100_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf100_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf100_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf101_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf101_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf101_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ToolstripSplitArrowTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf102_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf102_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf102_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf103_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf103_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf103_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf104_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf104_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf104_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf105_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf105_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf105_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf106_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf106_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf106_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf107_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf107_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf107_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf108_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf108_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf108_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_9)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_9)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf109_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf109_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf109_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf10_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf10_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf10_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ToolstripSplitterTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf110_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf110_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf110_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf111_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf111_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf111_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf112_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf112_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf112_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf113_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::__vwsnf113_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf113_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->GetSelected(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->SetSelected(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf114_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_::__vwsnf114_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiListViewColumnHeaderTemplate* __vwsnf114_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiListViewColumnHeaderTemplate*>(new ::darkskin::ListViewColumnHeaderTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf115_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_::__vwsnf115_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf115_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::ItemBackgroundTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf116_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_::__vwsnf116_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf116_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::VScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf117_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_::__vwsnf117_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf117_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::HScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf118_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_::__vwsnf118_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf118_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf119_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::__vwsnf119_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf119_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::RadioButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf11_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf11_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiRibbonGroupTemplate* __vwsnf11_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiRibbonGroupTemplate*>(new ::darkskin::RibbonGroupTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf120_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::__vwsnf120_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf120_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::CheckBoxTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf121_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::__vwsnf121_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf121_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::ItemBackgroundTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf122_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::__vwsnf122_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf122_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::VScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf123_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::__vwsnf123_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf123_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::HScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf124_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::__vwsnf124_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf124_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf125_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_::__vwsnf125_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf125_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::ExpandingDecoratorTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf126_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_::__vwsnf126_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf126_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::ItemBackgroundTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf127_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_::__vwsnf127_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf127_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::VScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf128_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_::__vwsnf128_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf128_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::HScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf129_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_::__vwsnf129_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf129_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf12_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf12_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf12_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::RibbonLargeSplitButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf130_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_::__vwsnf130_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_(::darkskin::DateButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf130_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf131_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_::__vwsnf131_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_(::darkskin::DateButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf131_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf132_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::__vwsnf132_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiTextListTemplate* __vwsnf132_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiTextListTemplate*>(new ::darkskin::TextListTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf133_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::__vwsnf133_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf133_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::DateButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf134_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::__vwsnf134_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiComboBoxTemplate* __vwsnf134_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiComboBoxTemplate*>(new ::darkskin::ComboBoxTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf135_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::__vwsnf135_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf135_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->look)->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->look)->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf136_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::__vwsnf136_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf136_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->look)->GetDate(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::DateTime>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->look)->SetDate(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf137_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::__vwsnf137_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf137_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->look)->GetDateLocale(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Locale>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->look)->SetDateLocale(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf138_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::__vwsnf138_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf138_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->look)->GetCommands(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::controls::IDatePickerCommandExecutor*>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->look)->SetCommands(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf139_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::__vwsnf139_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf139_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetDate(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::DateTime>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->self)->SetDate(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf13_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf13_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf13_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::RibbonLargeDropdownButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf140_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_::__vwsnf140_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf140_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->container)->GetAlignmentToParent(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Margin>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->container)->SetAlignmentToParent(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf141_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_::__vwsnf141_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf141_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1)->GetAlignmentToParent(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Margin>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1)->SetAlignmentToParent(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf142_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_::__vwsnf142_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf142_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf143_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_::__vwsnf143_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf143_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf144_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_::__vwsnf144_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf144_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf145_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_::__vwsnf145_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf145_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf146_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_::__vwsnf146_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf146_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf147_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_::__vwsnf147_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf147_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf148_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_::__vwsnf148_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf148_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf149_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_::__vwsnf149_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf149_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf14_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf14_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf14_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::RibbonLargeButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf150_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::__vwsnf150_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf150_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf151_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::__vwsnf151_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf151_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf152_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::__vwsnf152_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf152_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf153_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::__vwsnf153_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf153_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf154_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::__vwsnf154_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf154_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf155_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::__vwsnf155_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf155_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf156_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_::__vwsnf156_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf156_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf157_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_::__vwsnf157_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf157_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf158_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_::__vwsnf158_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf158_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf159_DarkSkin_darkskin_RibbonGalleryItemListTemplateConstructor___vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize_::__vwsnf159_DarkSkin_darkskin_RibbonGalleryItemListTemplateConstructor___vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize_(::darkskin::RibbonGalleryItemListTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf159_DarkSkin_darkskin_RibbonGalleryItemListTemplateConstructor___vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::ItemBackgroundTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf15_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf15_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf15_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::RibbonSmallSplitButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf160_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf160_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollViewTemplate* __vwsnf160_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollViewTemplate*>(new ::darkskin::ScrollViewTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf161_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf161_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf161_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::ItemBackgroundTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf162_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf162_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf162_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::RibbonToolstripHeaderTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf163_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf163_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiTextListTemplate* __vwsnf163_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiTextListTemplate*>(new ::darkskin::RibbonGalleryItemListTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf164_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf164_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiRibbonToolstripMenuTemplate* __vwsnf164_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiRibbonToolstripMenuTemplate*>(new ::darkskin::RibbonToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf165_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf165_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf165_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::TopScrollButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf166_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf166_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf166_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::BottomScrollButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf167_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf167_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf167_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::RibbonGalleryDropdownButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf168_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf168_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf168_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf169_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf169_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf169_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5)->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5)->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf16_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf16_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf16_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::RibbonSmallDropdownButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf170_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf170_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf170_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetCommands())->NotifyScrollUp(); + } + + //------------------------------------------------------------------- + + __vwsnf171_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf171_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf171_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8)->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8)->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf172_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf172_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf172_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetCommands())->NotifyScrollDown(); + } + + //------------------------------------------------------------------- + + __vwsnf173_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::__vwsnf173_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf173_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetCommands())->NotifyDropdown(); + } + + //------------------------------------------------------------------- + + __vwsnf174_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_::__vwsnf174_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_(::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf174_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf175_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_::__vwsnf175_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_(::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf175_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf176_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::__vwsnf176_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf176_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::RibbonGroupMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf177_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::__vwsnf177_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf177_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::RibbonGroupExpandButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf178_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::__vwsnf178_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf178_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf179_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::__vwsnf179_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf179_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf17_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf17_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf17_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::RibbonSmallButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf180_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::__vwsnf180_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf180_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf181_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::__vwsnf181_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf181_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetCommands())->NotifyExpandButtonClicked(); + } + + //------------------------------------------------------------------- + + __vwsnf182_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::__vwsnf182_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf182_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + if (::vl::__vwsn::This(__vwsnthis_0->self)->GetCollapsed()) + { + ::vl::__vwsn::This(__vwsnthis_0->table)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + else + { + ::vl::__vwsn::This(__vwsnthis_0->table)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + } + } + + //------------------------------------------------------------------- + + __vwsnf183_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_::__vwsnf183_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf183_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf184_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_::__vwsnf184_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf184_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf185_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_::__vwsnf185_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf185_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf186_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::__vwsnf186_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf186_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf187_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::__vwsnf187_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf187_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf188_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::__vwsnf188_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf188_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf189_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::__vwsnf189_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf189_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf18_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf18_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiRibbonTabTemplate* __vwsnf18_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiRibbonTabTemplate*>(new ::darkskin::TabTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf190_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::__vwsnf190_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf190_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf191_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::__vwsnf191_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf191_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf192_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::__vwsnf192_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf192_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf193_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::__vwsnf193_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf193_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf194_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::__vwsnf194_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf194_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf195_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf195_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf195_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf196_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf196_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf196_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf197_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf197_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf197_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf198_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf198_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf198_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf199_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf199_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf199_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf19_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf19_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf19_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::ProgressBarTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf1_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf1_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiRibbonToolstripMenuTemplate* __vwsnf1_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiRibbonToolstripMenuTemplate*>(new ::darkskin::RibbonToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf200_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf200_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf200_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf201_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf201_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf201_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf202_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf202_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf202_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf203_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf203_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf203_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf204_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf204_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf204_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf205_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::__vwsnf205_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf205_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf206_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::__vwsnf206_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf206_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf207_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::__vwsnf207_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf207_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::RibbonSplitArrowTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf208_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::__vwsnf208_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf208_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf209_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::__vwsnf209_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf209_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf20_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf20_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf20_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::VTrackerTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf210_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::__vwsnf210_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf210_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf211_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::__vwsnf211_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf211_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf212_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::__vwsnf212_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf212_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf213_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::__vwsnf213_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf213_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf214_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::__vwsnf214_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf214_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf215_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::__vwsnf215_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf215_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->GetSelected(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->SetSelected(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf216_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::__vwsnf216_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf216_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf217_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::__vwsnf217_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf217_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf218_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::__vwsnf218_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf218_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf219_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::__vwsnf219_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf219_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf21_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf21_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf21_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::HTrackerTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf220_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::__vwsnf220_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf220_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf221_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::__vwsnf221_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf221_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf222_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::__vwsnf222_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf222_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf223_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::__vwsnf223_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf223_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf224_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::__vwsnf224_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf224_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf225_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf225_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf225_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf226_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf226_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf226_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf227_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf227_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf227_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf228_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf228_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf228_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf229_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf229_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf229_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf22_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf22_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf22_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::VScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf230_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf230_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf230_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf231_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf231_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf231_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf232_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf232_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf232_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf233_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf233_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf233_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf234_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf234_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf234_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_9.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_9.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf235_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf235_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf235_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_11.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_11.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf236_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::__vwsnf236_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf236_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_11.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_11.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf237_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::__vwsnf237_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf237_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf238_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::__vwsnf238_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf238_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf239_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::__vwsnf239_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf239_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf23_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf23_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf23_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::HScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf240_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::__vwsnf240_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf240_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf241_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::__vwsnf241_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf241_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf242_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::__vwsnf242_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf242_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf243_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf243_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf243_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf244_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf244_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf244_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ToolstripSplitArrowTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf245_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf245_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf245_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf246_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf246_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf246_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf247_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf247_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf247_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf248_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf248_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf248_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf249_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf249_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf249_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf24_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf24_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiDateComboBoxTemplate* __vwsnf24_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiDateComboBoxTemplate*>(new ::darkskin::ComboBoxTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf250_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf250_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf250_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf251_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf251_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf251_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf252_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf252_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf252_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf253_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf253_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf253_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf254_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::__vwsnf254_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf254_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->GetSelected(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->SetSelected(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf255_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_::__vwsnf255_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_(::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf255_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf256_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_::__vwsnf256_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_(::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf256_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf257_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_::__vwsnf257_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_(::darkskin::BottomScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf257_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf258_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_::__vwsnf258_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_(::darkskin::BottomScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf258_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf259_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize_::__vwsnf259_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize_(::darkskin::HScrollHandleTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf259_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf25_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf25_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiDatePickerTemplate* __vwsnf25_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiDatePickerTemplate*>(new ::darkskin::DatePickerTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf260_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::__vwsnf260_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf260_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::LeftScrollButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf261_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::__vwsnf261_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf261_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::RightScrollButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf262_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::__vwsnf262_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf262_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::HScrollHandleTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf263_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::__vwsnf263_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf263_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf264_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::__vwsnf264_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf264_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->handle)->GetWidthPageSize(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->handle)->SetWidthPageSize(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf265_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::__vwsnf265_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf265_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->handle)->GetWidthRatio(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->handle)->SetWidthRatio(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf266_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_::__vwsnf266_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_(::darkskin::HTrackerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf266_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf267_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_::__vwsnf267_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_(::darkskin::HTrackerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf267_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf268_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_::__vwsnf268_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_(::darkskin::HTrackerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf268_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->handle)->GetWidthRatio(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->handle)->SetWidthRatio(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf269_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_::__vwsnf269_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_(::darkskin::LeftScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf269_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf26_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf26_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf26_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::RadioButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf270_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_::__vwsnf270_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_(::darkskin::LeftScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf270_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf271_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize_::__vwsnf271_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize_(::darkskin::ProgressBarTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf271_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3)->GetWidthPageSize(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3)->SetWidthPageSize(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf272_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_::__vwsnf272_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_(::darkskin::RightScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf272_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf273_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_::__vwsnf273_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_(::darkskin::RightScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf273_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf274_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_::__vwsnf274_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_(::darkskin::ScrollViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf274_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::VScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf275_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_::__vwsnf275_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_(::darkskin::ScrollViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf275_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::HScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf276_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_::__vwsnf276_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_(::darkskin::TopScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf276_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf277_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_::__vwsnf277_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_(::darkskin::TopScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf277_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf278_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize_::__vwsnf278_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize_(::darkskin::VScrollHandleTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf278_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf279_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::__vwsnf279_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf279_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::TopScrollButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf27_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf27_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSelectableButtonTemplate* __vwsnf27_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSelectableButtonTemplate*>(new ::darkskin::CheckBoxTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf280_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::__vwsnf280_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf280_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::BottomScrollButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf281_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::__vwsnf281_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf281_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::VScrollHandleTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf282_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::__vwsnf282_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf282_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf283_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::__vwsnf283_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf283_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->handle)->GetHeightPageSize(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->handle)->SetHeightPageSize(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf284_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::__vwsnf284_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf284_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->handle)->GetHeightRatio(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->handle)->SetHeightRatio(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf285_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_::__vwsnf285_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_(::darkskin::VTrackerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf285_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf286_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_::__vwsnf286_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_(::darkskin::VTrackerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf286_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf287_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_::__vwsnf287_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_(::darkskin::VTrackerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf287_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->handle)->GetHeightRatio(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->handle)->SetHeightRatio(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf288_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::__vwsnf288_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf288_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf289_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::__vwsnf289_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf289_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf28_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf28_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiButtonTemplate* __vwsnf28_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiButtonTemplate*>(new ::darkskin::ButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf290_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::__vwsnf290_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf290_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf291_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::__vwsnf291_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf291_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf292_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::__vwsnf292_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf292_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf293_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::__vwsnf293_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf293_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetHighlighted(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->self)->SetHighlighted(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf294_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::__vwsnf294_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf294_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetTabFocused(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->self)->SetTabFocused(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf295_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_::__vwsnf295_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf295_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::TabHeaderButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf296_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_::__vwsnf296_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf296_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf297_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_::__vwsnf297_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf297_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0)->GetAlt(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0)->SetAlt(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf298_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_::__vwsnf298_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf298_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0)->GetSelected(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0)->SetSelected(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf299_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_::__vwsnf299_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf299_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetCommands())->ShowTab(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->CurrentTabPage)->GetOwnerTab())->GetPages()).Obj())->IndexOf(::vl::__vwsn::Box(__vwsnthis_0->CurrentTabPage)), true); + } + + //------------------------------------------------------------------- + + __vwsnf29_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf29_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf29_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ToolstripSplitterTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf2_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf2_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiTextListTemplate* __vwsnf2_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiTextListTemplate*>(new ::darkskin::RibbonGalleryItemListTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf300_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::__vwsnf300_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiTemplate* __vwsnf300_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + if ([&](){ auto __vwsn_temp__ = __vwsn_viewModel_; return !__vwsn_temp__.GetSharedPtr() && ::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiTabPage>(__vwsn_temp__.GetRawPtr()) != nullptr; }()) + { + return static_cast<::vl::presentation::templates::GuiTemplate*>(new ::darkskin::TabHeaderTemplate(::vl::__vwsn::Unbox<::vl::presentation::controls::GuiTabPage*>(__vwsn_viewModel_))); + } + } + throw ::vl::Exception(::vl::WString(L"Cannot find a matched control template to create.", false)); + } + + //------------------------------------------------------------------- + + __vwsnf301_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::__vwsnf301_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf301_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->header)->GetItemSource(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::reflection::description::IValueEnumerable>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->header)->SetItemSource(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf302_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::__vwsnf302_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf302_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiItemEventArgs* arguments) const + { + auto flowItem = ::vl::__vwsn::This(__vwsnthis_0->header)->GetFlowItems()[::vl::__vwsn::This(arguments)->itemIndex]; + auto item = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::darkskin::TabHeaderTemplate>(::vl::__vwsn::This(flowItem)->Children()[static_cast<::vl::vint>(0)])); + ::vl::__vwsn::This(item)->SetCommands(::vl::__vwsn::This(__vwsnthis_0->self)->GetCommands()); + ::vl::__vwsn::This(__vwsnthis_0->self)->UpdateTabHeader(); + } + + //------------------------------------------------------------------- + + __vwsnf303_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::__vwsnf303_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf303_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiItemEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->self)->UpdateTabHeader(); + } + + //------------------------------------------------------------------- + + __vwsnf304_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::__vwsnf304_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf304_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf305_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::__vwsnf305_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf305_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetHighlighted(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->self)->SetHighlighted(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf306_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::__vwsnf306_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf306_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->self)->UpdateTabHeader(); + } + + //------------------------------------------------------------------- + + __vwsnf307_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_::__vwsnf307_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_(::darkskin::MultilineTextBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf307_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::VScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf308_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_::__vwsnf308_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_(::darkskin::MultilineTextBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf308_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::HScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf309_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_::__vwsnf309_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_(::darkskin::MultilineTextBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf309_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf30_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf30_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf30_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::ToolstripSplitButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf310_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize_::__vwsnf310_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize_(::darkskin::SinglelineTextBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf310_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf311_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_::__vwsnf311_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf311_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf312_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_::__vwsnf312_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf312_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf313_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_::__vwsnf313_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf313_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf314_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_::__vwsnf314_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf314_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf315_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_::__vwsnf315_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf315_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf316_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf316_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf316_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf317_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf317_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf317_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf318_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf318_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf318_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf319_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf319_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf319_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf31_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf31_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf31_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::ToolstripDropdownButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf320_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf320_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf320_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf321_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf321_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf321_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf322_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf322_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf322_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf323_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf323_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf323_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf324_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf324_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf324_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_9.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_9.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf325_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf325_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf325_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_9.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_9.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf326_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf326_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf326_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_9.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_9.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf327_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf327_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf327_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_11.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_11.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf328_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf328_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf328_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_11.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_11.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf329_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::__vwsnf329_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf329_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf32_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf32_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf32_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::ToolstripButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf330_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_::__vwsnf330_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf330_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf331_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_::__vwsnf331_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf331_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf332_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_::__vwsnf332_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf332_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf333_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::__vwsnf333_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf333_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf334_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::__vwsnf334_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf334_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf335_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::__vwsnf335_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf335_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf336_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::__vwsnf336_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf336_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf337_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::__vwsnf337_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf337_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf338_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::__vwsnf338_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf338_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf339_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::__vwsnf339_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf339_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf33_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf33_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf33_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ToolstripTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf340_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::__vwsnf340_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf340_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf341_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::__vwsnf341_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf341_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf342_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::__vwsnf342_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf342_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf343_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::__vwsnf343_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf343_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf344_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::__vwsnf344_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf344_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf345_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::__vwsnf345_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf345_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf346_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::__vwsnf346_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf346_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf347_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::__vwsnf347_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf347_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf348_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::__vwsnf348_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf348_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf349_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::__vwsnf349_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf349_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ToolstripSplitArrowTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf34_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf34_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf34_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::MenuItemButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf350_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::__vwsnf350_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf350_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf351_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::__vwsnf351_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf351_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf352_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::__vwsnf352_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf352_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf353_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::__vwsnf353_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf353_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf354_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::__vwsnf354_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf354_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf355_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::__vwsnf355_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf355_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf356_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::__vwsnf356_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf356_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->GetSelected(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->buttonArrow)->SetSelected(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf357_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf357_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiWindowTemplate* __vwsnf357_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiWindowTemplate*>(new ::darkskin::TooltipTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf358_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf358_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf358_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf359_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf359_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf359_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf35_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf35_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiToolstripButtonTemplate* __vwsnf35_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiToolstripButtonTemplate*>(new ::darkskin::MenuBarButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf360_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf360_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf360_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ButtonTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf361_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf361_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf361_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf362_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf362_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf362_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12)->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12)->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf363_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf363_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf363_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_12)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf364_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf364_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf364_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_11)->GetAssociatedHitTestResult(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::INativeWindowListener::HitTestResult>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_11)->SetAssociatedHitTestResult(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf365_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf365_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf365_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_15)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_15)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf366_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf366_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf366_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_15)->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_15)->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf367_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf367_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf367_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_15)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_15)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf368_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf368_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf368_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_14)->GetAssociatedHitTestResult(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::INativeWindowListener::HitTestResult>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_14)->SetAssociatedHitTestResult(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf369_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf369_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf369_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_23.Obj())->GetImage(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::INativeImage>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_23.Obj())->SetImage(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf36_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf36_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf36_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::MenuSplitterTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf370_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf370_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf370_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_23.Obj())->GetFrameIndex(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::vint>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_23.Obj())->SetFrameIndex(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf371_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf371_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf371_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_20)->GetMinSizeLimitation(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_20)->SetMinSizeLimitation(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf372_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf372_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf372_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_26.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_26.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf373_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf373_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf373_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_26.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_26.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf374_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf374_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf374_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->contentTable)->GetAlignmentToParent(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Margin>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->contentTable)->SetAlignmentToParent(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf375_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf375_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf375_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + if (::vl::__vwsn::This(__vwsnthis_0->self)->GetTitleBar()) + { + ::vl::__vwsn::This(__vwsnthis_0->contentTable)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + } + else + { + ::vl::__vwsn::This(__vwsnthis_0->contentTable)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + } + + //------------------------------------------------------------------- + + __vwsnf376_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::__vwsnf376_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf376_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto margin = ::vl::__vwsn::This(__vwsnthis_0->self)->GetCustomFramePadding(); + ::vl::__vwsn::This(__vwsnthis_0->frameTable)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = margin.top; return __vwsn_temp__; }()); + ::vl::__vwsn::This(__vwsnthis_0->frameTable)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = margin.bottom; return __vwsn_temp__; }()); + ::vl::__vwsn::This(__vwsnthis_0->frameTable)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = margin.left; return __vwsn_temp__; }()); + ::vl::__vwsn::This(__vwsnthis_0->frameTable)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = margin.right; return __vwsn_temp__; }()); + } + + //------------------------------------------------------------------- + + __vwsnf37_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf37_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf37_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::ToolstripTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf38_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf38_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf38_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf39_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf39_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiTextListTemplate* __vwsnf39_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiTextListTemplate*>(new ::darkskin::TextListTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf3_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf3_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiRibbonGalleryListTemplate* __vwsnf3_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiRibbonGalleryListTemplate*>(new ::darkskin::RibbonGalleryTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf40_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf40_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiTreeViewTemplate* __vwsnf40_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiTreeViewTemplate*>(new ::darkskin::TreeViewTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf41_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf41_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiListViewTemplate* __vwsnf41_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiListViewTemplate*>(new ::darkskin::ListViewTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf42_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf42_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiDocumentLabelTemplate* __vwsnf42_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiDocumentLabelTemplate*>(new ::darkskin::DocumentTextBoxTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf43_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf43_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiDocumentLabelTemplate* __vwsnf43_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiDocumentLabelTemplate*>(new ::darkskin::DocumentLabelTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf44_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf44_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiDocumentViewerTemplate* __vwsnf44_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiDocumentViewerTemplate*>(new ::darkskin::DocumentViewerTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf45_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf45_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiSinglelineTextBoxTemplate* __vwsnf45_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiSinglelineTextBoxTemplate*>(new ::darkskin::SinglelineTextBoxTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf46_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf46_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMultilineTextBoxTemplate* __vwsnf46_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMultilineTextBoxTemplate*>(new ::darkskin::MultilineTextBoxTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf47_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf47_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiComboBoxTemplate* __vwsnf47_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiComboBoxTemplate*>(new ::darkskin::ComboBoxTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf48_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf48_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiTabTemplate* __vwsnf48_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiTabTemplate*>(new ::darkskin::TabTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf49_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf49_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf49_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::GroupBoxTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf4_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf4_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiRibbonGalleryTemplate* __vwsnf4_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiRibbonGalleryTemplate*>(new ::darkskin::RibbonGalleryTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf50_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf50_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollViewTemplate* __vwsnf50_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollViewTemplate*>(new ::darkskin::ScrollViewTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf51_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf51_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiLabelTemplate* __vwsnf51_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiLabelTemplate*>(new ::darkskin::ShortcutKeyTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf52_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf52_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiLabelTemplate* __vwsnf52_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiLabelTemplate*>(new ::darkskin::LabelTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf53_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf53_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiWindowTemplate* __vwsnf53_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiWindowTemplate*>(new ::darkskin::TooltipTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf54_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf54_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf54_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::CustomControlTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf55_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf55_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiWindowTemplate* __vwsnf55_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiWindowTemplate*>(new ::darkskin::WindowTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf56_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::__vwsnf56_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf56_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf57_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::__vwsnf57_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf57_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf58_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::__vwsnf58_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf58_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf59_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::__vwsnf59_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf59_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf5_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf5_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf5_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::darkskin::RibbonToolstripHeaderTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf60_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::__vwsnf60_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf60_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf61_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::__vwsnf61_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf61_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf62_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::__vwsnf62_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf62_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf63_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::__vwsnf63_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf63_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf64_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::__vwsnf64_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf64_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf65_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::__vwsnf65_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf65_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf66_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::__vwsnf66_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf66_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf67_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::__vwsnf67_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf67_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf68_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::__vwsnf68_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf68_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf69_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::__vwsnf69_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf69_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf6_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf6_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiRibbonToolstripsTemplate* __vwsnf6_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiRibbonToolstripsTemplate*>(new ::darkskin::RibbonToolstripsTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf70_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::__vwsnf70_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf70_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf71_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::__vwsnf71_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf71_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf72_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::__vwsnf72_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf72_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf73_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::__vwsnf73_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf73_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf74_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::__vwsnf74_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf74_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_10)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf75_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::__vwsnf75_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf75_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf76_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::__vwsnf76_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf76_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf77_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::__vwsnf77_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf77_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf78_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize_::__vwsnf78_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize_(::darkskin::DocumentTextBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf78_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf79_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_::__vwsnf79_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_(::darkskin::DocumentViewerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf79_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::VScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf7_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf7_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiRibbonButtonsTemplate* __vwsnf7_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiRibbonButtonsTemplate*>(new ::darkskin::RibbonButtonsTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf80_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_::__vwsnf80_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_(::darkskin::DocumentViewerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiScrollTemplate* __vwsnf80_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiScrollTemplate*>(new ::darkskin::HScrollTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf81_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_::__vwsnf81_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_(::darkskin::DocumentViewerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf81_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf82_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf82_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiDatePickerTemplate* __vwsnf82_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiDatePickerTemplate*>(new ::darkskin::DatePickerTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf83_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf83_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiMenuTemplate* __vwsnf83_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiMenuTemplate*>(new ::darkskin::ToolstripMenuTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf84_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf84_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf84_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf85_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf85_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf85_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf86_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf86_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf86_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf87_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf87_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf87_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf88_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf88_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf88_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf89_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf89_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf89_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf8_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf8_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiRibbonIconLabelTemplate* __vwsnf8_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiRibbonIconLabelTemplate*>(new ::darkskin::RibbonIconLabelTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnf90_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf90_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf90_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_6.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf91_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf91_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf91_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf92_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::__vwsnf92_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf92_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf93_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::__vwsnf93_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf93_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf94_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::__vwsnf94_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf94_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_3.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf95_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::__vwsnf95_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf95_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf96_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::__vwsnf96_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf96_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetBackgroundColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetBackgroundColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf97_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::__vwsnf97_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf97_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->GetBorderColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5.Obj())->SetBorderColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf98_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::__vwsnf98_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf98_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4)->GetVisible(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_4)->SetVisible(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf99_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize_::__vwsnf99_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize_(::darkskin::ItemBackgroundTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf99_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf9_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::__vwsnf9_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::presentation::templates::GuiRibbonIconLabelTemplate* __vwsnf9_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiRibbonIconLabelTemplate*>(new ::darkskin::RibbonSmallIconLabelTemplate()); + } + } + + //------------------------------------------------------------------- + + __vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ::vl::WString(L"#007ACC", false)); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetLargeImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, ::vl::Func(this, &__vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetLargeImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, ::vl::Func(this, &__vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ::vl::WString(L"#007ACC", false)); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetLargeImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, ::vl::Func(this, &__vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetLargeImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, ::vl::Func(this, &__vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#54545C", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSubMenuOpening(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuOpeningChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ::vl::WString(L"#007ACC", false)); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFocused(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FocusedChanged, ::vl::Func(this, &__vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FocusedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ::vl::WString(L"#007ACC", false)); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ::vl::WString(L"#F1F1F1", false))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ::vl::WString(L"#F1F1F1", false))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ::vl::WString(L"#007ACC", false)); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#54545C", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSubMenuOpening(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuOpeningChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonToolstripHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonToolstripHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonToolstripHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonToolstripHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonToolstripHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonToolstripHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::BottomScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::BottomScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HScrollHandleTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::HScrollHandleTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::HScrollHandleTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#9E9E9E", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#EFEBEF", false) : ::vl::WString(L"#686868", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HScrollHandleTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HScrollHandleTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::HScrollHandleTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::HScrollHandleTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::HScrollTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::HScrollTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::HScrollTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::HScrollTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#252526", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#3F3F46", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::HScrollTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::HScrollTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (static_cast(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetPageSize()) / static_cast(::vl::__vwsn::This(__vwsn_bind_cache_1)->GetTotalSize())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PageSizeChanged, ::vl::Func(this, &__vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, ::vl::Func(this, &__vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PageSizeChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::HScrollTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::HScrollTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::HScrollTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::HScrollTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (static_cast(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetPosition()) / static_cast(::vl::__vwsn::This(__vwsn_bind_cache_1)->GetTotalSize())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PositionChanged, ::vl::Func(this, &__vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, ::vl::Func(this, &__vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PositionChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::HScrollTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::HScrollTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HTrackerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::HTrackerTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::HTrackerTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HTrackerTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HTrackerTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::HTrackerTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::HTrackerTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HTrackerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::HTrackerTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::HTrackerTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (static_cast(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetPosition()) / static_cast(::vl::__vwsn::This(__vwsn_bind_cache_1)->GetTotalSize())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HTrackerTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::HTrackerTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PositionChanged, ::vl::Func(this, &__vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, ::vl::Func(this, &__vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PositionChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::HTrackerTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::HTrackerTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::LeftScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::LeftScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ProgressBarTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ProgressBarTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ProgressBarTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ProgressBarTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](auto a, auto b){ return (static_cast(a) / static_cast(((a > b) ? a : b))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetPosition(), (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetTotalSize() - ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetPageSize())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ProgressBarTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ProgressBarTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ProgressBarTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PositionChanged, ::vl::Func(this, &__vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, ::vl::Func(this, &__vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->PageSizeChanged, ::vl::Func(this, &__vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PositionChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->PageSizeChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ProgressBarTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ProgressBarTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ProgressBarTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RightScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RightScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TopScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#6A6A75", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TopScrollButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VScrollHandleTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::VScrollHandleTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::VScrollHandleTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#9E9E9E", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#EFEBEF", false) : ::vl::WString(L"#686868", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VScrollHandleTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VScrollHandleTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::VScrollHandleTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::VScrollHandleTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::VScrollTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::VScrollTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::VScrollTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::VScrollTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::VScrollTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::VScrollTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (static_cast(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetPageSize()) / static_cast(::vl::__vwsn::This(__vwsn_bind_cache_1)->GetTotalSize())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PageSizeChanged, ::vl::Func(this, &__vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, ::vl::Func(this, &__vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PageSizeChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::VScrollTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::VScrollTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::VScrollTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::VScrollTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (static_cast(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetPosition()) / static_cast(::vl::__vwsn::This(__vwsn_bind_cache_1)->GetTotalSize())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VScrollTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PositionChanged, ::vl::Func(this, &__vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, ::vl::Func(this, &__vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PositionChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::VScrollTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::VScrollTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VTrackerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::VTrackerTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::VTrackerTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VTrackerTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VTrackerTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::VTrackerTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::VTrackerTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VTrackerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::VTrackerTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::VTrackerTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (static_cast(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetPosition()) / static_cast(::vl::__vwsn::This(__vwsn_bind_cache_1)->GetTotalSize())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VTrackerTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::VTrackerTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PositionChanged, ::vl::Func(this, &__vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, ::vl::Func(this, &__vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->PositionChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TotalSizeChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::VTrackerTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::VTrackerTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_3 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_3_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetHighlighted() ? (::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected() ? ::vl::WString(L"#CC7ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#EA97EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#EA97EA", false) : ::vl::WString(L"#604360", false)))) : (::vl::__vwsn::This(__vwsn_bind_cache_3)->GetSelected() ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1C97EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#434346", false))))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0() + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_3_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_3 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->HighlightedChanged, ::vl::Func(this, &__vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_3_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_3)->SelectedChanged, ::vl::Func(this, &__vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_3_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->HighlightedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_3_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_3)->SelectedChanged, __vwsn_bind_handler_3_0); + (__vwsn_bind_handler_3_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_3 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_3_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected() && ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetTabFocused()); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0() + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TabFocusedChanged, ::vl::Func(this, &__vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TabFocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::vl::presentation::controls::GuiRibbonTabPage*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetHighlighted(); } catch(...){ return false; } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->HighlightedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_1 = [&](){ try{ return ::vl::__vwsn::Unbox<::vl::presentation::controls::GuiRibbonTabPage*>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetContext()); } catch(...){ return static_cast<::vl::presentation::controls::GuiRibbonTabPage*>(nullptr); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->HighlightedChanged, ::vl::Func(this, &__vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + this->__vwsn_bind_activator_(); + } + + void __vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return ::vl::__vwsn::Unbox<::vl::presentation::controls::GuiRibbonTabPage*>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetContext()); } catch(...){ return static_cast<::vl::presentation::controls::GuiRibbonTabPage*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ContextChanged, ::vl::Func(this, &__vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->HighlightedChanged, ::vl::Func(this, &__vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ContextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->HighlightedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::vl::presentation::controls::GuiRibbonTabPage*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::vl::presentation::controls::GuiTab*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused(); } catch(...){ return false; } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_1 = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::presentation::controls::GuiTabPage*>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetContext()))->GetOwnerTab(); } catch(...){ return static_cast<::vl::presentation::controls::GuiTab*>(nullptr); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + this->__vwsn_bind_activator_(); + } + + void __vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::presentation::controls::GuiTabPage*>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetContext()))->GetOwnerTab(); } catch(...){ return static_cast<::vl::presentation::controls::GuiTab*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ContextChanged, ::vl::Func(this, &__vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ContextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::vl::presentation::controls::GuiTab*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->CurrentTabPage; } catch(...){ return static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetAlt(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->CurrentTabPage; } catch(...){ return static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->AltChanged, ::vl::Func(this, &__vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->AltChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiTab*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelectedPage() == __vwsnthis_0->CurrentTabPage); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return ::vl::__vwsn::This(__vwsnthis_0->CurrentTabPage)->GetOwnerTab(); } catch(...){ return static_cast<::vl::presentation::controls::GuiTab*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedPageChanged, ::vl::Func(this, &__vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedPageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiTab*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TabTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetTabPages()); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TabPagesChanged, ::vl::Func(this, &__vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TabPagesChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TabTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TabTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>((::vl::__vwsn::This(__vwsn_bind_cache_0)->GetHighlighted() ? ::vl::WString(L"#CC7ACC", false) : ::vl::WString(L"#007ACC", false))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0() + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->HighlightedChanged, ::vl::Func(this, &__vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->HighlightedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TabTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TabTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::vl::presentation::controls::GuiRibbonTabPage*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetHighlighted(); } catch(...){ return false; } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->HighlightedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_1 = [&](){ try{ return ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiRibbonTabPage>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelectedTabPage())); } catch(...){ return static_cast<::vl::presentation::controls::GuiRibbonTabPage*>(nullptr); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->HighlightedChanged, ::vl::Func(this, &__vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + this->__vwsn_bind_activator_(); + } + + void __vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TabTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiRibbonTabPage>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelectedTabPage())); } catch(...){ return static_cast<::vl::presentation::controls::GuiRibbonTabPage*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedTabPageChanged, ::vl::Func(this, &__vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->HighlightedChanged, ::vl::Func(this, &__vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedTabPageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->HighlightedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TabTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::vl::presentation::controls::GuiRibbonTabPage*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MultilineTextBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MultilineTextBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::MultilineTextBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MultilineTextBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MultilineTextBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MultilineTextBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::MultilineTextBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::SinglelineTextBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::SinglelineTextBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::SinglelineTextBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::SinglelineTextBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::SinglelineTextBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::SinglelineTextBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::SinglelineTextBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#1B1B1C", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#3D3D40", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ::vl::WString(L"#F1F1F1", false))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#3D3D40", false) : (((state == ::vl::presentation::controls::ButtonState::Active) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#3D3D40", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFocused(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FocusedChanged, ::vl::Func(this, &__vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FocusedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#252526", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#3F3F46", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ::vl::WString(L"#F1F1F1", false))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetShortcutText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ShortcutTextChanged, ::vl::Func(this, &__vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ShortcutTextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ::vl::WString(L"#F1F1F1", false))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Active) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Active) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSubMenuExisting(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuExistingChanged, ::vl::Func(this, &__vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuExistingChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ::vl::WString(L"#007ACC", false)); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ::vl::WString(L"#007ACC", false)); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ::vl::WString(L"#F1F1F1", false))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ::vl::WString(L"#007ACC", false)); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RadioButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RadioButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#54545C", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSubMenuOpening(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuOpeningChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_cache_3 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_3_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto margin){ return (((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetBorder()) || ((((margin.left + margin.top) + margin.right) + margin.bottom) == static_cast<::vl::vint>(0))) ? ::vl::WString(L"#00000000", false) : ((::vl::__vwsn::This(__vwsn_bind_cache_2)->GetVisuallyEnabled() && ::vl::__vwsn::This(__vwsn_bind_cache_3)->GetActivated()) ? ::vl::WString(L"#017ACC", false) : ::vl::WString(L"#434346", false))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetCustomFramePadding())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_3_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_3 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->CustomFramePaddingChanged, ::vl::Func(this, &__vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->BorderChanged, ::vl::Func(this, &__vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_3_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_3)->ActivatedChanged, ::vl::Func(this, &__vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_3_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->CustomFramePaddingChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->BorderChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->VisuallyEnabledChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_3_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_3)->ActivatedChanged, __vwsn_bind_handler_3_0); + (__vwsn_bind_handler_3_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_cache_3 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_3_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetMinimizedBox(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MinimizedBoxChanged, ::vl::Func(this, &__vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MinimizedBoxChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetMinimizedBox() || ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetMaximizedBox()); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MinimizedBoxChanged, ::vl::Func(this, &__vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->MaximizedBoxChanged, ::vl::Func(this, &__vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MinimizedBoxChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->MaximizedBoxChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetMinimizedBox() ? ::vl::presentation::INativeWindowListener::HitTestResult::ButtonMinimum : ::vl::presentation::INativeWindowListener::HitTestResult::NoDecision); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MinimizedBoxChanged, ::vl::Func(this, &__vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MinimizedBoxChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetMaximized() ? ::vl::WString(L" 1 ", false) : ::vl::WString(L" 2 ", false)); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MaximizedChanged, ::vl::Func(this, &__vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MaximizedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetMaximizedBox(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MaximizedBoxChanged, ::vl::Func(this, &__vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MaximizedBoxChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetMinimizedBox() || ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetMaximizedBox()); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MinimizedBoxChanged, ::vl::Func(this, &__vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->MaximizedBoxChanged, ::vl::Func(this, &__vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MinimizedBoxChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->MaximizedBoxChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetMaximizedBox() ? ::vl::presentation::INativeWindowListener::HitTestResult::ButtonMaximum : ::vl::presentation::INativeWindowListener::HitTestResult::NoDecision); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MaximizedBoxChanged, ::vl::Func(this, &__vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->MaximizedBoxChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DocumentTextBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::DocumentTextBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::DocumentTextBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DocumentTextBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DocumentTextBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::DocumentTextBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::DocumentTextBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (static_cast(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetIcon()) ? ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_1)->GetIcon().Obj())->GetImage() : ::vl::Ptr<::vl::presentation::INativeImage>()); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->IconChanged, ::vl::Func(this, &__vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->IconChanged, ::vl::Func(this, &__vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->IconChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->IconChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (static_cast(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetIcon()) ? ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_1)->GetIcon().Obj())->GetFrameIndex() : (- static_cast<::vl::vint>(1))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->IconChanged, ::vl::Func(this, &__vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->IconChanged, ::vl::Func(this, &__vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->IconChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->IconChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ((static_cast(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetIcon()) && ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetIconVisible()) ? ::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren : ::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::NoLimit); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->IconChanged, ::vl::Func(this, &__vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->IconVisibleChanged, ::vl::Func(this, &__vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->IconChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->IconVisibleChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled() && ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetActivated()) ? ::vl::WString(L"#999999", false) : ::vl::WString(L"#6D6D6D", false))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->ActivatedChanged, ::vl::Func(this, &__vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->ActivatedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetCustomFramePadding(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::WindowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->CustomFramePaddingChanged, ::vl::Func(this, &__vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->CustomFramePaddingChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::WindowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DocumentViewerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::DocumentViewerTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::DocumentViewerTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DocumentViewerTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DocumentViewerTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::DocumentViewerTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::DocumentViewerTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#2D2D30", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#3F3F46", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#3F3F46", false) : ::vl::WString(L"#333337", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ::vl::WString(L"#F1F1F1", false))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#6A6A75", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetTextVisible(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextVisibleChanged, ::vl::Func(this, &__vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextVisibleChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1F1F20", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#2D2D30", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#3F3F46", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#3F3F46", false) : ::vl::WString(L"#434346", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#999999", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ComboBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ComboBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ((! ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#0A75B9", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#0A75B9", false) : ::vl::WString(L"#F1F1F1", false))))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->VisuallyEnabledChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#0A75B9", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#0A75B9", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected()); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ((! ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#0A75B9", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#0A75B9", false) : ::vl::WString(L"#F1F1F1", false))))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->VisuallyEnabledChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#0A75B9", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#0A75B9", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFocused(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FocusedChanged, ::vl::Func(this, &__vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FocusedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ItemBackgroundTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ItemBackgroundTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ItemBackgroundTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ItemBackgroundTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : ((::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected() || (state == ::vl::presentation::controls::ButtonState::Pressed)) ? ::vl::WString(L"#3399FF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#3F3F46", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ItemBackgroundTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ItemBackgroundTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ItemBackgroundTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ItemBackgroundTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ItemBackgroundTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ItemBackgroundTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#3E3E40", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#3E3E40", false) : ::vl::WString(L"#252527", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSortingState() == ::vl::presentation::controls::ColumnSortingState::Ascending); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SortingStateChanged, ::vl::Func(this, &__vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SortingStateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSortingState() == ::vl::presentation::controls::ColumnSortingState::Descending); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SortingStateChanged, ::vl::Func(this, &__vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SortingStateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSubMenuExisting(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuExistingChanged, ::vl::Func(this, &__vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuExistingChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSubMenuOpening(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SubMenuOpeningChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ListViewTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ListViewTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ListViewTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TextListTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::TextListTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TextListTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TextListTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TextListTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::TextListTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::TreeViewTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::TreeViewTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TreeViewTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::TreeViewTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::TreeViewTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::TreeViewTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DateButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::DateButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::DateButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::DateButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : ((::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected() || (state == ::vl::presentation::controls::ButtonState::Pressed)) ? ::vl::WString(L"#3399FF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#3F3F46", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DateButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DateButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DateButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::DateButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::DateButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::DateButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DateButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::DateButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFocused(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DateButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FocusedChanged, ::vl::Func(this, &__vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FocusedChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::DateButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::DatePickerTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DatePickerTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::DatePickerTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::DatePickerTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetDate(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DatePickerTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->DateChanged, ::vl::Func(this, &__vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->DateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::DatePickerTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::ButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::ButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::DatePickerTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetDateLocale(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DatePickerTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->DateLocaleChanged, ::vl::Func(this, &__vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->DateLocaleChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::DatePickerTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::DatePickerTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetCommands(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::DatePickerTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->CommandsChanged, ::vl::Func(this, &__vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->CommandsChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::DatePickerTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::templates::GuiCommonDatePickerLook*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetDate(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->look; } catch(...){ return static_cast<::vl::presentation::templates::GuiCommonDatePickerLook*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->DateChanged, ::vl::Func(this, &__vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->DateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::templates::GuiCommonDatePickerLook*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = (static_cast<::vl::vint>(1) + (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetBounds().y2 / static_cast<::vl::vint>(2))); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->titleBounds; } catch(...){ return static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->BoundsChanged, ::vl::Func(this, &__vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->BoundsChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = (::vl::__vwsn::This(__vwsn_bind_cache_0)->GetBounds().y2 / static_cast<::vl::vint>(2)); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->titleBounds; } catch(...){ return static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->BoundsChanged, ::vl::Func(this, &__vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->BoundsChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::GroupBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::GroupBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::GroupBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::GroupBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::GroupBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::GroupBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::LabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::LabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::LabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::LabelTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::LabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ::vl::__vwsn::ToString(::vl::__vwsn::This(__vwsn_bind_cache_1)->GetTextColor()))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::LabelTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::LabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TextColorChanged, ::vl::Func(this, &__vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->TextColorChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::LabelTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::LabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::LabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::LabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::LabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ShortcutKeyTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ShortcutKeyTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ShortcutKeyTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ShortcutKeyTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetTextColor(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ShortcutKeyTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextColorChanged, ::vl::Func(this, &__vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextColorChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ShortcutKeyTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::ShortcutKeyTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::ShortcutKeyTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::ShortcutKeyTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSelected()) ? ::vl::WString(L"#FFFFFF", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, ::vl::Func(this, &__vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SelectedChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#252526", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#3F3F46", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#555558", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#1997EA", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#007ACC", false) : ::vl::WString(L"#999999", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>(((! ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : (::vl::__vwsn::This(__vwsn_bind_cache_1)->GetFocused() ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, ::vl::Func(this, &__vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->FocusedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetScrollUpEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ScrollUpEnabledChanged, ::vl::Func(this, &__vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ScrollUpEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetScrollDownEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ScrollDownEnabledChanged, ::vl::Func(this, &__vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ScrollDownEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#004879", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#A0D0FF", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#A0D0FF", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#004879", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#A0D0FF", false) : ::vl::WString(L"#A0D0FF", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGroupTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGroupTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGroupTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGroupTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGroupTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(this, &__vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGroupTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGroupTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetExpandable(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonGroupTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ExpandableChanged, ::vl::Func(this, &__vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ExpandableChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonGroupTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#434346", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#6A6A75", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#1C97EA", false) : ::vl::WString(L"#54545C", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonIconLabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonIconLabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonIconLabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonIconLabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonIconLabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonIconLabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonIconLabelTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonIconLabelTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, ::vl::Func(this, &__vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->ImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonIconLabelTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetSelected()) ? ::vl::WString(L"#00000000", false) : ::vl::WString(L"#007ACC", false)); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, ::vl::Func(this, &__vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->SelectedChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#00000000", false) : (((state == ::vl::presentation::controls::ButtonState::Pressed) || ::vl::__vwsn::This(__vwsn_bind_cache_2)->GetSubMenuOpening()) ? ::vl::WString(L"#007ACC", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#54545C", false) : ::vl::WString(L"#00000000", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_2 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_2_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, ::vl::Func(this, &__vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_2_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_2_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_2)->SubMenuOpeningChanged, __vwsn_bind_handler_2_0); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_2 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_2_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetLargeImage().Obj())->GetImage(); } catch(...){ return ::vl::Ptr<::vl::presentation::INativeImage>(); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, ::vl::Func(this, &__vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetVisuallyEnabled(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->VisuallyEnabledChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetLargeImage().Obj())->GetFrameIndex(); } catch(...){ return static_cast<::vl::vint>(0); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, ::vl::Func(this, &__vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LargeImageChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetText(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, ::vl::Func(this, &__vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_cache_1 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::Parse<::vl::presentation::Color>([&](auto state){ return ((! ::vl::__vwsn::This(__vwsn_bind_cache_1)->GetVisuallyEnabled()) ? ::vl::WString(L"#6D6D6D", false) : ((state == ::vl::presentation::controls::ButtonState::Active) ? ::vl::WString(L"#F1F1F1", false) : ((state == ::vl::presentation::controls::ButtonState::Pressed) ? ::vl::WString(L"#FFFFFF", false) : ::vl::WString(L"#F1F1F1", false)))); }(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetState())); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + void __vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_cache_1 = [&](){ try{ return __vwsnthis_0->self; } catch(...){ return static_cast<::darkskin::CheckBoxTemplate*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, ::vl::Func(this, &__vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + (__vwsn_bind_handler_1_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, ::vl::Func(this, &__vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_1_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StateChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + if (static_cast(__vwsn_bind_handler_1_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_1)->VisuallyEnabledChanged, __vwsn_bind_handler_1_0); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_cache_1 = static_cast<::darkskin::CheckBoxTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + (__vwsn_bind_handler_1_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + +} + +/*********************************************************************** +Class (::darkskin::BottomScrollButtonTemplateConstructor) +***********************************************************************/ + +namespace darkskin +{ + void BottomScrollButtonTemplateConstructor::__vwsn_darkskin_BottomScrollButtonTemplate_Initialize(::darkskin::BottomScrollButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(4); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(8); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(9); __vwsn_temp__.y = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf257_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf258_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + BottomScrollButtonTemplateConstructor::BottomScrollButtonTemplateConstructor() + : self(static_cast<::darkskin::BottomScrollButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::BottomScrollButtonTemplate) +***********************************************************************/ + + BottomScrollButtonTemplate::BottomScrollButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::BottomScrollButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_BottomScrollButtonTemplate_Initialize(this); + } + + BottomScrollButtonTemplate::~BottomScrollButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ButtonTemplateConstructor) +***********************************************************************/ + + void ButtonTemplateConstructor::__vwsn_darkskin_ButtonTemplate_Initialize(::darkskin::ButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiFocusRectangleElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(4); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(4); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_6 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf56_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf57_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf58_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf59_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf60_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf61_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + ButtonTemplateConstructor::ButtonTemplateConstructor() + : self(static_cast<::darkskin::ButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement>()) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_6(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ButtonTemplate) +***********************************************************************/ + + ButtonTemplate::ButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ButtonTemplate_Initialize(this); + } + + ButtonTemplate::~ButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::CheckBoxTemplateConstructor) +***********************************************************************/ + + void CheckBoxTemplateConstructor::__vwsn_darkskin_CheckBoxTemplate_Initialize(::darkskin::CheckBoxTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(2)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(17); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(17); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetFont([&](){ ::vl::presentation::FontProperties __vwsn_temp__; __vwsn_temp__.fontFamily = ::vl::WString(L"Webdings", false); __vwsn_temp__.size = static_cast<::vl::vint>(16); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetText(::vl::WString(L"a", false)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_9 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = (- static_cast<::vl::vint>(1)); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_11 = ::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiFocusRectangleElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_11)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + (this->__vwsn_precompile_12 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(4); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(4); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_13 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_13.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_13.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Left); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_13)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_12)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_9)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf62_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf63_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf64_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf65_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf66_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf67_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf68_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf69_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + CheckBoxTemplateConstructor::CheckBoxTemplateConstructor() + : self(static_cast<::darkskin::CheckBoxTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_11(::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement>()) + , __vwsn_precompile_12(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_13(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::CheckBoxTemplate) +***********************************************************************/ + + CheckBoxTemplate::CheckBoxTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::CheckBoxTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_CheckBoxTemplate_Initialize(this); + } + + CheckBoxTemplate::~CheckBoxTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ComboBoxTemplateConstructor) +***********************************************************************/ + + void ComboBoxTemplateConstructor::__vwsn_darkskin_ComboBoxTemplate_Initialize(::darkskin::ComboBoxTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetDatePickerTemplate(LAMBDA(::vl_workflow_global::__vwsnf82_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf83_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(11); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Left); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetEllipse(true); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->container)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(9); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = (- static_cast<::vl::vint>(1)); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_6 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_6)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_8 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(2); __vwsn_temp__.y = static_cast<::vl::vint>(2); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf84_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf85_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf86_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf87_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf88_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf89_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf90_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf91_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf92_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + ComboBoxTemplateConstructor::ComboBoxTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::ComboBoxTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_6(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_8(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ComboBoxTemplate) +***********************************************************************/ + + ComboBoxTemplate::ComboBoxTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ComboBoxTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ComboBoxTemplate_Initialize(this); + } + + ComboBoxTemplate::~ComboBoxTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::CustomControlTemplateConstructor) +***********************************************************************/ + + void CustomControlTemplateConstructor::__vwsn_darkskin_CustomControlTemplate_Initialize(::darkskin::CustomControlTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + } + + CustomControlTemplateConstructor::CustomControlTemplateConstructor() + : __vwsn_precompile_0(static_cast<::darkskin::CustomControlTemplate*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::CustomControlTemplate) +***********************************************************************/ + + CustomControlTemplate::CustomControlTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::CustomControlTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_CustomControlTemplate_Initialize(this); + } + + CustomControlTemplate::~CustomControlTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::DateButtonTemplateConstructor) +***********************************************************************/ + + void DateButtonTemplateConstructor::__vwsn_darkskin_DateButtonTemplate_Initialize(::darkskin::DateButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiFocusRectangleElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf130_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf131_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + DateButtonTemplateConstructor::DateButtonTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::DateButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::DateButtonTemplate) +***********************************************************************/ + + DateButtonTemplate::DateButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::DateButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_DateButtonTemplate_Initialize(this); + } + + DateButtonTemplate::~DateButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::DatePickerTemplateConstructor) +***********************************************************************/ + + void DatePickerTemplateConstructor::__vwsn_darkskin_DatePickerTemplate_Initialize(::darkskin::DatePickerTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->look = new ::vl::presentation::templates::GuiCommonDatePickerLook(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#2D2D30", false)), ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false)), ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#999999", false)))); + { + ::vl::__vwsn::This(this->look)->SetDateTextListTemplate(LAMBDA(::vl_workflow_global::__vwsnf132_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetDateButtonTemplate(LAMBDA(::vl_workflow_global::__vwsnf133_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetDateComboBoxTemplate(LAMBDA(::vl_workflow_global::__vwsnf134_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->look)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf135_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf136_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf137_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf138_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf139_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + DatePickerTemplateConstructor::DatePickerTemplateConstructor() + : self(static_cast<::darkskin::DatePickerTemplate*>(nullptr)) + , look(static_cast<::vl::presentation::templates::GuiCommonDatePickerLook*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::DatePickerTemplate) +***********************************************************************/ + + DatePickerTemplate::DatePickerTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::DatePickerTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_DatePickerTemplate_Initialize(this); + } + + DatePickerTemplate::~DatePickerTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::DocumentLabelTemplateConstructor) +***********************************************************************/ + + void DocumentLabelTemplateConstructor::__vwsn_darkskin_DocumentLabelTemplate_Initialize(::darkskin::DocumentLabelTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetCaretColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->self)->SetBaselineDocument(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::DocumentModel>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"DarkSkin/Document/BaselineDocument", false), true).Obj()))); + } + } + + DocumentLabelTemplateConstructor::DocumentLabelTemplateConstructor() + : self(static_cast<::darkskin::DocumentLabelTemplate*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::DocumentLabelTemplate) +***********************************************************************/ + + DocumentLabelTemplate::DocumentLabelTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::DocumentLabelTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_DocumentLabelTemplate_Initialize(this); + } + + DocumentLabelTemplate::~DocumentLabelTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::DocumentTextBoxTemplateConstructor) +***********************************************************************/ + + void DocumentTextBoxTemplateConstructor::__vwsn_darkskin_DocumentTextBoxTemplate_Initialize(::darkskin::DocumentTextBoxTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetCaretColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#252526", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->container)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf78_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->SetBaselineDocument(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::DocumentModel>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"DarkSkin/Document/BaselineDocument", false), true).Obj()))); + } + } + + DocumentTextBoxTemplateConstructor::DocumentTextBoxTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::DocumentTextBoxTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::DocumentTextBoxTemplate) +***********************************************************************/ + + DocumentTextBoxTemplate::DocumentTextBoxTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::DocumentTextBoxTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_DocumentTextBoxTemplate_Initialize(this); + } + + DocumentTextBoxTemplate::~DocumentTextBoxTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::DocumentViewerTemplateConstructor) +***********************************************************************/ + + void DocumentViewerTemplateConstructor::__vwsn_darkskin_DocumentViewerTemplate_Initialize(::darkskin::DocumentViewerTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetCaretColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#252526", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + { + ::vl::__vwsn::This(this->look)->SetVScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf79_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetHScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf80_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->look)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf81_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(::vl::__vwsn::This(this->look)->GetContainerComposition()); + } + { + ::vl::__vwsn::This(this->self)->SetBaselineDocument(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::DocumentModel>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"DarkSkin/Document/BaselineDocument", false), true).Obj()))); + } + { + ::vl::__vwsn::This(this->self)->SetHorizontalScroll(::vl::__vwsn::This(this->look)->GetHScroll()); + } + { + ::vl::__vwsn::This(this->self)->SetVerticalScroll(::vl::__vwsn::This(this->look)->GetVScroll()); + } + } + + DocumentViewerTemplateConstructor::DocumentViewerTemplateConstructor() + : self(static_cast<::darkskin::DocumentViewerTemplate*>(nullptr)) + , look(static_cast<::vl::presentation::templates::GuiCommonScrollViewLook*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::DocumentViewerTemplate) +***********************************************************************/ + + DocumentViewerTemplate::DocumentViewerTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::DocumentViewerTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_DocumentViewerTemplate_Initialize(this); + } + + DocumentViewerTemplate::~DocumentViewerTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ExpandingDecoratorTemplateConstructor) +***********************************************************************/ + + void ExpandingDecoratorTemplateConstructor::__vwsn_darkskin_ExpandingDecoratorTemplate_Initialize(::darkskin::ExpandingDecoratorTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(7); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(1); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(4); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(1); __vwsn_temp__.y = static_cast<::vl::vint>(8); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(7); __vwsn_temp__.y = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(2); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(7); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(7); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(7); __vwsn_temp__.y = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf93_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf94_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf95_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf96_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf97_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf98_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + ExpandingDecoratorTemplateConstructor::ExpandingDecoratorTemplateConstructor() + : self(static_cast<::darkskin::ExpandingDecoratorTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ExpandingDecoratorTemplate) +***********************************************************************/ + + ExpandingDecoratorTemplate::ExpandingDecoratorTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ExpandingDecoratorTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ExpandingDecoratorTemplate_Initialize(this); + } + + ExpandingDecoratorTemplate::~ExpandingDecoratorTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::GroupBoxTemplateConstructor) +***********************************************************************/ + + void GroupBoxTemplateConstructor::__vwsn_darkskin_GroupBoxTemplate_Initialize(::darkskin::GroupBoxTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#2D2D30", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#3F3F46", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->titleBounds = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->titleBounds)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = (- static_cast<::vl::vint>(1)); __vwsn_temp__.bottom = (- static_cast<::vl::vint>(1)); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->titleBounds)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#2D2D30", false))); + } + { + ::vl::__vwsn::This(this->titleBounds)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#C7C7C7", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->titleBounds)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->titleBounds)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf140_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf141_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf142_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf143_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + GroupBoxTemplateConstructor::GroupBoxTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::GroupBoxTemplate*>(nullptr)) + , titleBounds(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::GroupBoxTemplate) +***********************************************************************/ + + GroupBoxTemplate::GroupBoxTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::GroupBoxTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_GroupBoxTemplate_Initialize(this); + } + + GroupBoxTemplate::~GroupBoxTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::HScrollHandleTemplateConstructor) +***********************************************************************/ + + void HScrollHandleTemplateConstructor::__vwsn_darkskin_HScrollHandleTemplate_Initialize(::darkskin::HScrollHandleTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(4); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf259_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + HScrollHandleTemplateConstructor::HScrollHandleTemplateConstructor() + : self(static_cast<::darkskin::HScrollHandleTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::HScrollHandleTemplate) +***********************************************************************/ + + HScrollHandleTemplate::HScrollHandleTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::HScrollHandleTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_HScrollHandleTemplate_Initialize(this); + } + + HScrollHandleTemplate::~HScrollHandleTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::HScrollTemplateConstructor) +***********************************************************************/ + + void HScrollTemplateConstructor::__vwsn_darkskin_HScrollTemplate_Initialize(::darkskin::HScrollTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->behavior = new ::vl::presentation::templates::GuiCommonScrollBehavior()); + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->behavior)); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#3D3D42", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiSideAlignedComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMaxRatio(static_cast(0.5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMaxLength(static_cast<::vl::vint>(20)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetDirection(::vl::presentation::compositions::GuiSideAlignedComposition::Direction::Left); + } + { + (this->buttonDecrease = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_4 = ::vl::__vwsn::This(this->buttonDecrease)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->buttonDecrease)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->buttonDecrease)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf260_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->buttonDecrease)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiSideAlignedComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetMaxRatio(static_cast(0.5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetMaxLength(static_cast<::vl::vint>(20)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetDirection(::vl::presentation::compositions::GuiSideAlignedComposition::Direction::Right); + } + { + (this->buttonIncrease = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_6 = ::vl::__vwsn::This(this->buttonIncrease)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->buttonIncrease)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->buttonIncrease)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf261_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->buttonIncrease)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + (this->handleContainer = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->handleContainer)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(20); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(20); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->handleContainer)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::NoLimit); + } + (this->handle = new ::vl::presentation::compositions::GuiPartialViewComposition()); + { + (this->__vwsn_precompile_7 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_8 = ::vl::__vwsn::This(this->__vwsn_precompile_7)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf262_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->handle)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_7)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->handleContainer)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->handle)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->handleContainer)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf263_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf264_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf265_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + HScrollTemplateConstructor::HScrollTemplateConstructor() + : self(static_cast<::darkskin::HScrollTemplate*>(nullptr)) + , behavior(static_cast<::vl::presentation::templates::GuiCommonScrollBehavior*>(nullptr)) + , buttonDecrease(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , buttonIncrease(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , handleContainer(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , handle(static_cast<::vl::presentation::compositions::GuiPartialViewComposition*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiSideAlignedComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiSideAlignedComposition*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::HScrollTemplate) +***********************************************************************/ + + HScrollTemplate::HScrollTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::HScrollTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_HScrollTemplate_Initialize(this); + this->__vwsn_instance_ctor_(); + } + + void HScrollTemplate::__vwsn_instance_ctor_() + { + ::vl::__vwsn::This(this->behavior)->AttachScrollTemplate(static_cast<::vl::presentation::templates::GuiScrollTemplate*>(this->self)); + ::vl::__vwsn::This(this->behavior)->AttachDecreaseButton(this->buttonDecrease); + ::vl::__vwsn::This(this->behavior)->AttachIncreaseButton(this->buttonIncrease); + ::vl::__vwsn::This(this->behavior)->AttachHorizontalScrollHandle(this->handle); + } + + HScrollTemplate::~HScrollTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::HTrackerTemplateConstructor) +***********************************************************************/ + + void HTrackerTemplateConstructor::__vwsn_darkskin_HTrackerTemplate_Initialize(::darkskin::HTrackerTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->behavior = new ::vl::presentation::templates::GuiCommonScrollBehavior()); + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->behavior)); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#3F3F47", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(6); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(6); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#55545A", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->handle = new ::vl::presentation::compositions::GuiPartialViewComposition()); + { + ::vl::__vwsn::This(this->handle)->SetWidthPageSize(static_cast(0)); + } + { + ::vl::__vwsn::This(this->handle)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(12); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + (this->__vwsn_precompile_6 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_7 = ::vl::__vwsn::This(this->__vwsn_precompile_6)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetFont(::vl::Nullable<::vl::presentation::FontProperties>([&](){ ::vl::presentation::FontProperties __vwsn_temp__; __vwsn_temp__.size = static_cast<::vl::vint>(1); return __vwsn_temp__; }())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf266_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->handle)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_6)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->handle)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf267_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf268_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + HTrackerTemplateConstructor::HTrackerTemplateConstructor() + : self(static_cast<::darkskin::HTrackerTemplate*>(nullptr)) + , behavior(static_cast<::vl::presentation::templates::GuiCommonScrollBehavior*>(nullptr)) + , handle(static_cast<::vl::presentation::compositions::GuiPartialViewComposition*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::HTrackerTemplate) +***********************************************************************/ + + HTrackerTemplate::HTrackerTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::HTrackerTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_HTrackerTemplate_Initialize(this); + this->__vwsn_instance_ctor_(); + } + + void HTrackerTemplate::__vwsn_instance_ctor_() + { + ::vl::__vwsn::This(this->behavior)->AttachScrollTemplate(static_cast<::vl::presentation::templates::GuiScrollTemplate*>(this->self)); + ::vl::__vwsn::This(this->behavior)->AttachHorizontalTrackerHandle(this->handle); + } + + HTrackerTemplate::~HTrackerTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ItemBackgroundTemplateConstructor) +***********************************************************************/ + + void ItemBackgroundTemplateConstructor::__vwsn_darkskin_ItemBackgroundTemplate_Initialize(::darkskin::ItemBackgroundTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf99_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + ItemBackgroundTemplateConstructor::ItemBackgroundTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::ItemBackgroundTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ItemBackgroundTemplate) +***********************************************************************/ + + ItemBackgroundTemplate::ItemBackgroundTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ItemBackgroundTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ItemBackgroundTemplate_Initialize(this); + } + + ItemBackgroundTemplate::~ItemBackgroundTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::LabelTemplateConstructor) +***********************************************************************/ + + void LabelTemplateConstructor::__vwsn_darkskin_LabelTemplate_Initialize(::darkskin::LabelTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetDefaultTextColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#F1F1F1", false))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf144_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf145_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf146_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + LabelTemplateConstructor::LabelTemplateConstructor() + : self(static_cast<::darkskin::LabelTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::LabelTemplate) +***********************************************************************/ + + LabelTemplate::LabelTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::LabelTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_LabelTemplate_Initialize(this); + } + + LabelTemplate::~LabelTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::LeftScrollButtonTemplateConstructor) +***********************************************************************/ + + void LeftScrollButtonTemplateConstructor::__vwsn_darkskin_LeftScrollButtonTemplate_Initialize(::darkskin::LeftScrollButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(4); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(8); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf269_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf270_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + LeftScrollButtonTemplateConstructor::LeftScrollButtonTemplateConstructor() + : self(static_cast<::darkskin::LeftScrollButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::LeftScrollButtonTemplate) +***********************************************************************/ + + LeftScrollButtonTemplate::LeftScrollButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::LeftScrollButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_LeftScrollButtonTemplate_Initialize(this); + } + + LeftScrollButtonTemplate::~LeftScrollButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ListViewColumnHeaderTemplateConstructor) +***********************************************************************/ + + void ListViewColumnHeaderTemplateConstructor::__vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize(::darkskin::ListViewColumnHeaderTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf100_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(1); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = (- static_cast<::vl::vint>(1)); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#404042", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = (- static_cast<::vl::vint>(1)); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#404042", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(11); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = (- static_cast<::vl::vint>(1)); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_8 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(3); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(3); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(6); __vwsn_temp__.y = static_cast<::vl::vint>(3); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(7); __vwsn_temp__.y = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_9 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_10 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(3); __vwsn_temp__.y = static_cast<::vl::vint>(3); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(6); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_10.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(7); __vwsn_temp__.y = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_10)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_9)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->container)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + (this->__vwsn_precompile_11 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(8); __vwsn_temp__.top = static_cast<::vl::vint>(6); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_12 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_12.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Left); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12.Obj())->SetEllipse(true); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_12)); + } + { + ::vl::__vwsn::This(this->container)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_11)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + (this->__vwsn_precompile_13 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = (- static_cast<::vl::vint>(1)); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + (this->buttonArrow = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + } + (this->__vwsn_precompile_14 = ::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->buttonArrow)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->buttonArrow)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf101_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_13)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf102_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf103_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf104_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf105_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf106_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf107_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf108_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf109_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf110_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf111_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf112_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf113_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->SetSubMenuHost(static_cast<::vl::presentation::controls::GuiButton*>(this->buttonArrow)); + } + } + + ListViewColumnHeaderTemplateConstructor::ListViewColumnHeaderTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::ListViewColumnHeaderTemplate*>(nullptr)) + , buttonArrow(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_8(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_10(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + , __vwsn_precompile_11(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_12(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_13(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_14(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::ListViewColumnHeaderTemplate) +***********************************************************************/ + + ListViewColumnHeaderTemplate::ListViewColumnHeaderTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ListViewColumnHeaderTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize(this); + } + + ListViewColumnHeaderTemplate::~ListViewColumnHeaderTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ListViewTemplateConstructor) +***********************************************************************/ + + void ListViewTemplateConstructor::__vwsn_darkskin_ListViewTemplate_Initialize(::darkskin::ListViewTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetItemSeparatorColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#F1F1F1", false))); + } + { + ::vl::__vwsn::This(this->self)->SetColumnHeaderTemplate(LAMBDA(::vl_workflow_global::__vwsnf114_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetBackgroundTemplate(LAMBDA(::vl_workflow_global::__vwsnf115_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->self)->SetSecondaryTextColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#F1F1F1", false))); + } + { + ::vl::__vwsn::This(this->self)->SetPrimaryTextColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#F1F1F1", false))); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#252526", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + { + ::vl::__vwsn::This(this->look)->SetVScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf116_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetHScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf117_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->look)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf118_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(::vl::__vwsn::This(this->look)->GetContainerComposition()); + } + { + ::vl::__vwsn::This(this->self)->SetHorizontalScroll(::vl::__vwsn::This(this->look)->GetHScroll()); + } + { + ::vl::__vwsn::This(this->self)->SetVerticalScroll(::vl::__vwsn::This(this->look)->GetVScroll()); + } + } + + ListViewTemplateConstructor::ListViewTemplateConstructor() + : self(static_cast<::darkskin::ListViewTemplate*>(nullptr)) + , look(static_cast<::vl::presentation::templates::GuiCommonScrollViewLook*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ListViewTemplate) +***********************************************************************/ + + ListViewTemplate::ListViewTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ListViewTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ListViewTemplate_Initialize(this); + } + + ListViewTemplate::~ListViewTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::MenuBarButtonTemplateConstructor) +***********************************************************************/ + + void MenuBarButtonTemplateConstructor::__vwsn_darkskin_MenuBarButtonTemplate_Initialize(::darkskin::MenuBarButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf311_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(10); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(10); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf312_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf313_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf314_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf315_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + MenuBarButtonTemplateConstructor::MenuBarButtonTemplateConstructor() + : self(static_cast<::darkskin::MenuBarButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::MenuBarButtonTemplate) +***********************************************************************/ + + MenuBarButtonTemplate::MenuBarButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::MenuBarButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_MenuBarButtonTemplate_Initialize(this); + } + + MenuBarButtonTemplate::~MenuBarButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::MenuItemButtonTemplateConstructor) +***********************************************************************/ + + void MenuItemButtonTemplateConstructor::__vwsn_darkskin_MenuItemButtonTemplate_Initialize(::darkskin::MenuItemButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf316_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetRowsAndColumns(static_cast<::vl::vint>(5), static_cast<::vl::vint>(10)); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetRowOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetRowOption(static_cast<::vl::vint>(4), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(24); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(8); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(4), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(24); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(5), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(6), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(7), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(8), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(9), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(8); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(3), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiSharedSizeItemComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSharedWidth(true); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetGroup(::vl::WString(L"MenuItem-Text", false)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_6 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Left); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(6), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiSharedSizeItemComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetSharedWidth(true); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetGroup(::vl::WString(L"MenuItem-Shortcut", false)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_9 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Right); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_9)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(8), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_11 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(3); __vwsn_temp__.y = static_cast<::vl::vint>(3); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(6); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_11.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(7); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_11)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf317_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf318_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf319_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf320_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf321_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf322_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf323_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf324_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf325_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf326_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf327_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf328_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf329_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + MenuItemButtonTemplateConstructor::MenuItemButtonTemplateConstructor() + : self(static_cast<::darkskin::MenuItemButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiSharedSizeItemComposition*>(nullptr)) + , __vwsn_precompile_6(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiSharedSizeItemComposition*>(nullptr)) + , __vwsn_precompile_9(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_11(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::MenuItemButtonTemplate) +***********************************************************************/ + + MenuItemButtonTemplate::MenuItemButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::MenuItemButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_MenuItemButtonTemplate_Initialize(this); + } + + MenuItemButtonTemplate::~MenuItemButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::MenuSplitterTemplateConstructor) +***********************************************************************/ + + void MenuSplitterTemplateConstructor::__vwsn_darkskin_MenuSplitterTemplate_Initialize(::darkskin::MenuSplitterTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#1B1B1C", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#333337", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + } + + MenuSplitterTemplateConstructor::MenuSplitterTemplateConstructor() + : __vwsn_precompile_0(static_cast<::darkskin::MenuSplitterTemplate*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::MenuSplitterTemplate) +***********************************************************************/ + + MenuSplitterTemplate::MenuSplitterTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::MenuSplitterTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_MenuSplitterTemplate_Initialize(this); + } + + MenuSplitterTemplate::~MenuSplitterTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::MultilineTextBoxTemplateConstructor) +***********************************************************************/ + + void MultilineTextBoxTemplateConstructor::__vwsn_darkskin_MultilineTextBoxTemplate_Initialize(::darkskin::MultilineTextBoxTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetTextColor([&](){ ::vl::presentation::elements::text::ColorEntry __vwsn_temp__; __vwsn_temp__.normal = [&](){ ::vl::presentation::elements::text::ColorItem __vwsn_temp__; __vwsn_temp__.text = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false)); __vwsn_temp__.background = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#00000000", false)); return __vwsn_temp__; }(); __vwsn_temp__.selectedFocused = [&](){ ::vl::presentation::elements::text::ColorItem __vwsn_temp__; __vwsn_temp__.text = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false)); __vwsn_temp__.background = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#007ACC", false)); return __vwsn_temp__; }(); __vwsn_temp__.selectedUnfocused = [&](){ ::vl::presentation::elements::text::ColorItem __vwsn_temp__; __vwsn_temp__.text = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false)); __vwsn_temp__.background = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#007ACC", false)); return __vwsn_temp__; }(); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->self)->SetCaretColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#252526", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + { + ::vl::__vwsn::This(this->look)->SetVScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf307_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetHScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf308_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->look)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf309_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(::vl::__vwsn::This(this->look)->GetContainerComposition()); + } + { + ::vl::__vwsn::This(this->self)->SetHorizontalScroll(::vl::__vwsn::This(this->look)->GetHScroll()); + } + { + ::vl::__vwsn::This(this->self)->SetVerticalScroll(::vl::__vwsn::This(this->look)->GetVScroll()); + } + } + + MultilineTextBoxTemplateConstructor::MultilineTextBoxTemplateConstructor() + : self(static_cast<::darkskin::MultilineTextBoxTemplate*>(nullptr)) + , look(static_cast<::vl::presentation::templates::GuiCommonScrollViewLook*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::MultilineTextBoxTemplate) +***********************************************************************/ + + MultilineTextBoxTemplate::MultilineTextBoxTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::MultilineTextBoxTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_MultilineTextBoxTemplate_Initialize(this); + } + + MultilineTextBoxTemplate::~MultilineTextBoxTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ProgressBarTemplateConstructor) +***********************************************************************/ + + void ProgressBarTemplateConstructor::__vwsn_darkskin_ProgressBarTemplate_Initialize(::darkskin::ProgressBarTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#3F3F47", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#55545A", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiPartialViewComposition()); + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#07B023", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->container)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf271_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + ProgressBarTemplateConstructor::ProgressBarTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::ProgressBarTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiPartialViewComposition*>(nullptr)) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ProgressBarTemplate) +***********************************************************************/ + + ProgressBarTemplate::ProgressBarTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ProgressBarTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ProgressBarTemplate_Initialize(this); + } + + ProgressBarTemplate::~ProgressBarTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RadioButtonTemplateConstructor) +***********************************************************************/ + + void RadioButtonTemplateConstructor::__vwsn_darkskin_RadioButtonTemplate_Initialize(::darkskin::RadioButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(2)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(17); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(17); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetShape([&](){ ::vl::presentation::elements::ElementShape __vwsn_temp__; __vwsn_temp__.shapeType = ::vl::presentation::elements::ElementShapeType::Ellipse; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetShape([&](){ ::vl::presentation::elements::ElementShape __vwsn_temp__; __vwsn_temp__.shapeType = ::vl::presentation::elements::ElementShapeType::Ellipse; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetShape([&](){ ::vl::presentation::elements::ElementShape __vwsn_temp__; __vwsn_temp__.shapeType = ::vl::presentation::elements::ElementShapeType::Ellipse; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_9 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = (- static_cast<::vl::vint>(1)); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_11 = ::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiFocusRectangleElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_11)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + (this->__vwsn_precompile_12 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(4); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(4); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_13 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_13.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_13.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Left); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_13)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_12)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_9)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf70_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf71_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf72_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf73_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf74_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf75_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf76_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf77_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + RadioButtonTemplateConstructor::RadioButtonTemplateConstructor() + : self(static_cast<::darkskin::RadioButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_11(::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement>()) + , __vwsn_precompile_12(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_13(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RadioButtonTemplate) +***********************************************************************/ + + RadioButtonTemplate::RadioButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RadioButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RadioButtonTemplate_Initialize(this); + } + + RadioButtonTemplate::~RadioButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonButtonsTemplateConstructor) +***********************************************************************/ + + void RibbonButtonsTemplateConstructor::__vwsn_darkskin_RibbonButtonsTemplate_Initialize(::darkskin::RibbonButtonsTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + } + + RibbonButtonsTemplateConstructor::RibbonButtonsTemplateConstructor() + : __vwsn_precompile_0(static_cast<::darkskin::RibbonButtonsTemplate*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonButtonsTemplate) +***********************************************************************/ + + RibbonButtonsTemplate::RibbonButtonsTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonButtonsTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonButtonsTemplate_Initialize(this); + } + + RibbonButtonsTemplate::~RibbonButtonsTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonGalleryDropdownButtonTemplateConstructor) +***********************************************************************/ + + void RibbonGalleryDropdownButtonTemplateConstructor::__vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize(::darkskin::RibbonGalleryDropdownButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(5), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(4), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(3), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(4); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(8); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(9); __vwsn_temp__.y = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf156_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf157_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf158_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + RibbonGalleryDropdownButtonTemplateConstructor::RibbonGalleryDropdownButtonTemplateConstructor() + : self(static_cast<::darkskin::RibbonGalleryDropdownButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonGalleryDropdownButtonTemplate) +***********************************************************************/ + + RibbonGalleryDropdownButtonTemplate::RibbonGalleryDropdownButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonGalleryDropdownButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize(this); + } + + RibbonGalleryDropdownButtonTemplate::~RibbonGalleryDropdownButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonGalleryItemListTemplateConstructor) +***********************************************************************/ + + void RibbonGalleryItemListTemplateConstructor::__vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize(::darkskin::RibbonGalleryItemListTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetBackgroundTemplate(LAMBDA(::vl_workflow_global::__vwsnf159_DarkSkin_darkskin_RibbonGalleryItemListTemplateConstructor___vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize_(this))); + } + } + + RibbonGalleryItemListTemplateConstructor::RibbonGalleryItemListTemplateConstructor() + : self(static_cast<::darkskin::RibbonGalleryItemListTemplate*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonGalleryItemListTemplate) +***********************************************************************/ + + RibbonGalleryItemListTemplate::RibbonGalleryItemListTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonGalleryItemListTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize(this); + } + + RibbonGalleryItemListTemplate::~RibbonGalleryItemListTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonGalleryTemplateConstructor) +***********************************************************************/ + + void RibbonGalleryTemplateConstructor::__vwsn_darkskin_RibbonGalleryTemplate_Initialize(::darkskin::RibbonGalleryTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetGroupContainerTemplate(LAMBDA(::vl_workflow_global::__vwsnf160_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetBackgroundTemplate(LAMBDA(::vl_workflow_global::__vwsnf161_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetHeaderTemplate(LAMBDA(::vl_workflow_global::__vwsnf162_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetItemListTemplate(LAMBDA(::vl_workflow_global::__vwsnf163_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf164_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(2)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_5 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_6 = ::vl::__vwsn::This(this->__vwsn_precompile_5)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(4); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(4); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf165_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_5)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_8 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->__vwsn_precompile_8)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(4); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(4); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf166_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_8)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_11 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_12 = ::vl::__vwsn::This(this->__vwsn_precompile_11)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(4); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(4); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf167_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_11)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf168_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf169_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf170_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_5)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf171_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf172_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_8)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf173_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_11)->Clicked, __vwsn_event_handler_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + RibbonGalleryTemplateConstructor::RibbonGalleryTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::RibbonGalleryTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_11(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_12(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonGalleryTemplate) +***********************************************************************/ + + RibbonGalleryTemplate::RibbonGalleryTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonGalleryTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonGalleryTemplate_Initialize(this); + } + + RibbonGalleryTemplate::~RibbonGalleryTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonGroupExpandButtonTemplateConstructor) +***********************************************************************/ + + void RibbonGroupExpandButtonTemplateConstructor::__vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize(::darkskin::RibbonGroupExpandButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(6); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(6); __vwsn_temp__.y = static_cast<::vl::vint>(6); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(6); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(7); __vwsn_temp__.y = static_cast<::vl::vint>(7); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf174_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf175_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + RibbonGroupExpandButtonTemplateConstructor::RibbonGroupExpandButtonTemplateConstructor() + : self(static_cast<::darkskin::RibbonGroupExpandButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonGroupExpandButtonTemplate) +***********************************************************************/ + + RibbonGroupExpandButtonTemplate::RibbonGroupExpandButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonGroupExpandButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize(this); + } + + RibbonGroupExpandButtonTemplate::~RibbonGroupExpandButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonGroupMenuTemplateConstructor) +***********************************************************************/ + + void RibbonGroupMenuTemplateConstructor::__vwsn_darkskin_RibbonGroupMenuTemplate_Initialize(::darkskin::RibbonGroupMenuTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#2D2D30", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#333337", false))); + } + { + ::vl::__vwsn::This(this->container)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + RibbonGroupMenuTemplateConstructor::RibbonGroupMenuTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_0(static_cast<::darkskin::RibbonGroupMenuTemplate*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonGroupMenuTemplate) +***********************************************************************/ + + RibbonGroupMenuTemplate::RibbonGroupMenuTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonGroupMenuTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonGroupMenuTemplate_Initialize(this); + } + + RibbonGroupMenuTemplate::~RibbonGroupMenuTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonGroupTemplateConstructor) +***********************************************************************/ + + void RibbonGroupTemplateConstructor::__vwsn_darkskin_RibbonGroupTemplate_Initialize(::darkskin::RibbonGroupTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf176_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->table = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->table)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->table)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->table)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(1)); + ::vl::__vwsn::This(this->table)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->table)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->table)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#3F3F46", false))); + } + { + ::vl::__vwsn::This(this->table)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->table)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(10); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(10); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#6D6D6D", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + { + (this->__vwsn_precompile_6 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_7 = ::vl::__vwsn::This(this->__vwsn_precompile_6)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = (- static_cast<::vl::vint>(1)); __vwsn_temp__.top = (- static_cast<::vl::vint>(1)); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf177_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_6)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->table)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->table)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf178_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf179_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf180_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf181_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_6)->Clicked, __vwsn_event_handler_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf182_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->self)->CollapsedChanged, __vwsn_event_handler_); + } + } + + RibbonGroupTemplateConstructor::RibbonGroupTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::RibbonGroupTemplate*>(nullptr)) + , table(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonGroupTemplate) +***********************************************************************/ + + RibbonGroupTemplate::RibbonGroupTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonGroupTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonGroupTemplate_Initialize(this); + } + + RibbonGroupTemplate::~RibbonGroupTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonIconLabelTemplateConstructor) +***********************************************************************/ + + void RibbonIconLabelTemplateConstructor::__vwsn_darkskin_RibbonIconLabelTemplate_Initialize(::darkskin::RibbonIconLabelTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(4); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(4); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->container = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->container)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf183_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf184_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf185_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + RibbonIconLabelTemplateConstructor::RibbonIconLabelTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , self(static_cast<::darkskin::RibbonIconLabelTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonIconLabelTemplate) +***********************************************************************/ + + RibbonIconLabelTemplate::RibbonIconLabelTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonIconLabelTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonIconLabelTemplate_Initialize(this); + } + + RibbonIconLabelTemplate::~RibbonIconLabelTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonLargeButtonTemplateConstructor) +***********************************************************************/ + + void RibbonLargeButtonTemplateConstructor::__vwsn_darkskin_RibbonLargeButtonTemplate_Initialize(::darkskin::RibbonLargeButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf186_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->container)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(12); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_8 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf187_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf188_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf189_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf190_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf191_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf192_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf193_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf194_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + RibbonLargeButtonTemplateConstructor::RibbonLargeButtonTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::RibbonLargeButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_8(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonLargeButtonTemplate) +***********************************************************************/ + + RibbonLargeButtonTemplate::RibbonLargeButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonLargeButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonLargeButtonTemplate_Initialize(this); + } + + RibbonLargeButtonTemplate::~RibbonLargeButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonLargeDropdownButtonTemplateConstructor) +***********************************************************************/ + + void RibbonLargeDropdownButtonTemplateConstructor::__vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize(::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf195_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->container)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_9 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_10 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_10)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_9)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_8)); + } + (this->__vwsn_precompile_11 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(11); __vwsn_temp__.y = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_12 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(2); __vwsn_temp__.y = static_cast<::vl::vint>(2); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_12.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_12)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_11)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf196_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf197_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf198_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf199_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf200_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf201_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf202_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf203_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf204_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf205_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + RibbonLargeDropdownButtonTemplateConstructor::RibbonLargeDropdownButtonTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::RibbonLargeDropdownButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_10(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_11(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_12(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonLargeDropdownButtonTemplate) +***********************************************************************/ + + RibbonLargeDropdownButtonTemplate::RibbonLargeDropdownButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonLargeDropdownButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize(this); + } + + RibbonLargeDropdownButtonTemplate::~RibbonLargeDropdownButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonLargeSplitButtonTemplateConstructor) +***********************************************************************/ + + void RibbonLargeSplitButtonTemplateConstructor::__vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize(::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf206_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->container)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_8 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + { + (this->buttonArrow = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + } + (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->buttonArrow)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->buttonArrow)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf207_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf208_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf209_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf210_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf211_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf212_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf213_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf214_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf215_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->SetSubMenuHost(static_cast<::vl::presentation::controls::GuiButton*>(this->buttonArrow)); + } + } + + RibbonLargeSplitButtonTemplateConstructor::RibbonLargeSplitButtonTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::RibbonLargeSplitButtonTemplate*>(nullptr)) + , buttonArrow(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_8(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonLargeSplitButtonTemplate) +***********************************************************************/ + + RibbonLargeSplitButtonTemplate::RibbonLargeSplitButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonLargeSplitButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize(this); + } + + RibbonLargeSplitButtonTemplate::~RibbonLargeSplitButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonSmallButtonTemplateConstructor) +***********************************************************************/ + + void RibbonSmallButtonTemplateConstructor::__vwsn_darkskin_RibbonSmallButtonTemplate_Initialize(::darkskin::RibbonSmallButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf216_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->container = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->container)->SetCellPadding(static_cast<::vl::vint>(3)); + } + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->container)->SetRowsAndColumns(static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); + ::vl::__vwsn::This(this->container)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->container)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->container)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->container)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->container)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf217_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf218_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf219_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf220_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf221_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf222_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf223_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf224_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + RibbonSmallButtonTemplateConstructor::RibbonSmallButtonTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , self(static_cast<::darkskin::RibbonSmallButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonSmallButtonTemplate) +***********************************************************************/ + + RibbonSmallButtonTemplate::RibbonSmallButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonSmallButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonSmallButtonTemplate_Initialize(this); + } + + RibbonSmallButtonTemplate::~RibbonSmallButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonSmallDropdownButtonTemplateConstructor) +***********************************************************************/ + + void RibbonSmallDropdownButtonTemplateConstructor::__vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize(::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf225_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(11); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->container = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->container)->SetCellPadding(static_cast<::vl::vint>(3)); + } + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->container)->SetRowsAndColumns(static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); + ::vl::__vwsn::This(this->container)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->container)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->container)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->container)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->container)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(9); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = (- static_cast<::vl::vint>(1)); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_9 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_9)); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_11 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(2); __vwsn_temp__.y = static_cast<::vl::vint>(2); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_11.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_11)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_8)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf226_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf227_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf228_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf229_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf230_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf231_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf232_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf233_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf234_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf235_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf236_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + RibbonSmallDropdownButtonTemplateConstructor::RibbonSmallDropdownButtonTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , self(static_cast<::darkskin::RibbonSmallDropdownButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_9(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_11(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonSmallDropdownButtonTemplate) +***********************************************************************/ + + RibbonSmallDropdownButtonTemplate::RibbonSmallDropdownButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonSmallDropdownButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize(this); + } + + RibbonSmallDropdownButtonTemplate::~RibbonSmallDropdownButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonSmallIconLabelTemplateConstructor) +***********************************************************************/ + + void RibbonSmallIconLabelTemplateConstructor::__vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize(::darkskin::RibbonSmallIconLabelTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(4); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(4); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(1), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiSharedSizeItemComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSharedWidth(true); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetGroup(::vl::WString(L"MenuItem-Text", false)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->container = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->container)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf237_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf238_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf239_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf240_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf241_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf242_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + RibbonSmallIconLabelTemplateConstructor::RibbonSmallIconLabelTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , self(static_cast<::darkskin::RibbonSmallIconLabelTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiSharedSizeItemComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonSmallIconLabelTemplate) +***********************************************************************/ + + RibbonSmallIconLabelTemplate::RibbonSmallIconLabelTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonSmallIconLabelTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize(this); + } + + RibbonSmallIconLabelTemplate::~RibbonSmallIconLabelTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonSmallSplitButtonTemplateConstructor) +***********************************************************************/ + + void RibbonSmallSplitButtonTemplateConstructor::__vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize(::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf243_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(11); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->container = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->container)->SetCellPadding(static_cast<::vl::vint>(3)); + } + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->container)->SetRowsAndColumns(static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); + ::vl::__vwsn::This(this->container)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->container)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->container)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->container)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->container)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = (- static_cast<::vl::vint>(1)); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_9 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_10 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_10)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_9)); + } + { + (this->buttonArrow = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + } + (this->__vwsn_precompile_11 = ::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->buttonArrow)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->buttonArrow)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf244_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_8)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf245_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf246_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf247_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf248_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf249_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf250_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf251_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf252_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf253_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf254_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->SetSubMenuHost(static_cast<::vl::presentation::controls::GuiButton*>(this->buttonArrow)); + } + } + + RibbonSmallSplitButtonTemplateConstructor::RibbonSmallSplitButtonTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , self(static_cast<::darkskin::RibbonSmallSplitButtonTemplate*>(nullptr)) + , buttonArrow(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_10(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_11(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonSmallSplitButtonTemplate) +***********************************************************************/ + + RibbonSmallSplitButtonTemplate::RibbonSmallSplitButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonSmallSplitButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize(this); + } + + RibbonSmallSplitButtonTemplate::~RibbonSmallSplitButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonSplitArrowTemplateConstructor) +***********************************************************************/ + + void RibbonSplitArrowTemplateConstructor::__vwsn_darkskin_RibbonSplitArrowTemplate_Initialize(::darkskin::RibbonSplitArrowTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(11); __vwsn_temp__.y = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_6 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(2); __vwsn_temp__.y = static_cast<::vl::vint>(2); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf150_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf151_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf152_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf153_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf154_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf155_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + RibbonSplitArrowTemplateConstructor::RibbonSplitArrowTemplateConstructor() + : self(static_cast<::darkskin::RibbonSplitArrowTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_6(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonSplitArrowTemplate) +***********************************************************************/ + + RibbonSplitArrowTemplate::RibbonSplitArrowTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonSplitArrowTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonSplitArrowTemplate_Initialize(this); + } + + RibbonSplitArrowTemplate::~RibbonSplitArrowTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonToolstripHeaderTemplateConstructor) +***********************************************************************/ + + void RibbonToolstripHeaderTemplateConstructor::__vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize(::darkskin::RibbonToolstripHeaderTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Left); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#6D6D6D", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf255_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf256_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + RibbonToolstripHeaderTemplateConstructor::RibbonToolstripHeaderTemplateConstructor() + : self(static_cast<::darkskin::RibbonToolstripHeaderTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonToolstripHeaderTemplate) +***********************************************************************/ + + RibbonToolstripHeaderTemplate::RibbonToolstripHeaderTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonToolstripHeaderTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize(this); + } + + RibbonToolstripHeaderTemplate::~RibbonToolstripHeaderTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonToolstripMenuTemplateConstructor) +***********************************************************************/ + + void RibbonToolstripMenuTemplateConstructor::__vwsn_darkskin_RibbonToolstripMenuTemplate_Initialize(::darkskin::RibbonToolstripMenuTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetSizeBoxOption(::vl::presentation::templates::BoolOption::AlwaysTrue); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#1B1B1C", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#333337", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetRowsAndColumns(static_cast<::vl::vint>(4), static_cast<::vl::vint>(2)); + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetRowOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); + } + (this->content = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->content)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->content)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#333337", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + (this->container = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->container)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + (this->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::BorderBottom); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetSite(static_cast<::vl::vint>(3), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_9 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#007ACC", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_9)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_8)); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::BorderRightBottom); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetSite(static_cast<::vl::vint>(3), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_11 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_11.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#007ACC", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_11)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetContentComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->content)); + } + } + + RibbonToolstripMenuTemplateConstructor::RibbonToolstripMenuTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , content(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_0(static_cast<::darkskin::RibbonToolstripMenuTemplate*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_9(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_11(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonToolstripMenuTemplate) +***********************************************************************/ + + RibbonToolstripMenuTemplate::RibbonToolstripMenuTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonToolstripMenuTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonToolstripMenuTemplate_Initialize(this); + } + + RibbonToolstripMenuTemplate::~RibbonToolstripMenuTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RibbonToolstripsTemplateConstructor) +***********************************************************************/ + + void RibbonToolstripsTemplateConstructor::__vwsn_darkskin_RibbonToolstripsTemplate_Initialize(::darkskin::RibbonToolstripsTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + } + + RibbonToolstripsTemplateConstructor::RibbonToolstripsTemplateConstructor() + : __vwsn_precompile_0(static_cast<::darkskin::RibbonToolstripsTemplate*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::RibbonToolstripsTemplate) +***********************************************************************/ + + RibbonToolstripsTemplate::RibbonToolstripsTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RibbonToolstripsTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RibbonToolstripsTemplate_Initialize(this); + } + + RibbonToolstripsTemplate::~RibbonToolstripsTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::RightScrollButtonTemplateConstructor) +***********************************************************************/ + + void RightScrollButtonTemplateConstructor::__vwsn_darkskin_RightScrollButtonTemplate_Initialize(::darkskin::RightScrollButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(4); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(8); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf272_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf273_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + RightScrollButtonTemplateConstructor::RightScrollButtonTemplateConstructor() + : self(static_cast<::darkskin::RightScrollButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::RightScrollButtonTemplate) +***********************************************************************/ + + RightScrollButtonTemplate::RightScrollButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::RightScrollButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_RightScrollButtonTemplate_Initialize(this); + } + + RightScrollButtonTemplate::~RightScrollButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ScrollViewTemplateConstructor) +***********************************************************************/ + + void ScrollViewTemplateConstructor::__vwsn_darkskin_ScrollViewTemplate_Initialize(::darkskin::ScrollViewTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#252526", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#3F3F46", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + { + ::vl::__vwsn::This(this->look)->SetVScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf274_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetHScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf275_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->look)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(::vl::__vwsn::This(this->look)->GetContainerComposition()); + } + { + ::vl::__vwsn::This(this->self)->SetHorizontalScroll(::vl::__vwsn::This(this->look)->GetHScroll()); + } + { + ::vl::__vwsn::This(this->self)->SetVerticalScroll(::vl::__vwsn::This(this->look)->GetVScroll()); + } + } + + ScrollViewTemplateConstructor::ScrollViewTemplateConstructor() + : self(static_cast<::darkskin::ScrollViewTemplate*>(nullptr)) + , look(static_cast<::vl::presentation::templates::GuiCommonScrollViewLook*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ScrollViewTemplate) +***********************************************************************/ + + ScrollViewTemplate::ScrollViewTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ScrollViewTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ScrollViewTemplate_Initialize(this); + } + + ScrollViewTemplate::~ScrollViewTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ShortcutKeyTemplateConstructor) +***********************************************************************/ + + void ShortcutKeyTemplateConstructor::__vwsn_darkskin_ShortcutKeyTemplate_Initialize(::darkskin::ShortcutKeyTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetDefaultTextColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#F1F1F1", false))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#3F3F46", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#252526", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf147_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf148_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf149_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + ShortcutKeyTemplateConstructor::ShortcutKeyTemplateConstructor() + : self(static_cast<::darkskin::ShortcutKeyTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ShortcutKeyTemplate) +***********************************************************************/ + + ShortcutKeyTemplate::ShortcutKeyTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ShortcutKeyTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ShortcutKeyTemplate_Initialize(this); + } + + ShortcutKeyTemplate::~ShortcutKeyTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::SinglelineTextBoxTemplateConstructor) +***********************************************************************/ + + void SinglelineTextBoxTemplateConstructor::__vwsn_darkskin_SinglelineTextBoxTemplate_Initialize(::darkskin::SinglelineTextBoxTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetTextColor([&](){ ::vl::presentation::elements::text::ColorEntry __vwsn_temp__; __vwsn_temp__.normal = [&](){ ::vl::presentation::elements::text::ColorItem __vwsn_temp__; __vwsn_temp__.text = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false)); __vwsn_temp__.background = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#00000000", false)); return __vwsn_temp__; }(); __vwsn_temp__.selectedFocused = [&](){ ::vl::presentation::elements::text::ColorItem __vwsn_temp__; __vwsn_temp__.text = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false)); __vwsn_temp__.background = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#007ACC", false)); return __vwsn_temp__; }(); __vwsn_temp__.selectedUnfocused = [&](){ ::vl::presentation::elements::text::ColorItem __vwsn_temp__; __vwsn_temp__.text = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false)); __vwsn_temp__.background = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#007ACC", false)); return __vwsn_temp__; }(); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->self)->SetCaretColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#FFFFFF", false))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#252526", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->container)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf310_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + SinglelineTextBoxTemplateConstructor::SinglelineTextBoxTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::SinglelineTextBoxTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::SinglelineTextBoxTemplate) +***********************************************************************/ + + SinglelineTextBoxTemplate::SinglelineTextBoxTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::SinglelineTextBoxTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_SinglelineTextBoxTemplate_Initialize(this); + } + + SinglelineTextBoxTemplate::~SinglelineTextBoxTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::TabHeaderButtonTemplateConstructor) +***********************************************************************/ + + void TabHeaderButtonTemplateConstructor::__vwsn_darkskin_TabHeaderButtonTemplate_Initialize(::darkskin::TabHeaderButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiFocusRectangleElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(6); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(6); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetHorizontalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf288_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf289_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf290_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf291_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf292_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf293_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf294_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + TabHeaderButtonTemplateConstructor::TabHeaderButtonTemplateConstructor() + : self(static_cast<::darkskin::TabHeaderButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::TabHeaderButtonTemplate) +***********************************************************************/ + + bool TabHeaderButtonTemplate::GetHighlighted() + { + return this->__vwsn_prop_Highlighted; + } + void TabHeaderButtonTemplate::SetHighlighted(bool __vwsn_value_) + { + if ((this->__vwsn_prop_Highlighted != __vwsn_value_)) + { + (this->__vwsn_prop_Highlighted = __vwsn_value_); + ::vl::__vwsn::EventInvoke(this->HighlightedChanged)(); + } + } + + bool TabHeaderButtonTemplate::GetTabFocused() + { + return this->__vwsn_prop_TabFocused; + } + void TabHeaderButtonTemplate::SetTabFocused(bool __vwsn_value_) + { + if ((this->__vwsn_prop_TabFocused != __vwsn_value_)) + { + (this->__vwsn_prop_TabFocused = __vwsn_value_); + ::vl::__vwsn::EventInvoke(this->TabFocusedChanged)(); + } + } + + TabHeaderButtonTemplate::TabHeaderButtonTemplate() + : __vwsn_prop_Highlighted(false) + , __vwsn_prop_TabFocused(false) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::TabHeaderButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_TabHeaderButtonTemplate_Initialize(this); + } + + TabHeaderButtonTemplate::~TabHeaderButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::TabHeaderTemplateConstructor) +***********************************************************************/ + + void TabHeaderTemplateConstructor::__vwsn_darkskin_TabHeaderTemplate_Initialize(::darkskin::TabHeaderTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + (this->CurrentTabPage = ::vl::__vwsn::This(__vwsn_this_)->GetCurrentTabPage()); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + (this->__vwsn_precompile_0 = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAutoSelection(false); + } + (this->__vwsn_precompile_1 = ::vl::__vwsn::This(this->__vwsn_precompile_0)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf295_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetBoundsComposition())); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf296_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetContext(::vl::__vwsn::Box(this->CurrentTabPage)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf297_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf298_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf299_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_0)->Clicked, __vwsn_event_handler_); + } + } + + TabHeaderTemplateConstructor::TabHeaderTemplateConstructor() + : self(static_cast<::darkskin::TabHeaderTemplate*>(nullptr)) + , CurrentTabPage(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::TabHeaderTemplate) +***********************************************************************/ + + ::vl::presentation::controls::ITabCommandExecutor* TabHeaderTemplate::GetCommands() + { + return this->__vwsn_prop_Commands; + } + void TabHeaderTemplate::SetCommands(::vl::presentation::controls::ITabCommandExecutor* __vwsn_value_) + { + if ((this->__vwsn_prop_Commands != __vwsn_value_)) + { + (this->__vwsn_prop_Commands = __vwsn_value_); + ::vl::__vwsn::EventInvoke(this->CommandsChanged)(); + } + } + + ::vl::presentation::controls::GuiTabPage* TabHeaderTemplate::GetCurrentTabPage() + { + return this->__vwsn_parameter_CurrentTabPage; + } + + TabHeaderTemplate::TabHeaderTemplate(::vl::presentation::controls::GuiTabPage* __vwsn_ctor_parameter_CurrentTabPage) + : __vwsn_prop_Commands(static_cast<::vl::presentation::controls::ITabCommandExecutor*>(nullptr)) + , __vwsn_parameter_CurrentTabPage(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + { + (this->__vwsn_parameter_CurrentTabPage = __vwsn_ctor_parameter_CurrentTabPage); + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::TabHeaderTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_TabHeaderTemplate_Initialize(this); + } + + TabHeaderTemplate::~TabHeaderTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::TabTemplateConstructor) +***********************************************************************/ + + void TabTemplateConstructor::__vwsn_darkskin_TabTemplate_Initialize(::darkskin::TabTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetTabOrder(::vl::presentation::controls::TabPageOrder::LeftToRight); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#2D2D30", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + (this->beforeHeadersContainer = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->beforeHeadersContainer)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->beforeHeadersContainer)); + } + (this->afterHeadersContainer = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->afterHeadersContainer)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->afterHeadersContainer)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->header = new ::vl::presentation::compositions::GuiRepeatFlowComposition()); + { + ::vl::__vwsn::This(this->header)->SetItemTemplate(LAMBDA(::vl_workflow_global::__vwsnf300_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->header)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->header)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->header)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->header)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(3)); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(3)); + } + (this->__vwsn_precompile_6 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#434346", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_6)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf301_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf302_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->header)->ItemInserted, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf303_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->header)->ItemRemoved, __vwsn_event_handler_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf304_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf305_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetBeforeHeadersContainer(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->beforeHeadersContainer)); + } + { + ::vl::__vwsn::This(this->self)->SetAfterHeadersContainer(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->afterHeadersContainer)); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf306_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->self)->SelectedTabPageChanged, __vwsn_event_handler_); + } + } + + TabTemplateConstructor::TabTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::TabTemplate*>(nullptr)) + , beforeHeadersContainer(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , afterHeadersContainer(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , header(static_cast<::vl::presentation::compositions::GuiRepeatFlowComposition*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_6(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::TabTemplate) +***********************************************************************/ + + bool TabTemplate::GetHighlighted() + { + return this->__vwsn_prop_Highlighted; + } + void TabTemplate::SetHighlighted(bool __vwsn_value_) + { + if ((this->__vwsn_prop_Highlighted != __vwsn_value_)) + { + (this->__vwsn_prop_Highlighted = __vwsn_value_); + ::vl::__vwsn::EventInvoke(this->HighlightedChanged)(); + } + } + + void TabTemplate::UpdateTabHeader() + { + { + auto __vwsn_for_enumerable_flowItem = ::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(this->header)->GetFlowItems())); + auto __vwsn_for_enumerator_flowItem = ::vl::__vwsn::This(__vwsn_for_enumerable_flowItem.Obj())->CreateEnumerator(); + while (::vl::__vwsn::This(__vwsn_for_enumerator_flowItem.Obj())->Next()) + { + auto flowItem = ::vl::__vwsn::Unbox<::vl::presentation::compositions::GuiFlowItemComposition*>(::vl::__vwsn::This(__vwsn_for_enumerator_flowItem.Obj())->GetCurrent()); + { + auto item = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::darkskin::TabHeaderTemplate>(::vl::__vwsn::This(flowItem)->Children()[static_cast<::vl::vint>(0)])); + if ((::vl::__vwsn::This(item)->GetCurrentTabPage() == ::vl::__vwsn::This(this->self)->GetSelectedTabPage())) + { + ::vl::__vwsn::This(flowItem)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->header)->MoveChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(flowItem), (::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(this->header)->Children()).Obj())->GetCount() - static_cast<::vl::vint>(1))); + } + else + { + ::vl::__vwsn::This(flowItem)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + } + } + } + } + + TabTemplate::TabTemplate() + : __vwsn_prop_Highlighted(false) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::TabTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_TabTemplate_Initialize(this); + } + + TabTemplate::~TabTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::TextListTemplateConstructor) +***********************************************************************/ + + void TextListTemplateConstructor::__vwsn_darkskin_TextListTemplate_Initialize(::darkskin::TextListTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetRadioBulletTemplate(LAMBDA(::vl_workflow_global::__vwsnf119_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetCheckBulletTemplate(LAMBDA(::vl_workflow_global::__vwsnf120_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetTextColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#F1F1F1", false))); + } + { + ::vl::__vwsn::This(this->self)->SetBackgroundTemplate(LAMBDA(::vl_workflow_global::__vwsnf121_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#252526", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + { + ::vl::__vwsn::This(this->look)->SetVScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf122_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetHScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf123_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->look)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf124_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(::vl::__vwsn::This(this->look)->GetContainerComposition()); + } + { + ::vl::__vwsn::This(this->self)->SetHorizontalScroll(::vl::__vwsn::This(this->look)->GetHScroll()); + } + { + ::vl::__vwsn::This(this->self)->SetVerticalScroll(::vl::__vwsn::This(this->look)->GetVScroll()); + } + } + + TextListTemplateConstructor::TextListTemplateConstructor() + : self(static_cast<::darkskin::TextListTemplate*>(nullptr)) + , look(static_cast<::vl::presentation::templates::GuiCommonScrollViewLook*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::TextListTemplate) +***********************************************************************/ + + TextListTemplate::TextListTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::TextListTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_TextListTemplate_Initialize(this); + } + + TextListTemplate::~TextListTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ThemeConstructor) +***********************************************************************/ + + void ThemeConstructor::__vwsn_darkskin_Theme_Initialize(::darkskin::Theme* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonToolstripMenu = LAMBDA(::vl_workflow_global::__vwsnf1_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonGalleryItemList = LAMBDA(::vl_workflow_global::__vwsnf2_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonGalleryList = LAMBDA(::vl_workflow_global::__vwsnf3_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonGallery = LAMBDA(::vl_workflow_global::__vwsnf4_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonToolstripHeader = LAMBDA(::vl_workflow_global::__vwsnf5_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonToolstrips = LAMBDA(::vl_workflow_global::__vwsnf6_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonButtons = LAMBDA(::vl_workflow_global::__vwsnf7_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonIconLabel = LAMBDA(::vl_workflow_global::__vwsnf8_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonSmallIconLabel = LAMBDA(::vl_workflow_global::__vwsnf9_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonSplitter = LAMBDA(::vl_workflow_global::__vwsnf10_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonGroup = LAMBDA(::vl_workflow_global::__vwsnf11_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonLargeSplitButton = LAMBDA(::vl_workflow_global::__vwsnf12_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonLargeDropdownButton = LAMBDA(::vl_workflow_global::__vwsnf13_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonLargeButton = LAMBDA(::vl_workflow_global::__vwsnf14_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonSmallSplitButton = LAMBDA(::vl_workflow_global::__vwsnf15_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonSmallDropdownButton = LAMBDA(::vl_workflow_global::__vwsnf16_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonSmallButton = LAMBDA(::vl_workflow_global::__vwsnf17_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RibbonTab = LAMBDA(::vl_workflow_global::__vwsnf18_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->ProgressBar = LAMBDA(::vl_workflow_global::__vwsnf19_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->VTracker = LAMBDA(::vl_workflow_global::__vwsnf20_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->HTracker = LAMBDA(::vl_workflow_global::__vwsnf21_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->VScroll = LAMBDA(::vl_workflow_global::__vwsnf22_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->HScroll = LAMBDA(::vl_workflow_global::__vwsnf23_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->DateComboBox = LAMBDA(::vl_workflow_global::__vwsnf24_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->DatePicker = LAMBDA(::vl_workflow_global::__vwsnf25_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->RadioButton = LAMBDA(::vl_workflow_global::__vwsnf26_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->CheckBox = LAMBDA(::vl_workflow_global::__vwsnf27_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->Button = LAMBDA(::vl_workflow_global::__vwsnf28_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->ToolstripSplitter = LAMBDA(::vl_workflow_global::__vwsnf29_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->ToolstripSplitButton = LAMBDA(::vl_workflow_global::__vwsnf30_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->ToolstripDropdownButton = LAMBDA(::vl_workflow_global::__vwsnf31_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->ToolstripButton = LAMBDA(::vl_workflow_global::__vwsnf32_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->ToolstripToolBar = LAMBDA(::vl_workflow_global::__vwsnf33_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->MenuItemButton = LAMBDA(::vl_workflow_global::__vwsnf34_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->MenuBarButton = LAMBDA(::vl_workflow_global::__vwsnf35_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->MenuSplitter = LAMBDA(::vl_workflow_global::__vwsnf36_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->MenuBar = LAMBDA(::vl_workflow_global::__vwsnf37_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->Menu = LAMBDA(::vl_workflow_global::__vwsnf38_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->TextList = LAMBDA(::vl_workflow_global::__vwsnf39_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->TreeView = LAMBDA(::vl_workflow_global::__vwsnf40_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->ListView = LAMBDA(::vl_workflow_global::__vwsnf41_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->DocumentTextBox = LAMBDA(::vl_workflow_global::__vwsnf42_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->DocumentLabel = LAMBDA(::vl_workflow_global::__vwsnf43_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->DocumentViewer = LAMBDA(::vl_workflow_global::__vwsnf44_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->SinglelineTextBox = LAMBDA(::vl_workflow_global::__vwsnf45_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->MultilineTextBox = LAMBDA(::vl_workflow_global::__vwsnf46_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->ComboBox = LAMBDA(::vl_workflow_global::__vwsnf47_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->Tab = LAMBDA(::vl_workflow_global::__vwsnf48_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->GroupBox = LAMBDA(::vl_workflow_global::__vwsnf49_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->ScrollView = LAMBDA(::vl_workflow_global::__vwsnf50_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->ShortcutKey = LAMBDA(::vl_workflow_global::__vwsnf51_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->Label = LAMBDA(::vl_workflow_global::__vwsnf52_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->Tooltip = LAMBDA(::vl_workflow_global::__vwsnf53_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->CustomControl = LAMBDA(::vl_workflow_global::__vwsnf54_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->Window = LAMBDA(::vl_workflow_global::__vwsnf55_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(this))); + } + { + (::vl::__vwsn::This(this->__vwsn_precompile_0)->Name = ::vl::WString(L"DarkSkin", false)); + } + } + + ThemeConstructor::ThemeConstructor() + : __vwsn_precompile_0(static_cast<::darkskin::Theme*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::Theme) +***********************************************************************/ + + Theme::Theme() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::Theme", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_Theme_Initialize(this); + } + + Theme::~Theme() + { + this->FinalizeGeneralInstance(static_cast<::vl::presentation::controls::GuiInstanceRootObject*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ToolstripButtonTemplateConstructor) +***********************************************************************/ + + void ToolstripButtonTemplateConstructor::__vwsn_darkskin_ToolstripButtonTemplate_Initialize(::darkskin::ToolstripButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf333_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->container)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf334_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf335_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf336_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf337_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf338_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + ToolstripButtonTemplateConstructor::ToolstripButtonTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::ToolstripButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ToolstripButtonTemplate) +***********************************************************************/ + + ToolstripButtonTemplate::ToolstripButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ToolstripButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ToolstripButtonTemplate_Initialize(this); + } + + ToolstripButtonTemplate::~ToolstripButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ToolstripDropdownButtonTemplateConstructor) +***********************************************************************/ + + void ToolstripDropdownButtonTemplateConstructor::__vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize(::darkskin::ToolstripDropdownButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf339_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(11); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->container)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(9); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = (- static_cast<::vl::vint>(1)); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_6 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_6)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_8 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(2); __vwsn_temp__.y = static_cast<::vl::vint>(2); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf340_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf341_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf342_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf343_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf344_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf345_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf346_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf347_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + ToolstripDropdownButtonTemplateConstructor::ToolstripDropdownButtonTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::ToolstripDropdownButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_6(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_8(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ToolstripDropdownButtonTemplate) +***********************************************************************/ + + ToolstripDropdownButtonTemplate::ToolstripDropdownButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ToolstripDropdownButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize(this); + } + + ToolstripDropdownButtonTemplate::~ToolstripDropdownButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ToolstripMenuTemplateConstructor) +***********************************************************************/ + + void ToolstripMenuTemplateConstructor::__vwsn_darkskin_ToolstripMenuTemplate_Initialize(::darkskin::ToolstripMenuTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#1B1B1C", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#333337", false))); + } + { + ::vl::__vwsn::This(this->container)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + ToolstripMenuTemplateConstructor::ToolstripMenuTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_0(static_cast<::darkskin::ToolstripMenuTemplate*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ToolstripMenuTemplate) +***********************************************************************/ + + ToolstripMenuTemplate::ToolstripMenuTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ToolstripMenuTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ToolstripMenuTemplate_Initialize(this); + } + + ToolstripMenuTemplate::~ToolstripMenuTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ToolstripSplitArrowTemplateConstructor) +***********************************************************************/ + + void ToolstripSplitArrowTemplateConstructor::__vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize(::darkskin::ToolstripSplitArrowTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(9); __vwsn_temp__.y = static_cast<::vl::vint>(7); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(2); __vwsn_temp__.y = static_cast<::vl::vint>(2); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(5); __vwsn_temp__.y = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf330_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf331_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf332_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + ToolstripSplitArrowTemplateConstructor::ToolstripSplitArrowTemplateConstructor() + : self(static_cast<::darkskin::ToolstripSplitArrowTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ToolstripSplitArrowTemplate) +***********************************************************************/ + + ToolstripSplitArrowTemplate::ToolstripSplitArrowTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ToolstripSplitArrowTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize(this); + } + + ToolstripSplitArrowTemplate::~ToolstripSplitArrowTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ToolstripSplitButtonTemplateConstructor) +***********************************************************************/ + + void ToolstripSplitButtonTemplateConstructor::__vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize(::darkskin::ToolstripSplitButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetSubMenuTemplate(LAMBDA(::vl_workflow_global::__vwsnf348_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(11); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->container)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = (- static_cast<::vl::vint>(1)); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_7)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + (this->buttonArrow = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + } + (this->__vwsn_precompile_8 = ::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->buttonArrow)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->buttonArrow)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf349_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf350_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf351_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf352_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf353_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf354_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf355_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf356_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->self)->SetSubMenuHost(static_cast<::vl::presentation::controls::GuiButton*>(this->buttonArrow)); + } + } + + ToolstripSplitButtonTemplateConstructor::ToolstripSplitButtonTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::ToolstripSplitButtonTemplate*>(nullptr)) + , buttonArrow(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::ToolstripSplitButtonTemplate) +***********************************************************************/ + + ToolstripSplitButtonTemplate::ToolstripSplitButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ToolstripSplitButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize(this); + } + + ToolstripSplitButtonTemplate::~ToolstripSplitButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ToolstripSplitterTemplateConstructor) +***********************************************************************/ + + void ToolstripSplitterTemplateConstructor::__vwsn_darkskin_ToolstripSplitterTemplate_Initialize(::darkskin::ToolstripSplitterTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#2D2D30", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::Gui3DSplitterElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::Gui3DSplitterElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetColor2(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#464648", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetColor1(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#222224", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetDirection(::vl::presentation::elements::Gui3DSplitterElement::Direction::Vertical); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + } + + ToolstripSplitterTemplateConstructor::ToolstripSplitterTemplateConstructor() + : __vwsn_precompile_0(static_cast<::darkskin::ToolstripSplitterTemplate*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::Gui3DSplitterElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ToolstripSplitterTemplate) +***********************************************************************/ + + ToolstripSplitterTemplate::ToolstripSplitterTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ToolstripSplitterTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ToolstripSplitterTemplate_Initialize(this); + } + + ToolstripSplitterTemplate::~ToolstripSplitterTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::ToolstripTemplateConstructor) +***********************************************************************/ + + void ToolstripTemplateConstructor::__vwsn_darkskin_ToolstripTemplate_Initialize(::darkskin::ToolstripTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#2D2D30", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + } + + ToolstripTemplateConstructor::ToolstripTemplateConstructor() + : __vwsn_precompile_0(static_cast<::darkskin::ToolstripTemplate*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::ToolstripTemplate) +***********************************************************************/ + + ToolstripTemplate::ToolstripTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::ToolstripTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_ToolstripTemplate_Initialize(this); + } + + ToolstripTemplate::~ToolstripTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::TooltipTemplateConstructor) +***********************************************************************/ + + void TooltipTemplateConstructor::__vwsn_darkskin_TooltipTemplate_Initialize(::darkskin::TooltipTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#2D2D30", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#017ACC", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + } + + TooltipTemplateConstructor::TooltipTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_0(static_cast<::darkskin::TooltipTemplate*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::TooltipTemplate) +***********************************************************************/ + + TooltipTemplate::TooltipTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::TooltipTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_TooltipTemplate_Initialize(this); + } + + TooltipTemplate::~TooltipTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::TopScrollButtonTemplateConstructor) +***********************************************************************/ + + void TopScrollButtonTemplateConstructor::__vwsn_darkskin_TopScrollButtonTemplate_Initialize(::darkskin::TopScrollButtonTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(9); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiPolygonElement>())); + { + [&]()->decltype(auto){ auto __vwsn_temp_x0 = ::vl::__vwsn::Box(::vl::Ptr<::vl::reflection::description::IValueReadonlyList>((::vl::__vwsn::CreateList().Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(4); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(4); __vwsn_temp__.y = static_cast<::vl::vint>(0); return __vwsn_temp__; }()).Add([&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(8); __vwsn_temp__.y = static_cast<::vl::vint>(4); return __vwsn_temp__; }())).list)); ::vl::collections::Array<::vl::presentation::Point> __vwsn_temp_0; ::vl::reflection::description::UnboxParameter(__vwsn_temp_x0, __vwsn_temp_0); return ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetPointsArray(__vwsn_temp_0); }(); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2.Obj())->SetSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(9); __vwsn_temp__.y = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf276_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf277_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + TopScrollButtonTemplateConstructor::TopScrollButtonTemplateConstructor() + : self(static_cast<::darkskin::TopScrollButtonTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiPolygonElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::TopScrollButtonTemplate) +***********************************************************************/ + + TopScrollButtonTemplate::TopScrollButtonTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::TopScrollButtonTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_TopScrollButtonTemplate_Initialize(this); + } + + TopScrollButtonTemplate::~TopScrollButtonTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::TreeViewTemplateConstructor) +***********************************************************************/ + + void TreeViewTemplateConstructor::__vwsn_darkskin_TreeViewTemplate_Initialize(::darkskin::TreeViewTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetExpandingDecoratorTemplate(LAMBDA(::vl_workflow_global::__vwsnf125_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetTextColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#F1F1F1", false))); + } + { + ::vl::__vwsn::This(this->self)->SetBackgroundTemplate(LAMBDA(::vl_workflow_global::__vwsnf126_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#252526", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + { + ::vl::__vwsn::This(this->look)->SetVScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf127_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetHScrollTemplate(LAMBDA(::vl_workflow_global::__vwsnf128_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->look)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->look)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf129_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(::vl::__vwsn::This(this->look)->GetContainerComposition()); + } + { + ::vl::__vwsn::This(this->self)->SetHorizontalScroll(::vl::__vwsn::This(this->look)->GetHScroll()); + } + { + ::vl::__vwsn::This(this->self)->SetVerticalScroll(::vl::__vwsn::This(this->look)->GetVScroll()); + } + } + + TreeViewTemplateConstructor::TreeViewTemplateConstructor() + : self(static_cast<::darkskin::TreeViewTemplate*>(nullptr)) + , look(static_cast<::vl::presentation::templates::GuiCommonScrollViewLook*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::TreeViewTemplate) +***********************************************************************/ + + TreeViewTemplate::TreeViewTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::TreeViewTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_TreeViewTemplate_Initialize(this); + } + + TreeViewTemplate::~TreeViewTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::VScrollHandleTemplateConstructor) +***********************************************************************/ + + void VScrollHandleTemplateConstructor::__vwsn_darkskin_VScrollHandleTemplate_Initialize(::darkskin::VScrollHandleTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(4); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(4); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf278_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + VScrollHandleTemplateConstructor::VScrollHandleTemplateConstructor() + : self(static_cast<::darkskin::VScrollHandleTemplate*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + { + } + +/*********************************************************************** +Class (::darkskin::VScrollHandleTemplate) +***********************************************************************/ + + VScrollHandleTemplate::VScrollHandleTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::VScrollHandleTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_VScrollHandleTemplate_Initialize(this); + } + + VScrollHandleTemplate::~VScrollHandleTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::VScrollTemplateConstructor) +***********************************************************************/ + + void VScrollTemplateConstructor::__vwsn_darkskin_VScrollTemplate_Initialize(::darkskin::VScrollTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->behavior = new ::vl::presentation::templates::GuiCommonScrollBehavior()); + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->behavior)); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#3D3D42", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiSideAlignedComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMaxRatio(static_cast(0.5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMaxLength(static_cast<::vl::vint>(20)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetDirection(::vl::presentation::compositions::GuiSideAlignedComposition::Direction::Top); + } + { + (this->buttonDecrease = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_4 = ::vl::__vwsn::This(this->buttonDecrease)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->buttonDecrease)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->buttonDecrease)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf279_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->buttonDecrease)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiSideAlignedComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetMaxRatio(static_cast(0.5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetMaxLength(static_cast<::vl::vint>(20)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetDirection(::vl::presentation::compositions::GuiSideAlignedComposition::Direction::Bottom); + } + { + (this->buttonIncrease = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_6 = ::vl::__vwsn::This(this->buttonIncrease)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->buttonIncrease)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->buttonIncrease)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf280_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->buttonIncrease)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + (this->handleContainer = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->handleContainer)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(20); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(20); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->handleContainer)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::NoLimit); + } + (this->handle = new ::vl::presentation::compositions::GuiPartialViewComposition()); + { + (this->__vwsn_precompile_7 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_8 = ::vl::__vwsn::This(this->__vwsn_precompile_7)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf281_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->handle)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_7)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->handleContainer)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->handle)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->handleContainer)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf282_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf283_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf284_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + VScrollTemplateConstructor::VScrollTemplateConstructor() + : self(static_cast<::darkskin::VScrollTemplate*>(nullptr)) + , behavior(static_cast<::vl::presentation::templates::GuiCommonScrollBehavior*>(nullptr)) + , buttonDecrease(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , buttonIncrease(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , handleContainer(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , handle(static_cast<::vl::presentation::compositions::GuiPartialViewComposition*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiSideAlignedComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiSideAlignedComposition*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::VScrollTemplate) +***********************************************************************/ + + VScrollTemplate::VScrollTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::VScrollTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_VScrollTemplate_Initialize(this); + this->__vwsn_instance_ctor_(); + } + + void VScrollTemplate::__vwsn_instance_ctor_() + { + ::vl::__vwsn::This(this->behavior)->AttachScrollTemplate(static_cast<::vl::presentation::templates::GuiScrollTemplate*>(this->self)); + ::vl::__vwsn::This(this->behavior)->AttachDecreaseButton(this->buttonDecrease); + ::vl::__vwsn::This(this->behavior)->AttachIncreaseButton(this->buttonIncrease); + ::vl::__vwsn::This(this->behavior)->AttachVerticalScrollHandle(this->handle); + } + + VScrollTemplate::~VScrollTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::VTrackerTemplateConstructor) +***********************************************************************/ + + void VTrackerTemplateConstructor::__vwsn_darkskin_VTrackerTemplate_Initialize(::darkskin::VTrackerTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->behavior = new ::vl::presentation::templates::GuiCommonScrollBehavior()); + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->behavior)); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#3F3F47", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(6); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(6); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetRowsAndColumns(static_cast<::vl::vint>(1), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(0.5); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#55545A", false))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->handle = new ::vl::presentation::compositions::GuiPartialViewComposition()); + { + ::vl::__vwsn::This(this->handle)->SetHeightPageSize(static_cast(0)); + } + { + ::vl::__vwsn::This(this->handle)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(0); __vwsn_temp__.y = static_cast<::vl::vint>(12); return __vwsn_temp__; }()); + } + { + (this->__vwsn_precompile_6 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_7 = ::vl::__vwsn::This(this->__vwsn_precompile_6)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetFont(::vl::Nullable<::vl::presentation::FontProperties>([&](){ ::vl::presentation::FontProperties __vwsn_temp__; __vwsn_temp__.size = static_cast<::vl::vint>(1); return __vwsn_temp__; }())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf285_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->handle)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_6)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->handle)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf286_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf287_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + VTrackerTemplateConstructor::VTrackerTemplateConstructor() + : self(static_cast<::darkskin::VTrackerTemplate*>(nullptr)) + , behavior(static_cast<::vl::presentation::templates::GuiCommonScrollBehavior*>(nullptr)) + , handle(static_cast<::vl::presentation::compositions::GuiPartialViewComposition*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_6(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::VTrackerTemplate) +***********************************************************************/ + + VTrackerTemplate::VTrackerTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::VTrackerTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_VTrackerTemplate_Initialize(this); + this->__vwsn_instance_ctor_(); + } + + void VTrackerTemplate::__vwsn_instance_ctor_() + { + ::vl::__vwsn::This(this->behavior)->AttachScrollTemplate(static_cast<::vl::presentation::templates::GuiScrollTemplate*>(this->self)); + ::vl::__vwsn::This(this->behavior)->AttachVerticalTrackerHandle(this->handle); + } + + VTrackerTemplate::~VTrackerTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +/*********************************************************************** +Class (::darkskin::WindowTemplateConstructor) +***********************************************************************/ + + void WindowTemplateConstructor::__vwsn_darkskin_WindowTemplate_Initialize(::darkskin::WindowTemplate* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetTooltipTemplate(LAMBDA(::vl_workflow_global::__vwsnf357_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->self)->SetCustomFrameEnabled(true); + } + { + ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#2D2D30", false))); + } + { + ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBorderElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); + } + (this->frameTable = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->frameTable)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->frameTable)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->frameTable)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->frameTable)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->frameTable)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->frameTable)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->frameTable)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->frameTable)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->frameTable)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::BorderLeftTop); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->frameTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::BorderRightTop); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->frameTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::BorderLeftBottom); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->frameTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::BorderRightBottom); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->frameTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::BorderLeft); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->frameTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::BorderRight); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->frameTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_8)); + } + (this->__vwsn_precompile_9 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::BorderTop); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->frameTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_9)); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::BorderBottom); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + ::vl::__vwsn::This(this->frameTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->frameTable)); + } + (this->contentTable = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->contentTable)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->contentTable)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(5)); + ::vl::__vwsn::This(this->contentTable)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->contentTable)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->contentTable)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->contentTable)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->contentTable)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->contentTable)->SetColumnOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->contentTable)->SetColumnOption(static_cast<::vl::vint>(4), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_11 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_12 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_13 = ::vl::__vwsn::This(this->__vwsn_precompile_12)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetFont(::vl::Nullable<::vl::presentation::FontProperties>([&](){ ::vl::presentation::FontProperties __vwsn_temp__; __vwsn_temp__.fontFamily = ::vl::WString(L"Webdings", false); __vwsn_temp__.size = static_cast<::vl::vint>(16); return __vwsn_temp__; }())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetText(::vl::WString(L" 0 ", false)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf358_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_12)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->contentTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_11)); + } + (this->__vwsn_precompile_14 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_15 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->__vwsn_precompile_15)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->SetFont(::vl::Nullable<::vl::presentation::FontProperties>([&](){ ::vl::presentation::FontProperties __vwsn_temp__; __vwsn_temp__.fontFamily = ::vl::WString(L"Webdings", false); __vwsn_temp__.size = static_cast<::vl::vint>(16); return __vwsn_temp__; }())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf359_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_15)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->contentTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_14)); + } + (this->__vwsn_precompile_17 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_17)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::ButtonClose); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_17)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(4), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_18 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + (this->__vwsn_precompile_19 = ::vl::__vwsn::This(this->__vwsn_precompile_18)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_19)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetFont(::vl::Nullable<::vl::presentation::FontProperties>([&](){ ::vl::presentation::FontProperties __vwsn_temp__; __vwsn_temp__.fontFamily = ::vl::WString(L"Webdings", false); __vwsn_temp__.size = static_cast<::vl::vint>(16); return __vwsn_temp__; }())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetAutoFocus(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetText(::vl::WString(L" r ", false)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf360_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_17)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_18)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->contentTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_17)); + } + (this->__vwsn_precompile_20 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_20)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_21 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetRowsAndColumns(static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); + ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(16); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetRowOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(16); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_22 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_22)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::Icon); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_22)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_23 = ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiImageFrameElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_23.Obj())->SetStretch(true); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_22)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_23)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_21)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_22)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_20)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_21)); + } + { + ::vl::__vwsn::This(this->contentTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_20)); + } + (this->__vwsn_precompile_24 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_24)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::Title); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_24)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + (this->__vwsn_precompile_25 = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_25)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_25)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (this->__vwsn_precompile_26 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_26.Obj())->SetEllipse(true); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_26.Obj())->SetFont([&](){ ::vl::presentation::FontProperties __vwsn_temp__; __vwsn_temp__.fontFamily = ::vl::WString(L"Segoe WP SemiLight", false); __vwsn_temp__.size = static_cast<::vl::vint>(14); __vwsn_temp__.antialias = true; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_25)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_26)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_24)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_25)); + } + { + ::vl::__vwsn::This(this->contentTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_24)); + } + (this->__vwsn_precompile_27 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_27)->SetAssociatedHitTestResult(::vl::presentation::INativeWindowListener::HitTestResult::Client); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_27)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(5)); + } + (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + { + ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_27)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + ::vl::__vwsn::This(this->contentTable)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_27)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->contentTable)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf361_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf362_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf363_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf364_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf365_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf366_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf367_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf368_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf369_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf370_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf371_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf372_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf373_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf374_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + ::vl::__vwsn::This(this->self)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container)); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf375_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->self)->TitleBarChanged, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf376_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->self)->CustomFramePaddingChanged, __vwsn_event_handler_); + } + } + + WindowTemplateConstructor::WindowTemplateConstructor() + : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , self(static_cast<::darkskin::WindowTemplate*>(nullptr)) + , frameTable(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , contentTable(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_0(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>()) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement>()) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_11(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_12(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_13(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_14(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_15(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_16(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_17(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_18(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_19(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_20(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_21(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_22(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_23(::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement>()) + , __vwsn_precompile_24(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_25(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_26(::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>()) + , __vwsn_precompile_27(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::darkskin::WindowTemplate) +***********************************************************************/ + + WindowTemplate::WindowTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"darkskin::WindowTemplate", false)); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_darkskin_WindowTemplate_Initialize(this); + } + + WindowTemplate::~WindowTemplate() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this)); + } + +} +#undef GLOBAL_SYMBOL +#undef GLOBAL_NAME +#undef GLOBAL_OBJ + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(__clang__) +#pragma clang diagnostic pop +#endif + + +/*********************************************************************** +.\DARKSKINRESOURCE.CPP +***********************************************************************/ + +namespace vl +{ + namespace presentation + { + namespace user_resource + { + using namespace collections; + using namespace stream; + using namespace controls; + + class DarkSkinResourceReader + { + public: + static const vint parserBufferLength = 1705; // 4391 bytes before compressing + static const vint parserBufferBlock = 1024; + static const vint parserBufferRemain = 681; + static const vint parserBufferRows = 2; + static const char* parserBuffer[2]; + + static void ReadToStream(vl::stream::MemoryStream& stream) + { + DecompressStream(parserBuffer, true, parserBufferRows, parserBufferBlock, parserBufferRemain, stream); + } + }; + + const char* DarkSkinResourceReader::parserBuffer[] = { + "\x27\x11\x00\x00\xA1\x06\x00\x00\x4A\x00\x01\x82\x80\x00\x81\x80\x1E\x29\x65\x73\x2F\x35\x32\x3B\x31\x33\x26\x65\x74\x21\x24\x31\x32\x88\x10\x27\x61\x6D\x25\x3D\x12\x12\x10\x10\x2B\x65\x72\x33\x29\x3F\x36\x34\x8F\x18\x2E\x30\x22\x1E\x1C\x1C\x21\x32\x38\x65\x6E\x24\x31\x93\x31\x35\x85\x17\x2C\xAF\x08\x8A\x8C\x86\x84\x88\x89\x14\x92\xBE\x05\x03\x82\x80\x05\xA2\x01\xC7\x81\x89\x2E\x33\x3A\x88\x37\x0E\x8D\x08\xA0\x02\xAB\xA5\xA7\xA7\x0E\xD3\x34\x39\x3C\x35\x33\x01\xA9\x5F\x81\x84\x2F\x33\x34\x03\xA8\xB3\x01\xD4\x25\x38\x34\x3F\x07\xA8\xB7\x01\xC3\x2C\x21\x33\x3B\x38\x8C\x8D\x08\xE3\x2F\x32\x34\x33\xA8\x01\xB0\x45\xCA\x81\xC2\x84\x21\x32\x39\x35\x53\x6B\x29\x2E\x3E\xBE\xBE\x05\xA9\x06\x10\xC2\x82\x25\x3C\x38\x3B\x92\x8D\x99\xC3\xC8\xA2\xC3\xB3\x31\x3A\x1A\xEE\x34\x3E\xB1\x03\xAA\x01\xA9\x10\x28\xD3\xD4\xB5\x34\x37\xC5\x32\x9E\xA0\xF1\x94\x3E\x5B\xA9\xDA\x83\x9E\xAC\x83\x25\x94\x3B\xD8\x9C\x1E\x5A\xDC\x89\x8C\x91\xE5\xAC\x10\x37\x19\x9B\xA2\x03\x1E\x96\x31\x31\x3A\x6C\x74\x2D\x0F\x26\x39\x92\x39\x34\x33\xAB\xBC\x1A\xBC\x33\xBE\x1F\x11\x46\x61\xE2\xFC\x1F\x14\xEE\xEE\xF2\xC5\xE5\x04\xFB\xA6\xE0\xE6\x8C\x8E\x23\x53\x2D\xC5\x33\x34\x38\x92\x37\xD3\xD5\xF2\x37\xE9\xEC\x96\xF2\x39\xDF\x62\x73\x79\x79\x6F\x1D\x70\x80\x0F\x62\x2B\x1F\x7F\x77\x30\x30\x07\x0D\x10\x43\x03\x14\x79\x82\x0B\xA8\x7C\x7A\x7A\x16\x82\x73\x1D\x4E\xB9\x7E\x58\x59\x51\x1F\x8C\x19\x1A\x53\x9A\x65\x80\x03\x87\x03\x5F\x8D\x13\x88\x63\x26\x8A\x65\x64\x48\x70\x80\x02\x14\x69\x22\x12\x18\x66\x2E\x8D\x62\x8F\x40\x32\x93\x13\x1A\x1C\x05\xAC\x19\x8D\x63\x80\x43\x40\x60\x15\x61\x22\x13\x92\x5F\x07\x13\x5D\x91\x5A\x6B\x74\x12\x13\x1B\x78\x0B\x93\x55\x02\x57\x82\x44\x17\x1B\x05\x8E\x57\x74\x1C\x56\xB1\x82\x65\x40\x57\x0B\x64\x1B\x1B\x77\x21\x95\x50\x03\x53\x6C\x91\x43\x11\x61\x23\x17\x11\x4C\xBB\x6E\x16\x19\x1A\x67\x03\x95\x68\x52\x45\x82\x40\x63\x10\x70\x20\x93\x54\x51\x7C\x93\x55\x55\x51\x87\x80\xA0\x1F\x6E\x6D\x30\x12\x1D\x42\x73\x25\x14\x18\x05\x53\x54\xA2\x5A\x61\x88\x4A\x6E\x1B\x4E\x0B\x4D\x45\x1A\x0B\x63\x01\xAD\x9D\x40\x28\x82\x4F\x87\x5D\x65\x02\x63\x41\x67\x98\x89\x6B\x63\xA8\x54\x46\xA2\x42\x13\x7B\x6D\x11\x18\x1B\x4C\x63\x1C\x19\x1D\x33\x69\x68\x52\xAF\x00\x2E\x0E\x0B\x0B\xC2\x84\xB3\xB0\x9C\x63\x15\x19\x12\x0B\x68\x30\xA1\x07\x54\xCF\x81\x48\x42\x19\x5D\x75\x77\x7D\xAE\xBB\xB3\x49\x0F\x54\xDB\x81\x45\xB3\xB7\xC3\x93\xB5\xB6\x7D\x25\x6F\x04\x15\x1E\x30\x6E\x43\x1F\x8F\x69\x30\x17\x66\x48\x2F\x07\x15\x1D\x1A\xE2\xB4\x74\xBA\x1B\x50\x3B\xA7\x1B\x62\xCC\xB0\xAE\x9B\x9A\x02\x53\x1D\xA6\x43\x46\x05\x83\x4E\x1C\x3B\x82\x4D\x8F\xC0\x65\x3E\x5B\x03\x54\x0F\xC1\x40\x17\xA3\x7A\x4D\xA9\x19\x57\x7D\x53\x5B\x9C\x88\x6F\x5D\xC1\x5F\x5C\x75\x68\xA9\x5F\x5E\x64\x04\x1E\xC5\x51\x70\x40\x04\x47\x61\x73\x1A\xAA\x0E\x0E\x54\x28\x15\x1A\x46\x18\x13\x55\xCD\x40\x2B\xEB\x1D\xCB\x62\x2F\xD4\x66\x65\x49\x6A\x4D\xA3\x5D\x6F\x1A\x13\x55\xD0\xCE\x98\xBB\xCE\x1B\xCB\x43\x32\xC3\x1B\x1A\x53\xB8\x11\xD0\x1C\x43\xE5\x1D\x07\x54\x57\xC8\xDC\xCA\xCB\x3A\x12\x13\x44\x49\x3E\xD7\x6E\x1B\xD4\x55\xDF\x03\x56\xD9\x5A\xFA\xCC\xD5\x6C\xA1\x74\x1C\x11\x92\xAD\x64\xD5\x45\x19\x21\x13\x55\xDD\xDA\x4A\xEF\xCC\xDB\x6C\x6A\x6C\x51\xD6\xDC\xBD\x60\x03\x56\xE0\x78\xEB\xD4\x5A\x6C\xA2\x56\x16\x4F\x1D\x21\x40\xE5\x1B\xD1\x45\x50\xE9\xCD\xDE\x3A\x0C\xA7\x8F\xDF\x33\xD4\xD3\xDC\x09\x53\x5C\xE5\xE0\xCF\x3A\x05\x18\x1C\x1C\x61\x32\x4B\x63\x19\x2E\x7A\x52\x1D\x45\x7B\x4E\xE4\xE1\x51\xAF\xD3\xEC\xD5\x12\xBD\x6D\x12\x11\x9C\x6B\x27\x10\x91\x1D\x32\x4E\xE6\x0B\x54\xBF\xDF\xEB\xD2\x0E\x22\x8E\x5A\xE1\x19\x77\x3B\x6B\xAD\x1B\x6E\x08\x15\x1B\x44\x8D\xD9\xE5\xD4\xE4\x03\x52\xE9\xD0\xD7\xC5\xF4\x17\xF3\x1D\x8E\xD4\xF2\x42\xF5\x5B\xE0\xED\xDE\xDB\x23\xB4\x1D\xF6\xD1\x02\x72\xE2\xFB\xA3\x65\x1B\xFE\xE0\x07\x53\x70\xF2\xF2\xDE\x73\xE1\xD0\xD2\xF4\x73\xF2\xF5\x52\xFE\xEA\xC3\xF5\x61\x6F\x50\x09\x0F\xD3\x51\x72\x69\xB9\x5E\x79\x20\xE0\x6A\x6C\xE8\x47\x0B\x76\x38\x18\x75\x80\xBD\x37\x03\x54\x12\x83\x7E\xE2\x70\x6C\x0D\x8E\x79\x69\x51\x1A\x8D\x7F\x97\x53\x08\x0D\x7B\x34\x0F\x67\x74\x0B\x09\x32\x39\x0E\x71\x22\x13\x29\x0A\x95\x84\x46\x1B\x65\x23\x0A\x54\x69\x0C\x1D\x41\x0B\x3E\x34\x4E\x70\x6D\x45\x38\x85\x07\xDD\x65\x47\x1B\x6E\x0E", + "\x7E\x4D\x2E\x71\x0B\x53\x23\x88\x16\xBD\x85\x24\x70\x4C\x0D\x57\x72\x09\x0E\x22\x00\x48\x0E\x67\x57\x0F\x0F\x95\x32\x6C\xC7\x67\x03\x2A\x57\x86\x8A\x0B\xEE\x09\x89\x25\xB9\x0C\x76\x33\x79\x7B\x0D\xE7\x69\x7D\xEB\x60\x75\x85\x3E\x9D\x89\x48\x27\x88\x7F\xDE\x29\x03\x2A\x6F\x9A\x89\x1A\x8D\x82\x74\xD2\x72\x20\x88\x8E\x77\x6D\x51\x7A\x8B\x86\x34\x88\x8D\x81\x10\x2E\x0D\x1D\x19\x88\x6B\x32\xA1\x7B\x78\x7E\x9C\x89\x03\xF9\x86\x6E\x43\x8A\x80\x91\x47\x8E\x0D\x12\x7A\x2E\x0D\xB7\x62\x09\x6E\x6D\x85\x0F\x08\x53\x2B\x92\x39\xA5\x27\x6D\x72\x07\x0D\x19\x78\x89\x93\x15\x13\x2E\x94\x9E\x95\x92\x61\x22\x9E\x89\x37\x10\x88\x4D\x53\x9F\x67\xD8\x19\x98\x05\xA9\x35\x91\x95\xA0\x82\x94\x0C\xAE\x32\x4A\x2A\xB7\x78\x82\x9A\x9C\x92\x23\x94\x79\x91\x29\x36\x52\x89\xA4\x80\x98\x2A\xC5\x2B\x99\x3E\x91\x96\x98\xB7\x4C\x0D\x2B\xAF\x92\x8B\x64\x9A\x75\x37\xC1\x65\x29\x36\xCE\x9B\x8A\x68\x8A\x8B\x92\x9F\x97\x82\xE3\x37\x95\x28\x72\x9C\x9E\x87\xDE\x8C\x0F\x2E\xB2\x86\x9B\xAA\x59\x8D\x28\xEF\x87\x9C\xD0\x5C\x4C\x0C\x2F\x6D\x5E\x79\xD0\x72\x0E\xE3\x25\x03\x2A\x7E\xA9\x93\x4B\x5D\x54\x0F\x97\x01\x93\x91\x4C\xAB\x85\x28\x07\xB2\x9F\xD8\x74\x96\x9E\x38\x33\x0E\x71\x9E\x65\x29\x44\xBB\x83\x4B\x9F\x6D\x0E\x47\x40\x48\x9A\x2F\xB3\x90\x98\x1C\x83\x22\x87\x66\x83\x78\x12\x18\xA1\x48\x24\x25\x74\x0C\x5D\x2E\x71\x06\x53\x2B\xA5\x0A\xA3\xA7\x47\x41\x47\x7C\x52\x09\x84\x72\x24\x14\x0B\x75\x03\x9A\x9E\x41\xAA\x83\x98\xEC\x65\x0E\x0C\x74\x04\xA6\x46\xB2\x94\x90\xA4\x1C\x81\xA4\x2F\x73\x63\x1B\x3A\x70\x53\xDB\x7A\xA0\x98\x9D\x85\x29\x54\xCE\x97\x0C\x34\x01\xA8\xA6\x43\xB5\x89\x26\xFA\x73\x20\xFE\x48\xAA\x07\x42\xAC\x0E\xFB\x19\x9A\x8F\x81\x3C\x8F\xAB\x5B\x50\x0D\x58\xED\x93\x6E\x8F\x82\x20\xA4\x87\x8F\x66\x15\x61\xA6\xA4\x99\x29\xA1\x93\x2D\xA5\x29\x5E\xBB\x83\xAE\xAC\x98\x81\x93\x07\x80\x00\x4D\xDC\x66\x0B\x9B\xB8\x74\x80\xD7\x94\x6D\x23\x95\x88\x48\x31\x38\x9F\x60\x6C\xBD\x37\x06\x53\x23\xB2\xC6\x89\x4F\xB1\x88\xB5\x69\x05\x53\x2B\xB2\xCB\xA2\x08\x85\x3C\xB5\x81\x13\x50\x36\x3E\xD7\x2E\x0D\x0C\xE3\x6F\x81\x62\xD1\xA3\x21\xA9\x9F\xAB\x0A\xA7\x7D\x2A\x69\xA8\xB1\x4A\xD5\xA5\x6C\x8C\xA2\xB1\x25\x1D\x4E\xA1\xB3\x32\x2F\x73\x20\xB1\x7F\xA8\x41\xE0\x86\x77\x8D\x8E\x76\x03\x53\x28\xB9\x6E\x82\x9B\x9C\xCB\x19\xB3\x6E\xFE\x85\x29\x74\xBB\x80\xA1\x7A\x82\xA5\x5D\xCD\xB4\x84\x90\x5C\x74\xAD\xC5\xAA\x60\xAD\x0C\xB7\xBA\x03\xC6\xB9\x93\x38\x85\x2E\xBC\xD4\xA1\xBF\x97\x53\x91\x8B\x58\x9A\xAD\xA3\xB8\xBF\xB9\x5C\xB0\x6A\xBD\x76\x44\xA6\x77\xC0\x7D\xA6\xF8\x75\xBA\xAD\x18\xBD\x94\xA8\x99\x8C\xB6\x40\x2E\xB3\xBF\xEA\x8D\xA5\xB9\xBD\x2F\xA9\x62\x95\xB5\x28\x06\xE9\xB9\xA0\x5F\x43\x8C\x52\x70\xAF\x90\xA6\x75\x0E\x29\x6F\x0D\x0D\x9D\x02\xA5\x40\x95\xAC\xA2\xBF\xC3\x75\xBA\x7D\x70\x0E\x71\x9B\x45\x2E\xC4\x3B\x85\x4E\x4C\x36\x89\x92\xBF\x00", + }; + + class DarkSkinResourceLoaderPlugin : public Object, public IGuiPlugin + { + public: + + GUI_PLUGIN_NAME(GacGen_DarkSkinResourceLoader) + { + GUI_PLUGIN_DEPEND(GacUI_Res_Resource); + GUI_PLUGIN_DEPEND(GacUI_Res_TypeResolvers); +#ifndef VCZH_DEBUG_NO_REFLECTION + GUI_PLUGIN_DEPEND(GacUI_Instance_Reflection); + GUI_PLUGIN_DEPEND(GacUI_Compiler_WorkflowTypeResolvers); +#endif + } + + void Load()override + { + List errors; + MemoryStream resourceStream; + DarkSkinResourceReader::ReadToStream(resourceStream); + resourceStream.SeekFromBegin(0); + GetResourceManager()->LoadResourceOrPending(resourceStream, GuiResourceUsage::InstanceClass); + } + + void Unload()override + { + } + }; + GUI_REGISTER_PLUGIN(DarkSkinResourceLoaderPlugin) + } + } +} + diff --git a/Import/DarkSkin.h b/Import/DarkSkin.h new file mode 100644 index 00000000..f08948bd --- /dev/null +++ b/Import/DarkSkin.h @@ -0,0 +1,12404 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "GacUI.h" +#include "VlppParser.h" +#include "VlppWorkflowLibrary.h" +#include "VlppReflection.h" +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" + +/*********************************************************************** +.\DARKSKINPARTIALCLASSES.H +***********************************************************************/ +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! + +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DARKSKINPARTIALCLASSES +#define VCZH_WORKFLOW_COMPILER_GENERATED_DARKSKINPARTIALCLASSES + + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#endif + +namespace vl_workflow_global +{ + struct __vwsnf100_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf101_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf102_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf103_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf104_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf105_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf106_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf107_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf108_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf109_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf10_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf110_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf111_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf112_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf113_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + struct __vwsnf114_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + struct __vwsnf115_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + struct __vwsnf116_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + struct __vwsnf117_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + struct __vwsnf118_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + struct __vwsnf119_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + struct __vwsnf11_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf120_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + struct __vwsnf121_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + struct __vwsnf122_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + struct __vwsnf123_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + struct __vwsnf124_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + struct __vwsnf125_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + struct __vwsnf126_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + struct __vwsnf127_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + struct __vwsnf128_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + struct __vwsnf129_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + struct __vwsnf12_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf130_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_; + struct __vwsnf131_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_; + struct __vwsnf132_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + struct __vwsnf133_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + struct __vwsnf134_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + struct __vwsnf135_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + struct __vwsnf136_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + struct __vwsnf137_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + struct __vwsnf138_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + struct __vwsnf139_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + struct __vwsnf13_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf140_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; + struct __vwsnf141_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; + struct __vwsnf142_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; + struct __vwsnf143_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; + struct __vwsnf144_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_; + struct __vwsnf145_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_; + struct __vwsnf146_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_; + struct __vwsnf147_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_; + struct __vwsnf148_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_; + struct __vwsnf149_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_; + struct __vwsnf14_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf150_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + struct __vwsnf151_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + struct __vwsnf152_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + struct __vwsnf153_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + struct __vwsnf154_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + struct __vwsnf155_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + struct __vwsnf156_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_; + struct __vwsnf157_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_; + struct __vwsnf158_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_; + struct __vwsnf159_DarkSkin_darkskin_RibbonGalleryItemListTemplateConstructor___vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize_; + struct __vwsnf15_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf160_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf161_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf162_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf163_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf164_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf165_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf166_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf167_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf168_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf169_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf16_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf170_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf171_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf172_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf173_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + struct __vwsnf174_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_; + struct __vwsnf175_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_; + struct __vwsnf176_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + struct __vwsnf177_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + struct __vwsnf178_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + struct __vwsnf179_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + struct __vwsnf17_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf180_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + struct __vwsnf181_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + struct __vwsnf182_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + struct __vwsnf183_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_; + struct __vwsnf184_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_; + struct __vwsnf185_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_; + struct __vwsnf186_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + struct __vwsnf187_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + struct __vwsnf188_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + struct __vwsnf189_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + struct __vwsnf18_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf190_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + struct __vwsnf191_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + struct __vwsnf192_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + struct __vwsnf193_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + struct __vwsnf194_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + struct __vwsnf195_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf196_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf197_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf198_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf199_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf19_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf1_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf200_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf201_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf202_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf203_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf204_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf205_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + struct __vwsnf206_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + struct __vwsnf207_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + struct __vwsnf208_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + struct __vwsnf209_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + struct __vwsnf20_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf210_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + struct __vwsnf211_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + struct __vwsnf212_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + struct __vwsnf213_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + struct __vwsnf214_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + struct __vwsnf215_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + struct __vwsnf216_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + struct __vwsnf217_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + struct __vwsnf218_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + struct __vwsnf219_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + struct __vwsnf21_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf220_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + struct __vwsnf221_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + struct __vwsnf222_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + struct __vwsnf223_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + struct __vwsnf224_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + struct __vwsnf225_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf226_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf227_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf228_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf229_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf22_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf230_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf231_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf232_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf233_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf234_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf235_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf236_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + struct __vwsnf237_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + struct __vwsnf238_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + struct __vwsnf239_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + struct __vwsnf23_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf240_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + struct __vwsnf241_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + struct __vwsnf242_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + struct __vwsnf243_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf244_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf245_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf246_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf247_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf248_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf249_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf24_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf250_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf251_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf252_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf253_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf254_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + struct __vwsnf255_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_; + struct __vwsnf256_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_; + struct __vwsnf257_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_; + struct __vwsnf258_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_; + struct __vwsnf259_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize_; + struct __vwsnf25_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf260_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + struct __vwsnf261_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + struct __vwsnf262_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + struct __vwsnf263_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + struct __vwsnf264_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + struct __vwsnf265_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + struct __vwsnf266_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_; + struct __vwsnf267_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_; + struct __vwsnf268_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_; + struct __vwsnf269_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_; + struct __vwsnf26_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf270_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_; + struct __vwsnf271_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize_; + struct __vwsnf272_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_; + struct __vwsnf273_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_; + struct __vwsnf274_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_; + struct __vwsnf275_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_; + struct __vwsnf276_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_; + struct __vwsnf277_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_; + struct __vwsnf278_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize_; + struct __vwsnf279_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + struct __vwsnf27_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf280_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + struct __vwsnf281_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + struct __vwsnf282_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + struct __vwsnf283_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + struct __vwsnf284_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + struct __vwsnf285_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_; + struct __vwsnf286_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_; + struct __vwsnf287_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_; + struct __vwsnf288_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + struct __vwsnf289_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + struct __vwsnf28_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf290_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + struct __vwsnf291_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + struct __vwsnf292_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + struct __vwsnf293_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + struct __vwsnf294_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + struct __vwsnf295_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + struct __vwsnf296_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + struct __vwsnf297_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + struct __vwsnf298_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + struct __vwsnf299_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + struct __vwsnf29_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf2_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf300_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + struct __vwsnf301_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + struct __vwsnf302_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + struct __vwsnf303_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + struct __vwsnf304_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + struct __vwsnf305_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + struct __vwsnf306_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + struct __vwsnf307_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_; + struct __vwsnf308_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_; + struct __vwsnf309_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_; + struct __vwsnf30_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf310_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize_; + struct __vwsnf311_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + struct __vwsnf312_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + struct __vwsnf313_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + struct __vwsnf314_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + struct __vwsnf315_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + struct __vwsnf316_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf317_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf318_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf319_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf31_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf320_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf321_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf322_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf323_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf324_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf325_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf326_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf327_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf328_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf329_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + struct __vwsnf32_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf330_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_; + struct __vwsnf331_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_; + struct __vwsnf332_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_; + struct __vwsnf333_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + struct __vwsnf334_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + struct __vwsnf335_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + struct __vwsnf336_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + struct __vwsnf337_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + struct __vwsnf338_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + struct __vwsnf339_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + struct __vwsnf33_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf340_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + struct __vwsnf341_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + struct __vwsnf342_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + struct __vwsnf343_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + struct __vwsnf344_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + struct __vwsnf345_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + struct __vwsnf346_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + struct __vwsnf347_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + struct __vwsnf348_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + struct __vwsnf349_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + struct __vwsnf34_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf350_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + struct __vwsnf351_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + struct __vwsnf352_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + struct __vwsnf353_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + struct __vwsnf354_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + struct __vwsnf355_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + struct __vwsnf356_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + struct __vwsnf357_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf358_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf359_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf35_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf360_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf361_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf362_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf363_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf364_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf365_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf366_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf367_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf368_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf369_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf36_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf370_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf371_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf372_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf373_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf374_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf375_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf376_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + struct __vwsnf37_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf38_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf39_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf3_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf40_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf41_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf42_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf43_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf44_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf45_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf46_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf47_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf48_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf49_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf4_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf50_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf51_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf52_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf53_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf54_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf55_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf56_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + struct __vwsnf57_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + struct __vwsnf58_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + struct __vwsnf59_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + struct __vwsnf5_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf60_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + struct __vwsnf61_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + struct __vwsnf62_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + struct __vwsnf63_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + struct __vwsnf64_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + struct __vwsnf65_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + struct __vwsnf66_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + struct __vwsnf67_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + struct __vwsnf68_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + struct __vwsnf69_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + struct __vwsnf6_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf70_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + struct __vwsnf71_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + struct __vwsnf72_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + struct __vwsnf73_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + struct __vwsnf74_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + struct __vwsnf75_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + struct __vwsnf76_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + struct __vwsnf77_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + struct __vwsnf78_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize_; + struct __vwsnf79_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_; + struct __vwsnf7_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf80_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_; + struct __vwsnf81_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_; + struct __vwsnf82_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf83_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf84_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf85_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf86_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf87_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf88_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf89_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf8_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + struct __vwsnf90_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf91_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf92_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + struct __vwsnf93_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + struct __vwsnf94_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + struct __vwsnf95_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + struct __vwsnf96_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + struct __vwsnf97_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + struct __vwsnf98_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + struct __vwsnf99_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize_; + struct __vwsnf9_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + class __vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; +} + +namespace darkskin +{ + class BottomScrollButtonTemplateConstructor; + class BottomScrollButtonTemplate; + class ButtonTemplateConstructor; + class ButtonTemplate; + class CheckBoxTemplateConstructor; + class CheckBoxTemplate; + class ComboBoxTemplateConstructor; + class ComboBoxTemplate; + class CustomControlTemplateConstructor; + class CustomControlTemplate; + class DateButtonTemplateConstructor; + class DateButtonTemplate; + class DatePickerTemplateConstructor; + class DatePickerTemplate; + class DocumentLabelTemplateConstructor; + class DocumentLabelTemplate; + class DocumentTextBoxTemplateConstructor; + class DocumentTextBoxTemplate; + class DocumentViewerTemplateConstructor; + class DocumentViewerTemplate; + class ExpandingDecoratorTemplateConstructor; + class ExpandingDecoratorTemplate; + class GroupBoxTemplateConstructor; + class GroupBoxTemplate; + class HScrollHandleTemplateConstructor; + class HScrollHandleTemplate; + class HScrollTemplateConstructor; + class HScrollTemplate; + class HTrackerTemplateConstructor; + class HTrackerTemplate; + class ItemBackgroundTemplateConstructor; + class ItemBackgroundTemplate; + class LabelTemplateConstructor; + class LabelTemplate; + class LeftScrollButtonTemplateConstructor; + class LeftScrollButtonTemplate; + class ListViewColumnHeaderTemplateConstructor; + class ListViewColumnHeaderTemplate; + class ListViewTemplateConstructor; + class ListViewTemplate; + class MenuBarButtonTemplateConstructor; + class MenuBarButtonTemplate; + class MenuItemButtonTemplateConstructor; + class MenuItemButtonTemplate; + class MenuSplitterTemplateConstructor; + class MenuSplitterTemplate; + class MultilineTextBoxTemplateConstructor; + class MultilineTextBoxTemplate; + class ProgressBarTemplateConstructor; + class ProgressBarTemplate; + class RadioButtonTemplateConstructor; + class RadioButtonTemplate; + class RibbonButtonsTemplateConstructor; + class RibbonButtonsTemplate; + class RibbonGalleryDropdownButtonTemplateConstructor; + class RibbonGalleryDropdownButtonTemplate; + class RibbonGalleryItemListTemplateConstructor; + class RibbonGalleryItemListTemplate; + class RibbonGalleryTemplateConstructor; + class RibbonGalleryTemplate; + class RibbonGroupExpandButtonTemplateConstructor; + class RibbonGroupExpandButtonTemplate; + class RibbonGroupMenuTemplateConstructor; + class RibbonGroupMenuTemplate; + class RibbonGroupTemplateConstructor; + class RibbonGroupTemplate; + class RibbonIconLabelTemplateConstructor; + class RibbonIconLabelTemplate; + class RibbonLargeButtonTemplateConstructor; + class RibbonLargeButtonTemplate; + class RibbonLargeDropdownButtonTemplateConstructor; + class RibbonLargeDropdownButtonTemplate; + class RibbonLargeSplitButtonTemplateConstructor; + class RibbonLargeSplitButtonTemplate; + class RibbonSmallButtonTemplateConstructor; + class RibbonSmallButtonTemplate; + class RibbonSmallDropdownButtonTemplateConstructor; + class RibbonSmallDropdownButtonTemplate; + class RibbonSmallIconLabelTemplateConstructor; + class RibbonSmallIconLabelTemplate; + class RibbonSmallSplitButtonTemplateConstructor; + class RibbonSmallSplitButtonTemplate; + class RibbonSplitArrowTemplateConstructor; + class RibbonSplitArrowTemplate; + class RibbonToolstripHeaderTemplateConstructor; + class RibbonToolstripHeaderTemplate; + class RibbonToolstripMenuTemplateConstructor; + class RibbonToolstripMenuTemplate; + class RibbonToolstripsTemplateConstructor; + class RibbonToolstripsTemplate; + class RightScrollButtonTemplateConstructor; + class RightScrollButtonTemplate; + class ScrollViewTemplateConstructor; + class ScrollViewTemplate; + class ShortcutKeyTemplateConstructor; + class ShortcutKeyTemplate; + class SinglelineTextBoxTemplateConstructor; + class SinglelineTextBoxTemplate; + class TabHeaderButtonTemplateConstructor; + class TabHeaderButtonTemplate; + class TabHeaderTemplateConstructor; + class TabHeaderTemplate; + class TabTemplateConstructor; + class TabTemplate; + class TextListTemplateConstructor; + class TextListTemplate; + class ThemeConstructor; + class Theme; + class ToolstripButtonTemplateConstructor; + class ToolstripButtonTemplate; + class ToolstripDropdownButtonTemplateConstructor; + class ToolstripDropdownButtonTemplate; + class ToolstripMenuTemplateConstructor; + class ToolstripMenuTemplate; + class ToolstripSplitArrowTemplateConstructor; + class ToolstripSplitArrowTemplate; + class ToolstripSplitButtonTemplateConstructor; + class ToolstripSplitButtonTemplate; + class ToolstripSplitterTemplateConstructor; + class ToolstripSplitterTemplate; + class ToolstripTemplateConstructor; + class ToolstripTemplate; + class TooltipTemplateConstructor; + class TooltipTemplate; + class TopScrollButtonTemplateConstructor; + class TopScrollButtonTemplate; + class TreeViewTemplateConstructor; + class TreeViewTemplate; + class VScrollHandleTemplateConstructor; + class VScrollHandleTemplate; + class VScrollTemplateConstructor; + class VScrollTemplate; + class VTrackerTemplateConstructor; + class VTrackerTemplate; + class WindowTemplateConstructor; + class WindowTemplate; + + class BottomScrollButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf257_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf258_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::BottomScrollButtonTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_2; + void __vwsn_darkskin_BottomScrollButtonTemplate_Initialize(::darkskin::BottomScrollButtonTemplate* __vwsn_this_); + public: + BottomScrollButtonTemplateConstructor(); + }; + + class BottomScrollButtonTemplate : public ::vl::presentation::templates::GuiButtonTemplate, public ::darkskin::BottomScrollButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::BottomScrollButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf257_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf258_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + BottomScrollButtonTemplate(); + ~BottomScrollButtonTemplate(); + }; + + class ButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf56_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf57_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf58_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf59_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf60_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf61_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::ButtonTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement> __vwsn_precompile_4; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_5; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_6; + void __vwsn_darkskin_ButtonTemplate_Initialize(::darkskin::ButtonTemplate* __vwsn_this_); + public: + ButtonTemplateConstructor(); + }; + + class ButtonTemplate : public ::vl::presentation::templates::GuiButtonTemplate, public ::darkskin::ButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf56_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf57_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf58_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf59_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf60_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf61_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ButtonTemplate(); + ~ButtonTemplate(); + }; + + class CheckBoxTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf62_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf63_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf64_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf65_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf66_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf67_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf68_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf69_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::CheckBoxTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_5; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_7; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_8; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_10; + ::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement> __vwsn_precompile_11; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_12; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_13; + void __vwsn_darkskin_CheckBoxTemplate_Initialize(::darkskin::CheckBoxTemplate* __vwsn_this_); + public: + CheckBoxTemplateConstructor(); + }; + + class CheckBoxTemplate : public ::vl::presentation::templates::GuiSelectableButtonTemplate, public ::darkskin::CheckBoxTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::CheckBoxTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf62_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf63_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf64_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf65_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf66_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf67_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf68_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf69_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + CheckBoxTemplate(); + ~CheckBoxTemplate(); + }; + + class ComboBoxTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf82_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf83_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf84_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf85_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf86_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf87_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf88_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf89_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf90_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf91_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf92_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::ComboBoxTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_4; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_5; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_6; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_7; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_8; + void __vwsn_darkskin_ComboBoxTemplate_Initialize(::darkskin::ComboBoxTemplate* __vwsn_this_); + public: + ComboBoxTemplateConstructor(); + }; + + class ComboBoxTemplate : public ::vl::presentation::templates::GuiDateComboBoxTemplate, public ::darkskin::ComboBoxTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ComboBoxTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf82_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf83_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf84_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf85_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf86_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf87_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf88_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf89_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf90_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf91_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf92_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ComboBoxTemplate(); + ~ComboBoxTemplate(); + }; + + class CustomControlTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::CustomControlTemplate* __vwsn_precompile_0; + void __vwsn_darkskin_CustomControlTemplate_Initialize(::darkskin::CustomControlTemplate* __vwsn_this_); + public: + CustomControlTemplateConstructor(); + }; + + class CustomControlTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::darkskin::CustomControlTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::CustomControlTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + CustomControlTemplate(); + ~CustomControlTemplate(); + }; + + class DateButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf130_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf131_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::DateButtonTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement> __vwsn_precompile_2; + void __vwsn_darkskin_DateButtonTemplate_Initialize(::darkskin::DateButtonTemplate* __vwsn_this_); + public: + DateButtonTemplateConstructor(); + }; + + class DateButtonTemplate : public ::vl::presentation::templates::GuiSelectableButtonTemplate, public ::darkskin::DateButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::DateButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf130_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf131_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + DateButtonTemplate(); + ~DateButtonTemplate(); + }; + + class DatePickerTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf132_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf133_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf134_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf135_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf136_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf137_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf138_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf139_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::DatePickerTemplate* self; + ::vl::presentation::templates::GuiCommonDatePickerLook* look; + void __vwsn_darkskin_DatePickerTemplate_Initialize(::darkskin::DatePickerTemplate* __vwsn_this_); + public: + DatePickerTemplateConstructor(); + }; + + class DatePickerTemplate : public ::vl::presentation::templates::GuiDatePickerTemplate, public ::darkskin::DatePickerTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::DatePickerTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf132_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf133_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf134_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf135_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf136_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf137_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf138_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf139_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + DatePickerTemplate(); + ~DatePickerTemplate(); + }; + + class DocumentLabelTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::DocumentLabelTemplate* self; + void __vwsn_darkskin_DocumentLabelTemplate_Initialize(::darkskin::DocumentLabelTemplate* __vwsn_this_); + public: + DocumentLabelTemplateConstructor(); + }; + + class DocumentLabelTemplate : public ::vl::presentation::templates::GuiDocumentLabelTemplate, public ::darkskin::DocumentLabelTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::DocumentLabelTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + DocumentLabelTemplate(); + ~DocumentLabelTemplate(); + }; + + class DocumentTextBoxTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf78_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::DocumentTextBoxTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + void __vwsn_darkskin_DocumentTextBoxTemplate_Initialize(::darkskin::DocumentTextBoxTemplate* __vwsn_this_); + public: + DocumentTextBoxTemplateConstructor(); + }; + + class DocumentTextBoxTemplate : public ::vl::presentation::templates::GuiDocumentLabelTemplate, public ::darkskin::DocumentTextBoxTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::DocumentTextBoxTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf78_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + DocumentTextBoxTemplate(); + ~DocumentTextBoxTemplate(); + }; + + class DocumentViewerTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf79_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf80_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf81_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::DocumentViewerTemplate* self; + ::vl::presentation::templates::GuiCommonScrollViewLook* look; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + void __vwsn_darkskin_DocumentViewerTemplate_Initialize(::darkskin::DocumentViewerTemplate* __vwsn_this_); + public: + DocumentViewerTemplateConstructor(); + }; + + class DocumentViewerTemplate : public ::vl::presentation::templates::GuiDocumentViewerTemplate, public ::darkskin::DocumentViewerTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::DocumentViewerTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf79_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf80_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf81_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + DocumentViewerTemplate(); + ~DocumentViewerTemplate(); + }; + + class ExpandingDecoratorTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf93_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf94_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf95_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf96_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf97_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf98_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::ExpandingDecoratorTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_5; + void __vwsn_darkskin_ExpandingDecoratorTemplate_Initialize(::darkskin::ExpandingDecoratorTemplate* __vwsn_this_); + public: + ExpandingDecoratorTemplateConstructor(); + }; + + class ExpandingDecoratorTemplate : public ::vl::presentation::templates::GuiSelectableButtonTemplate, public ::darkskin::ExpandingDecoratorTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ExpandingDecoratorTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf93_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf94_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf95_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf96_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf97_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf98_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ExpandingDecoratorTemplate(); + ~ExpandingDecoratorTemplate(); + }; + + class GroupBoxTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf140_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf141_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf142_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf143_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::GroupBoxTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* titleBounds; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_5; + void __vwsn_darkskin_GroupBoxTemplate_Initialize(::darkskin::GroupBoxTemplate* __vwsn_this_); + public: + GroupBoxTemplateConstructor(); + }; + + class GroupBoxTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::darkskin::GroupBoxTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::GroupBoxTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf140_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf141_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf142_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf143_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + GroupBoxTemplate(); + ~GroupBoxTemplate(); + }; + + class HScrollHandleTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf259_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::HScrollHandleTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + void __vwsn_darkskin_HScrollHandleTemplate_Initialize(::darkskin::HScrollHandleTemplate* __vwsn_this_); + public: + HScrollHandleTemplateConstructor(); + }; + + class HScrollHandleTemplate : public ::vl::presentation::templates::GuiButtonTemplate, public ::darkskin::HScrollHandleTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::HScrollHandleTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf259_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + HScrollHandleTemplate(); + ~HScrollHandleTemplate(); + }; + + class HScrollTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf260_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf261_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf262_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf263_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf264_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf265_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::HScrollTemplate* self; + ::vl::presentation::templates::GuiCommonScrollBehavior* behavior; + ::vl::presentation::controls::GuiButton* buttonDecrease; + ::vl::presentation::controls::GuiButton* buttonIncrease; + ::vl::presentation::compositions::GuiBoundsComposition* handleContainer; + ::vl::presentation::compositions::GuiPartialViewComposition* handle; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiSideAlignedComposition* __vwsn_precompile_3; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_4; + ::vl::presentation::compositions::GuiSideAlignedComposition* __vwsn_precompile_5; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_6; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_7; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_8; + void __vwsn_darkskin_HScrollTemplate_Initialize(::darkskin::HScrollTemplate* __vwsn_this_); + public: + HScrollTemplateConstructor(); + }; + + class HScrollTemplate : public ::vl::presentation::templates::GuiScrollTemplate, public ::darkskin::HScrollTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::HScrollTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf260_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf261_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf262_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf263_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf264_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf265_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + HScrollTemplate(); + void __vwsn_instance_ctor_(); + ~HScrollTemplate(); + }; + + class HTrackerTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf266_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf267_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf268_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::HTrackerTemplate* self; + ::vl::presentation::templates::GuiCommonScrollBehavior* behavior; + ::vl::presentation::compositions::GuiPartialViewComposition* handle; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_5; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_7; + void __vwsn_darkskin_HTrackerTemplate_Initialize(::darkskin::HTrackerTemplate* __vwsn_this_); + public: + HTrackerTemplateConstructor(); + }; + + class HTrackerTemplate : public ::vl::presentation::templates::GuiScrollTemplate, public ::darkskin::HTrackerTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::HTrackerTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf266_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf267_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf268_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + HTrackerTemplate(); + void __vwsn_instance_ctor_(); + ~HTrackerTemplate(); + }; + + class ItemBackgroundTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf99_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::ItemBackgroundTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + void __vwsn_darkskin_ItemBackgroundTemplate_Initialize(::darkskin::ItemBackgroundTemplate* __vwsn_this_); + public: + ItemBackgroundTemplateConstructor(); + }; + + class ItemBackgroundTemplate : public ::vl::presentation::templates::GuiSelectableButtonTemplate, public ::darkskin::ItemBackgroundTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ItemBackgroundTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf99_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ItemBackgroundTemplate(); + ~ItemBackgroundTemplate(); + }; + + class LabelTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf144_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf145_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf146_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::LabelTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_0; + void __vwsn_darkskin_LabelTemplate_Initialize(::darkskin::LabelTemplate* __vwsn_this_); + public: + LabelTemplateConstructor(); + }; + + class LabelTemplate : public ::vl::presentation::templates::GuiLabelTemplate, public ::darkskin::LabelTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::LabelTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf144_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf145_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf146_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + LabelTemplate(); + ~LabelTemplate(); + }; + + class LeftScrollButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf269_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf270_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::LeftScrollButtonTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_2; + void __vwsn_darkskin_LeftScrollButtonTemplate_Initialize(::darkskin::LeftScrollButtonTemplate* __vwsn_this_); + public: + LeftScrollButtonTemplateConstructor(); + }; + + class LeftScrollButtonTemplate : public ::vl::presentation::templates::GuiButtonTemplate, public ::darkskin::LeftScrollButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::LeftScrollButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf269_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf270_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + LeftScrollButtonTemplate(); + ~LeftScrollButtonTemplate(); + }; + + class ListViewColumnHeaderTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf100_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf101_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf102_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf103_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf104_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf105_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf106_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf107_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf108_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf109_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf110_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf111_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf112_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf113_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::ListViewColumnHeaderTemplate* self; + ::vl::presentation::controls::GuiSelectableButton* buttonArrow; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_4; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_5; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_7; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_8; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_10; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_11; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_12; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_13; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_14; + void __vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize(::darkskin::ListViewColumnHeaderTemplate* __vwsn_this_); + public: + ListViewColumnHeaderTemplateConstructor(); + }; + + class ListViewColumnHeaderTemplate : public ::vl::presentation::templates::GuiListViewColumnHeaderTemplate, public ::darkskin::ListViewColumnHeaderTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ListViewColumnHeaderTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf100_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf101_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf102_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf103_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf104_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf105_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf106_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf107_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf108_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf109_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf110_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf111_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf112_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf113_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ListViewColumnHeaderTemplate(); + ~ListViewColumnHeaderTemplate(); + }; + + class ListViewTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf114_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf115_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf116_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf117_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf118_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::ListViewTemplate* self; + ::vl::presentation::templates::GuiCommonScrollViewLook* look; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + void __vwsn_darkskin_ListViewTemplate_Initialize(::darkskin::ListViewTemplate* __vwsn_this_); + public: + ListViewTemplateConstructor(); + }; + + class ListViewTemplate : public ::vl::presentation::templates::GuiListViewTemplate, public ::darkskin::ListViewTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ListViewTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf114_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf115_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf116_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf117_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf118_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ListViewTemplate(); + ~ListViewTemplate(); + }; + + class MenuBarButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf311_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf312_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf313_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf314_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf315_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::MenuBarButtonTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_2; + void __vwsn_darkskin_MenuBarButtonTemplate_Initialize(::darkskin::MenuBarButtonTemplate* __vwsn_this_); + public: + MenuBarButtonTemplateConstructor(); + }; + + class MenuBarButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::MenuBarButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::MenuBarButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf311_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf312_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf313_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf314_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf315_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + MenuBarButtonTemplate(); + ~MenuBarButtonTemplate(); + }; + + class MenuItemButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf316_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf317_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf318_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf319_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf320_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf321_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf322_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf323_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf324_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf325_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf326_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf327_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf328_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf329_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::MenuItemButtonTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_1; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::presentation::compositions::GuiSharedSizeItemComposition* __vwsn_precompile_5; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_6; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_7; + ::vl::presentation::compositions::GuiSharedSizeItemComposition* __vwsn_precompile_8; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_9; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_11; + void __vwsn_darkskin_MenuItemButtonTemplate_Initialize(::darkskin::MenuItemButtonTemplate* __vwsn_this_); + public: + MenuItemButtonTemplateConstructor(); + }; + + class MenuItemButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::MenuItemButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::MenuItemButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf316_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf317_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf318_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf319_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf320_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf321_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf322_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf323_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf324_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf325_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf326_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf327_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf328_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf329_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + MenuItemButtonTemplate(); + ~MenuItemButtonTemplate(); + }; + + class MenuSplitterTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::MenuSplitterTemplate* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + void __vwsn_darkskin_MenuSplitterTemplate_Initialize(::darkskin::MenuSplitterTemplate* __vwsn_this_); + public: + MenuSplitterTemplateConstructor(); + }; + + class MenuSplitterTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::darkskin::MenuSplitterTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::MenuSplitterTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + MenuSplitterTemplate(); + ~MenuSplitterTemplate(); + }; + + class MultilineTextBoxTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf307_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf308_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf309_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::MultilineTextBoxTemplate* self; + ::vl::presentation::templates::GuiCommonScrollViewLook* look; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + void __vwsn_darkskin_MultilineTextBoxTemplate_Initialize(::darkskin::MultilineTextBoxTemplate* __vwsn_this_); + public: + MultilineTextBoxTemplateConstructor(); + }; + + class MultilineTextBoxTemplate : public ::vl::presentation::templates::GuiMultilineTextBoxTemplate, public ::darkskin::MultilineTextBoxTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::MultilineTextBoxTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf307_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf308_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf309_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + MultilineTextBoxTemplate(); + ~MultilineTextBoxTemplate(); + }; + + class ProgressBarTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf271_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::ProgressBarTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiPartialViewComposition* __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_4; + void __vwsn_darkskin_ProgressBarTemplate_Initialize(::darkskin::ProgressBarTemplate* __vwsn_this_); + public: + ProgressBarTemplateConstructor(); + }; + + class ProgressBarTemplate : public ::vl::presentation::templates::GuiScrollTemplate, public ::darkskin::ProgressBarTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ProgressBarTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf271_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ProgressBarTemplate(); + ~ProgressBarTemplate(); + }; + + class RadioButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf70_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf71_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf72_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf73_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf74_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf75_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf76_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf77_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::RadioButtonTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_5; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_7; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_8; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_10; + ::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement> __vwsn_precompile_11; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_12; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_13; + void __vwsn_darkskin_RadioButtonTemplate_Initialize(::darkskin::RadioButtonTemplate* __vwsn_this_); + public: + RadioButtonTemplateConstructor(); + }; + + class RadioButtonTemplate : public ::vl::presentation::templates::GuiSelectableButtonTemplate, public ::darkskin::RadioButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RadioButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf70_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf71_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf72_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf73_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf74_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf75_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf76_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf77_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RadioButtonTemplate(); + ~RadioButtonTemplate(); + }; + + class RibbonButtonsTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::RibbonButtonsTemplate* __vwsn_precompile_0; + void __vwsn_darkskin_RibbonButtonsTemplate_Initialize(::darkskin::RibbonButtonsTemplate* __vwsn_this_); + public: + RibbonButtonsTemplateConstructor(); + }; + + class RibbonButtonsTemplate : public ::vl::presentation::templates::GuiRibbonButtonsTemplate, public ::darkskin::RibbonButtonsTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonButtonsTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonButtonsTemplate(); + ~RibbonButtonsTemplate(); + }; + + class RibbonGalleryDropdownButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf156_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf157_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf158_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::RibbonGalleryDropdownButtonTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_4; + void __vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize(::darkskin::RibbonGalleryDropdownButtonTemplate* __vwsn_this_); + public: + RibbonGalleryDropdownButtonTemplateConstructor(); + }; + + class RibbonGalleryDropdownButtonTemplate : public ::vl::presentation::templates::GuiButtonTemplate, public ::darkskin::RibbonGalleryDropdownButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonGalleryDropdownButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf156_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf157_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf158_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonGalleryDropdownButtonTemplate(); + ~RibbonGalleryDropdownButtonTemplate(); + }; + + class RibbonGalleryItemListTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf159_DarkSkin_darkskin_RibbonGalleryItemListTemplateConstructor___vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::RibbonGalleryItemListTemplate* self; + void __vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize(::darkskin::RibbonGalleryItemListTemplate* __vwsn_this_); + public: + RibbonGalleryItemListTemplateConstructor(); + }; + + class RibbonGalleryItemListTemplate : public ::vl::presentation::templates::GuiTextListTemplate, public ::darkskin::RibbonGalleryItemListTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonGalleryItemListTemplateConstructor; + friend struct ::vl_workflow_global::__vwsnf159_DarkSkin_darkskin_RibbonGalleryItemListTemplateConstructor___vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonGalleryItemListTemplate(); + ~RibbonGalleryItemListTemplate(); + }; + + class RibbonGalleryTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf160_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf161_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf162_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf163_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf164_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf165_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf166_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf167_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf168_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf169_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf170_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf171_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf172_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf173_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::RibbonGalleryTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_5; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_7; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_8; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_11; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_12; + void __vwsn_darkskin_RibbonGalleryTemplate_Initialize(::darkskin::RibbonGalleryTemplate* __vwsn_this_); + public: + RibbonGalleryTemplateConstructor(); + }; + + class RibbonGalleryTemplate : public ::vl::presentation::templates::GuiRibbonGalleryListTemplate, public ::darkskin::RibbonGalleryTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonGalleryTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf160_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf161_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf162_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf163_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf164_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf165_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf166_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf167_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf168_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf169_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf170_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf171_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf172_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf173_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonGalleryTemplate(); + ~RibbonGalleryTemplate(); + }; + + class RibbonGroupExpandButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf174_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf175_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::RibbonGroupExpandButtonTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_1; + void __vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize(::darkskin::RibbonGroupExpandButtonTemplate* __vwsn_this_); + public: + RibbonGroupExpandButtonTemplateConstructor(); + }; + + class RibbonGroupExpandButtonTemplate : public ::vl::presentation::templates::GuiButtonTemplate, public ::darkskin::RibbonGroupExpandButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonGroupExpandButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf174_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf175_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonGroupExpandButtonTemplate(); + ~RibbonGroupExpandButtonTemplate(); + }; + + class RibbonGroupMenuTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::RibbonGroupMenuTemplate* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + void __vwsn_darkskin_RibbonGroupMenuTemplate_Initialize(::darkskin::RibbonGroupMenuTemplate* __vwsn_this_); + public: + RibbonGroupMenuTemplateConstructor(); + }; + + class RibbonGroupMenuTemplate : public ::vl::presentation::templates::GuiMenuTemplate, public ::darkskin::RibbonGroupMenuTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonGroupMenuTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonGroupMenuTemplate(); + ~RibbonGroupMenuTemplate(); + }; + + class RibbonGroupTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf176_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf177_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf178_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf179_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf180_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf181_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf182_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::RibbonGroupTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* table; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_2; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_3; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_5; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_7; + void __vwsn_darkskin_RibbonGroupTemplate_Initialize(::darkskin::RibbonGroupTemplate* __vwsn_this_); + public: + RibbonGroupTemplateConstructor(); + }; + + class RibbonGroupTemplate : public ::vl::presentation::templates::GuiRibbonGroupTemplate, public ::darkskin::RibbonGroupTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonGroupTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf176_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf177_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf178_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf179_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf180_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf181_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf182_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonGroupTemplate(); + ~RibbonGroupTemplate(); + }; + + class RibbonIconLabelTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf183_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf184_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf185_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiCellComposition* container; + ::darkskin::RibbonIconLabelTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_2; + void __vwsn_darkskin_RibbonIconLabelTemplate_Initialize(::darkskin::RibbonIconLabelTemplate* __vwsn_this_); + public: + RibbonIconLabelTemplateConstructor(); + }; + + class RibbonIconLabelTemplate : public ::vl::presentation::templates::GuiRibbonIconLabelTemplate, public ::darkskin::RibbonIconLabelTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonIconLabelTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf183_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf184_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf185_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonIconLabelTemplate(); + ~RibbonIconLabelTemplate(); + }; + + class RibbonLargeButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf186_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf187_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf188_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf189_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf190_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf191_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf192_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf193_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf194_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::RibbonLargeButtonTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_5; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_7; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_8; + void __vwsn_darkskin_RibbonLargeButtonTemplate_Initialize(::darkskin::RibbonLargeButtonTemplate* __vwsn_this_); + public: + RibbonLargeButtonTemplateConstructor(); + }; + + class RibbonLargeButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::RibbonLargeButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonLargeButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf186_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf187_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf188_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf189_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf190_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf191_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf192_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf193_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf194_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonLargeButtonTemplate(); + ~RibbonLargeButtonTemplate(); + }; + + class RibbonLargeDropdownButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf195_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf196_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf197_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf198_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf199_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf200_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf201_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf202_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf203_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf204_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf205_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::RibbonLargeDropdownButtonTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_5; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_7; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_8; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_10; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_11; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_12; + void __vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize(::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_this_); + public: + RibbonLargeDropdownButtonTemplateConstructor(); + }; + + class RibbonLargeDropdownButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::RibbonLargeDropdownButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonLargeDropdownButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf195_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf196_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf197_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf198_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf199_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf200_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf201_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf202_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf203_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf204_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf205_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonLargeDropdownButtonTemplate(); + ~RibbonLargeDropdownButtonTemplate(); + }; + + class RibbonLargeSplitButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf206_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf207_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf208_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf209_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf210_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf211_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf212_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf213_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf214_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf215_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::RibbonLargeSplitButtonTemplate* self; + ::vl::presentation::controls::GuiSelectableButton* buttonArrow; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_2; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_5; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_7; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_8; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9; + void __vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize(::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_this_); + public: + RibbonLargeSplitButtonTemplateConstructor(); + }; + + class RibbonLargeSplitButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::RibbonLargeSplitButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonLargeSplitButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf206_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf207_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf208_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf209_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf210_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf211_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf212_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf213_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf214_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf215_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonLargeSplitButtonTemplate(); + ~RibbonLargeSplitButtonTemplate(); + }; + + class RibbonSmallButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf216_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf217_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf218_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf219_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf220_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf221_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf222_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf223_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf224_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiTableComposition* container; + ::darkskin::RibbonSmallButtonTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_5; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_7; + void __vwsn_darkskin_RibbonSmallButtonTemplate_Initialize(::darkskin::RibbonSmallButtonTemplate* __vwsn_this_); + public: + RibbonSmallButtonTemplateConstructor(); + }; + + class RibbonSmallButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::RibbonSmallButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonSmallButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf216_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf217_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf218_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf219_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf220_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf221_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf222_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf223_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf224_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonSmallButtonTemplate(); + ~RibbonSmallButtonTemplate(); + }; + + class RibbonSmallDropdownButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf225_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf226_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf227_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf228_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf229_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf230_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf231_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf232_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf233_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf234_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf235_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf236_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiTableComposition* container; + ::darkskin::RibbonSmallDropdownButtonTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_5; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_7; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_8; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_9; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_11; + void __vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize(::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_this_); + public: + RibbonSmallDropdownButtonTemplateConstructor(); + }; + + class RibbonSmallDropdownButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::RibbonSmallDropdownButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonSmallDropdownButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf225_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf226_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf227_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf228_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf229_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf230_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf231_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf232_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf233_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf234_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf235_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf236_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonSmallDropdownButtonTemplate(); + ~RibbonSmallDropdownButtonTemplate(); + }; + + class RibbonSmallIconLabelTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf237_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf238_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf239_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf240_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf241_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf242_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiCellComposition* container; + ::darkskin::RibbonSmallIconLabelTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3; + ::vl::presentation::compositions::GuiSharedSizeItemComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_5; + void __vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize(::darkskin::RibbonSmallIconLabelTemplate* __vwsn_this_); + public: + RibbonSmallIconLabelTemplateConstructor(); + }; + + class RibbonSmallIconLabelTemplate : public ::vl::presentation::templates::GuiRibbonIconLabelTemplate, public ::darkskin::RibbonSmallIconLabelTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonSmallIconLabelTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf237_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf238_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf239_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf240_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf241_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf242_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonSmallIconLabelTemplate(); + ~RibbonSmallIconLabelTemplate(); + }; + + class RibbonSmallSplitButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf243_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf244_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf245_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf246_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf247_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf248_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf249_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf250_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf251_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf252_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf253_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf254_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiTableComposition* container; + ::darkskin::RibbonSmallSplitButtonTemplate* self; + ::vl::presentation::controls::GuiSelectableButton* buttonArrow; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_5; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_7; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_8; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_10; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_11; + void __vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize(::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_this_); + public: + RibbonSmallSplitButtonTemplateConstructor(); + }; + + class RibbonSmallSplitButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::RibbonSmallSplitButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonSmallSplitButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf243_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf244_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf245_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf246_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf247_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf248_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf249_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf250_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf251_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf252_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf253_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf254_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonSmallSplitButtonTemplate(); + ~RibbonSmallSplitButtonTemplate(); + }; + + class RibbonSplitArrowTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf150_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf151_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf152_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf153_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf154_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf155_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::RibbonSplitArrowTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_2; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_4; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_5; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_6; + void __vwsn_darkskin_RibbonSplitArrowTemplate_Initialize(::darkskin::RibbonSplitArrowTemplate* __vwsn_this_); + public: + RibbonSplitArrowTemplateConstructor(); + }; + + class RibbonSplitArrowTemplate : public ::vl::presentation::templates::GuiSelectableButtonTemplate, public ::darkskin::RibbonSplitArrowTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonSplitArrowTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf150_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf151_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf152_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf153_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf154_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf155_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonSplitArrowTemplate(); + ~RibbonSplitArrowTemplate(); + }; + + class RibbonToolstripHeaderTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf255_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf256_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::RibbonToolstripHeaderTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_1; + void __vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize(::darkskin::RibbonToolstripHeaderTemplate* __vwsn_this_); + public: + RibbonToolstripHeaderTemplateConstructor(); + }; + + class RibbonToolstripHeaderTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::darkskin::RibbonToolstripHeaderTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonToolstripHeaderTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf255_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf256_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonToolstripHeaderTemplate(); + ~RibbonToolstripHeaderTemplate(); + }; + + class RibbonToolstripMenuTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiCellComposition* container; + ::vl::presentation::compositions::GuiCellComposition* content; + ::darkskin::RibbonToolstripMenuTemplate* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_3; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_4; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_5; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_7; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_8; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_9; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_11; + void __vwsn_darkskin_RibbonToolstripMenuTemplate_Initialize(::darkskin::RibbonToolstripMenuTemplate* __vwsn_this_); + public: + RibbonToolstripMenuTemplateConstructor(); + }; + + class RibbonToolstripMenuTemplate : public ::vl::presentation::templates::GuiRibbonToolstripMenuTemplate, public ::darkskin::RibbonToolstripMenuTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonToolstripMenuTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonToolstripMenuTemplate(); + ~RibbonToolstripMenuTemplate(); + }; + + class RibbonToolstripsTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::RibbonToolstripsTemplate* __vwsn_precompile_0; + void __vwsn_darkskin_RibbonToolstripsTemplate_Initialize(::darkskin::RibbonToolstripsTemplate* __vwsn_this_); + public: + RibbonToolstripsTemplateConstructor(); + }; + + class RibbonToolstripsTemplate : public ::vl::presentation::templates::GuiRibbonToolstripsTemplate, public ::darkskin::RibbonToolstripsTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RibbonToolstripsTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RibbonToolstripsTemplate(); + ~RibbonToolstripsTemplate(); + }; + + class RightScrollButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf272_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf273_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::RightScrollButtonTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_2; + void __vwsn_darkskin_RightScrollButtonTemplate_Initialize(::darkskin::RightScrollButtonTemplate* __vwsn_this_); + public: + RightScrollButtonTemplateConstructor(); + }; + + class RightScrollButtonTemplate : public ::vl::presentation::templates::GuiButtonTemplate, public ::darkskin::RightScrollButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::RightScrollButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf272_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf273_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RightScrollButtonTemplate(); + ~RightScrollButtonTemplate(); + }; + + class ScrollViewTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf274_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf275_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::ScrollViewTemplate* self; + ::vl::presentation::templates::GuiCommonScrollViewLook* look; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + void __vwsn_darkskin_ScrollViewTemplate_Initialize(::darkskin::ScrollViewTemplate* __vwsn_this_); + public: + ScrollViewTemplateConstructor(); + }; + + class ScrollViewTemplate : public ::vl::presentation::templates::GuiScrollViewTemplate, public ::darkskin::ScrollViewTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ScrollViewTemplateConstructor; + friend struct ::vl_workflow_global::__vwsnf274_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf275_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ScrollViewTemplate(); + ~ScrollViewTemplate(); + }; + + class ShortcutKeyTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf147_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf148_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf149_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::ShortcutKeyTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_4; + void __vwsn_darkskin_ShortcutKeyTemplate_Initialize(::darkskin::ShortcutKeyTemplate* __vwsn_this_); + public: + ShortcutKeyTemplateConstructor(); + }; + + class ShortcutKeyTemplate : public ::vl::presentation::templates::GuiLabelTemplate, public ::darkskin::ShortcutKeyTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ShortcutKeyTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf147_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf148_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf149_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ShortcutKeyTemplate(); + ~ShortcutKeyTemplate(); + }; + + class SinglelineTextBoxTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf310_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::SinglelineTextBoxTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + void __vwsn_darkskin_SinglelineTextBoxTemplate_Initialize(::darkskin::SinglelineTextBoxTemplate* __vwsn_this_); + public: + SinglelineTextBoxTemplateConstructor(); + }; + + class SinglelineTextBoxTemplate : public ::vl::presentation::templates::GuiSinglelineTextBoxTemplate, public ::darkskin::SinglelineTextBoxTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::SinglelineTextBoxTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf310_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + SinglelineTextBoxTemplate(); + ~SinglelineTextBoxTemplate(); + }; + + class TabHeaderButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf288_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf289_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf290_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf291_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf292_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf293_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf294_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::TabHeaderButtonTemplate* self; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiFocusRectangleElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_4; + void __vwsn_darkskin_TabHeaderButtonTemplate_Initialize(::darkskin::TabHeaderButtonTemplate* __vwsn_this_); + public: + TabHeaderButtonTemplateConstructor(); + }; + + class TabHeaderButtonTemplate : public ::vl::presentation::templates::GuiSelectableButtonTemplate, public ::darkskin::TabHeaderButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::TabHeaderButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf288_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf289_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf290_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf291_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf292_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf293_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf294_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + bool __vwsn_prop_Highlighted; + bool GetHighlighted(); + void SetHighlighted(bool __vwsn_value_); + ::vl::Event HighlightedChanged; + bool __vwsn_prop_TabFocused; + bool GetTabFocused(); + void SetTabFocused(bool __vwsn_value_); + ::vl::Event TabFocusedChanged; + TabHeaderButtonTemplate(); + ~TabHeaderButtonTemplate(); + }; + + class TabHeaderTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf295_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf296_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf297_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf298_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf299_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::TabHeaderTemplate* self; + ::vl::presentation::controls::GuiTabPage* CurrentTabPage; + ::vl::presentation::controls::GuiSelectableButton* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + void __vwsn_darkskin_TabHeaderTemplate_Initialize(::darkskin::TabHeaderTemplate* __vwsn_this_); + public: + TabHeaderTemplateConstructor(); + }; + + class TabHeaderTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::darkskin::TabHeaderTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::TabHeaderTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf295_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf296_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf297_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf298_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf299_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ::vl::presentation::controls::ITabCommandExecutor* __vwsn_prop_Commands; + ::vl::presentation::controls::ITabCommandExecutor* GetCommands(); + void SetCommands(::vl::presentation::controls::ITabCommandExecutor* __vwsn_value_); + ::vl::Event CommandsChanged; + ::vl::presentation::controls::GuiTabPage* __vwsn_parameter_CurrentTabPage; + ::vl::presentation::controls::GuiTabPage* GetCurrentTabPage(); + TabHeaderTemplate(::vl::presentation::controls::GuiTabPage* __vwsn_ctor_parameter_CurrentTabPage); + ~TabHeaderTemplate(); + }; + + class TabTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf300_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf301_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf302_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf303_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf304_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf305_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf306_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::TabTemplate* self; + ::vl::presentation::compositions::GuiCellComposition* beforeHeadersContainer; + ::vl::presentation::compositions::GuiCellComposition* afterHeadersContainer; + ::vl::presentation::compositions::GuiRepeatFlowComposition* header; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_2; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_4; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_5; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_6; + void __vwsn_darkskin_TabTemplate_Initialize(::darkskin::TabTemplate* __vwsn_this_); + public: + TabTemplateConstructor(); + }; + + class TabTemplate : public ::vl::presentation::templates::GuiRibbonTabTemplate, public ::darkskin::TabTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::TabTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf300_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf301_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf302_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf303_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf304_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf305_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf306_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + bool __vwsn_prop_Highlighted; + bool GetHighlighted(); + void SetHighlighted(bool __vwsn_value_); + ::vl::Event HighlightedChanged; + void UpdateTabHeader(); + TabTemplate(); + ~TabTemplate(); + }; + + class TextListTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf119_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf120_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf121_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf122_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf123_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf124_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::TextListTemplate* self; + ::vl::presentation::templates::GuiCommonScrollViewLook* look; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + void __vwsn_darkskin_TextListTemplate_Initialize(::darkskin::TextListTemplate* __vwsn_this_); + public: + TextListTemplateConstructor(); + }; + + class TextListTemplate : public ::vl::presentation::templates::GuiTextListTemplate, public ::darkskin::TextListTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::TextListTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf119_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf120_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf121_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf122_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf123_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf124_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + TextListTemplate(); + ~TextListTemplate(); + }; + + class ThemeConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf10_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf11_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf12_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf13_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf14_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf15_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf16_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf17_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf18_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf19_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf1_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf20_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf21_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf22_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf23_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf24_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf25_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf26_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf27_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf28_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf29_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf2_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf30_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf31_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf32_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf33_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf34_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf35_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf36_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf37_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf38_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf39_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf3_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf40_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf41_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf42_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf43_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf44_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf45_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf46_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf47_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf48_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf49_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf4_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf50_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf51_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf52_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf53_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf54_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf55_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf5_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf6_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf7_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf8_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf9_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::Theme* __vwsn_precompile_0; + void __vwsn_darkskin_Theme_Initialize(::darkskin::Theme* __vwsn_this_); + public: + ThemeConstructor(); + }; + + class Theme : public ::vl::presentation::theme::ThemeTemplates, public ::darkskin::ThemeConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ThemeConstructor; + friend struct ::vl_workflow_global::__vwsnf10_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf11_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf12_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf13_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf14_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf15_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf16_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf17_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf18_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf19_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf1_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf20_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf21_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf22_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf23_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf24_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf25_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf26_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf27_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf28_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf29_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf2_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf30_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf31_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf32_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf33_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf34_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf35_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf36_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf37_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf38_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf39_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf3_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf40_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf41_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf42_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf43_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf44_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf45_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf46_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf47_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf48_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf49_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf4_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf50_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf51_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf52_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf53_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf54_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf55_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf5_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf6_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf7_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf8_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; + friend struct ::vl_workflow_global::__vwsnf9_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + Theme(); + ~Theme(); + }; + + class ToolstripButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf333_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf334_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf335_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf336_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf337_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf338_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::ToolstripButtonTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_4; + void __vwsn_darkskin_ToolstripButtonTemplate_Initialize(::darkskin::ToolstripButtonTemplate* __vwsn_this_); + public: + ToolstripButtonTemplateConstructor(); + }; + + class ToolstripButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::ToolstripButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ToolstripButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf333_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf334_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf335_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf336_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf337_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf338_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ToolstripButtonTemplate(); + ~ToolstripButtonTemplate(); + }; + + class ToolstripDropdownButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf339_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf340_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf341_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf342_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf343_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf344_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf345_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf346_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf347_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::ToolstripDropdownButtonTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_4; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_5; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_6; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_7; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_8; + void __vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize(::darkskin::ToolstripDropdownButtonTemplate* __vwsn_this_); + public: + ToolstripDropdownButtonTemplateConstructor(); + }; + + class ToolstripDropdownButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::ToolstripDropdownButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ToolstripDropdownButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf339_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf340_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf341_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf342_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf343_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf344_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf345_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf346_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf347_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ToolstripDropdownButtonTemplate(); + ~ToolstripDropdownButtonTemplate(); + }; + + class ToolstripMenuTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::ToolstripMenuTemplate* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + void __vwsn_darkskin_ToolstripMenuTemplate_Initialize(::darkskin::ToolstripMenuTemplate* __vwsn_this_); + public: + ToolstripMenuTemplateConstructor(); + }; + + class ToolstripMenuTemplate : public ::vl::presentation::templates::GuiMenuTemplate, public ::darkskin::ToolstripMenuTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ToolstripMenuTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ToolstripMenuTemplate(); + ~ToolstripMenuTemplate(); + }; + + class ToolstripSplitArrowTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf330_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf331_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf332_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::ToolstripSplitArrowTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_3; + void __vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize(::darkskin::ToolstripSplitArrowTemplate* __vwsn_this_); + public: + ToolstripSplitArrowTemplateConstructor(); + }; + + class ToolstripSplitArrowTemplate : public ::vl::presentation::templates::GuiSelectableButtonTemplate, public ::darkskin::ToolstripSplitArrowTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ToolstripSplitArrowTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf330_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf331_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf332_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ToolstripSplitArrowTemplate(); + ~ToolstripSplitArrowTemplate(); + }; + + class ToolstripSplitButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf348_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf349_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf350_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf351_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf352_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf353_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf354_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf355_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf356_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::ToolstripSplitButtonTemplate* self; + ::vl::presentation::controls::GuiSelectableButton* buttonArrow; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_4; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_5; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_7; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_8; + void __vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize(::darkskin::ToolstripSplitButtonTemplate* __vwsn_this_); + public: + ToolstripSplitButtonTemplateConstructor(); + }; + + class ToolstripSplitButtonTemplate : public ::vl::presentation::templates::GuiToolstripButtonTemplate, public ::darkskin::ToolstripSplitButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ToolstripSplitButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf348_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf349_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf350_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf351_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf352_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf353_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf354_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf355_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf356_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ToolstripSplitButtonTemplate(); + ~ToolstripSplitButtonTemplate(); + }; + + class ToolstripSplitterTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::ToolstripSplitterTemplate* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::Gui3DSplitterElement> __vwsn_precompile_3; + void __vwsn_darkskin_ToolstripSplitterTemplate_Initialize(::darkskin::ToolstripSplitterTemplate* __vwsn_this_); + public: + ToolstripSplitterTemplateConstructor(); + }; + + class ToolstripSplitterTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::darkskin::ToolstripSplitterTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ToolstripSplitterTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ToolstripSplitterTemplate(); + ~ToolstripSplitterTemplate(); + }; + + class ToolstripTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::ToolstripTemplate* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + void __vwsn_darkskin_ToolstripTemplate_Initialize(::darkskin::ToolstripTemplate* __vwsn_this_); + public: + ToolstripTemplateConstructor(); + }; + + class ToolstripTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::darkskin::ToolstripTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::ToolstripTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ToolstripTemplate(); + ~ToolstripTemplate(); + }; + + class TooltipTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::TooltipTemplate* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_3; + void __vwsn_darkskin_TooltipTemplate_Initialize(::darkskin::TooltipTemplate* __vwsn_this_); + public: + TooltipTemplateConstructor(); + }; + + class TooltipTemplate : public ::vl::presentation::templates::GuiWindowTemplate, public ::darkskin::TooltipTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::TooltipTemplateConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + TooltipTemplate(); + ~TooltipTemplate(); + }; + + class TopScrollButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf276_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf277_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::TopScrollButtonTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiPolygonElement> __vwsn_precompile_2; + void __vwsn_darkskin_TopScrollButtonTemplate_Initialize(::darkskin::TopScrollButtonTemplate* __vwsn_this_); + public: + TopScrollButtonTemplateConstructor(); + }; + + class TopScrollButtonTemplate : public ::vl::presentation::templates::GuiButtonTemplate, public ::darkskin::TopScrollButtonTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::TopScrollButtonTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf276_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf277_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + TopScrollButtonTemplate(); + ~TopScrollButtonTemplate(); + }; + + class TreeViewTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf125_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf126_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf127_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf128_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf129_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::TreeViewTemplate* self; + ::vl::presentation::templates::GuiCommonScrollViewLook* look; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + void __vwsn_darkskin_TreeViewTemplate_Initialize(::darkskin::TreeViewTemplate* __vwsn_this_); + public: + TreeViewTemplateConstructor(); + }; + + class TreeViewTemplate : public ::vl::presentation::templates::GuiTreeViewTemplate, public ::darkskin::TreeViewTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::TreeViewTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf125_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf126_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf127_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf128_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf129_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + TreeViewTemplate(); + ~TreeViewTemplate(); + }; + + class VScrollHandleTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf278_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::VScrollHandleTemplate* self; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_0; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1; + void __vwsn_darkskin_VScrollHandleTemplate_Initialize(::darkskin::VScrollHandleTemplate* __vwsn_this_); + public: + VScrollHandleTemplateConstructor(); + }; + + class VScrollHandleTemplate : public ::vl::presentation::templates::GuiButtonTemplate, public ::darkskin::VScrollHandleTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::VScrollHandleTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf278_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + VScrollHandleTemplate(); + ~VScrollHandleTemplate(); + }; + + class VScrollTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf279_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf280_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf281_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf282_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf283_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf284_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::VScrollTemplate* self; + ::vl::presentation::templates::GuiCommonScrollBehavior* behavior; + ::vl::presentation::controls::GuiButton* buttonDecrease; + ::vl::presentation::controls::GuiButton* buttonIncrease; + ::vl::presentation::compositions::GuiBoundsComposition* handleContainer; + ::vl::presentation::compositions::GuiPartialViewComposition* handle; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiSideAlignedComposition* __vwsn_precompile_3; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_4; + ::vl::presentation::compositions::GuiSideAlignedComposition* __vwsn_precompile_5; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_6; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_7; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_8; + void __vwsn_darkskin_VScrollTemplate_Initialize(::darkskin::VScrollTemplate* __vwsn_this_); + public: + VScrollTemplateConstructor(); + }; + + class VScrollTemplate : public ::vl::presentation::templates::GuiScrollTemplate, public ::darkskin::VScrollTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::VScrollTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf279_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf280_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf281_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf282_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf283_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf284_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + VScrollTemplate(); + void __vwsn_instance_ctor_(); + ~VScrollTemplate(); + }; + + class VTrackerTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf285_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf286_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf287_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::darkskin::VTrackerTemplate* self; + ::vl::presentation::templates::GuiCommonScrollBehavior* behavior; + ::vl::presentation::compositions::GuiPartialViewComposition* handle; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_5; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_7; + void __vwsn_darkskin_VTrackerTemplate_Initialize(::darkskin::VTrackerTemplate* __vwsn_this_); + public: + VTrackerTemplateConstructor(); + }; + + class VTrackerTemplate : public ::vl::presentation::templates::GuiScrollTemplate, public ::darkskin::VTrackerTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::VTrackerTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf285_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf286_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf287_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + VTrackerTemplate(); + void __vwsn_instance_ctor_(); + ~VTrackerTemplate(); + }; + + class WindowTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf357_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf358_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf359_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf360_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf361_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf362_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf363_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf364_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf365_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf366_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf367_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf368_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf369_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf370_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf371_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf372_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf373_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf374_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf375_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf376_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::compositions::GuiBoundsComposition* container; + ::darkskin::WindowTemplate* self; + ::vl::presentation::compositions::GuiTableComposition* frameTable; + ::vl::presentation::compositions::GuiTableComposition* contentTable; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::vl::Ptr<::vl::presentation::elements::GuiSolidBorderElement> __vwsn_precompile_2; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_5; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_7; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_8; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_9; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_11; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_12; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_13; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_14; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_15; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_16; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_17; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_18; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_19; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_20; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_21; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_22; + ::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_23; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_24; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_25; + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_26; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_27; + void __vwsn_darkskin_WindowTemplate_Initialize(::darkskin::WindowTemplate* __vwsn_this_); + public: + WindowTemplateConstructor(); + }; + + class WindowTemplate : public ::vl::presentation::templates::GuiWindowTemplate, public ::darkskin::WindowTemplateConstructor, public ::vl::reflection::Description + { + friend class ::darkskin::WindowTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf357_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf358_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf359_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf360_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf361_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf362_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf363_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf364_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf365_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf366_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf367_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf368_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf369_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf370_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf371_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf372_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf373_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf374_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf375_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf376_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + WindowTemplate(); + ~WindowTemplate(); + }; + +} +/*********************************************************************** +Global Variables and Functions +***********************************************************************/ + +namespace vl_workflow_global +{ + class DarkSkin + { + public: + + static DarkSkin& Instance(); + }; + +/*********************************************************************** +Closures +***********************************************************************/ + + struct __vwsnf100_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf100_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf101_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf101_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf102_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf102_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf103_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf103_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf104_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf104_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf105_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf105_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf106_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf106_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf107_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf107_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf108_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf108_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf109_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf109_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf10_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf10_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf110_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf110_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf111_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf111_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf112_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf112_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf113_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_ + { + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf113_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize_(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf114_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_ + { + ::darkskin::ListViewTemplateConstructor* __vwsnthis_0; + + __vwsnf114_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiListViewColumnHeaderTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf115_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_ + { + ::darkskin::ListViewTemplateConstructor* __vwsnthis_0; + + __vwsnf115_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf116_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_ + { + ::darkskin::ListViewTemplateConstructor* __vwsnthis_0; + + __vwsnf116_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf117_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_ + { + ::darkskin::ListViewTemplateConstructor* __vwsnthis_0; + + __vwsnf117_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf118_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_ + { + ::darkskin::ListViewTemplateConstructor* __vwsnthis_0; + + __vwsnf118_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf119_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_ + { + ::darkskin::TextListTemplateConstructor* __vwsnthis_0; + + __vwsnf119_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf11_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf11_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiRibbonGroupTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf120_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_ + { + ::darkskin::TextListTemplateConstructor* __vwsnthis_0; + + __vwsnf120_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf121_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_ + { + ::darkskin::TextListTemplateConstructor* __vwsnthis_0; + + __vwsnf121_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf122_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_ + { + ::darkskin::TextListTemplateConstructor* __vwsnthis_0; + + __vwsnf122_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf123_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_ + { + ::darkskin::TextListTemplateConstructor* __vwsnthis_0; + + __vwsnf123_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf124_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_ + { + ::darkskin::TextListTemplateConstructor* __vwsnthis_0; + + __vwsnf124_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf125_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_ + { + ::darkskin::TreeViewTemplateConstructor* __vwsnthis_0; + + __vwsnf125_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf126_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_ + { + ::darkskin::TreeViewTemplateConstructor* __vwsnthis_0; + + __vwsnf126_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf127_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_ + { + ::darkskin::TreeViewTemplateConstructor* __vwsnthis_0; + + __vwsnf127_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf128_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_ + { + ::darkskin::TreeViewTemplateConstructor* __vwsnthis_0; + + __vwsnf128_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf129_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_ + { + ::darkskin::TreeViewTemplateConstructor* __vwsnthis_0; + + __vwsnf129_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf12_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf12_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf130_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_ + { + ::darkskin::DateButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf130_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_(::darkskin::DateButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf131_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_ + { + ::darkskin::DateButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf131_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize_(::darkskin::DateButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf132_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_ + { + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnf132_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiTextListTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf133_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_ + { + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnf133_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf134_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_ + { + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnf134_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiComboBoxTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf135_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_ + { + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnf135_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf136_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_ + { + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnf136_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf137_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_ + { + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnf137_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf138_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_ + { + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnf138_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf139_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_ + { + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnf139_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf13_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf13_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf140_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_ + { + ::darkskin::GroupBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf140_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf141_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_ + { + ::darkskin::GroupBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf141_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf142_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_ + { + ::darkskin::GroupBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf142_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf143_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_ + { + ::darkskin::GroupBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf143_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize_(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf144_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_ + { + ::darkskin::LabelTemplateConstructor* __vwsnthis_0; + + __vwsnf144_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf145_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_ + { + ::darkskin::LabelTemplateConstructor* __vwsnthis_0; + + __vwsnf145_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf146_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_ + { + ::darkskin::LabelTemplateConstructor* __vwsnthis_0; + + __vwsnf146_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize_(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf147_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_ + { + ::darkskin::ShortcutKeyTemplateConstructor* __vwsnthis_0; + + __vwsnf147_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf148_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_ + { + ::darkskin::ShortcutKeyTemplateConstructor* __vwsnthis_0; + + __vwsnf148_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf149_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_ + { + ::darkskin::ShortcutKeyTemplateConstructor* __vwsnthis_0; + + __vwsnf149_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize_(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf14_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf14_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf150_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_ + { + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnf150_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf151_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_ + { + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnf151_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf152_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_ + { + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnf152_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf153_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_ + { + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnf153_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf154_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_ + { + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnf154_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf155_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_ + { + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnf155_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize_(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf156_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf156_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf157_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf157_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf158_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf158_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize_(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf159_DarkSkin_darkskin_RibbonGalleryItemListTemplateConstructor___vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize_ + { + ::darkskin::RibbonGalleryItemListTemplateConstructor* __vwsnthis_0; + + __vwsnf159_DarkSkin_darkskin_RibbonGalleryItemListTemplateConstructor___vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize_(::darkskin::RibbonGalleryItemListTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf15_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf15_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf160_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf160_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollViewTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf161_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf161_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf162_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf162_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf163_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf163_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiTextListTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf164_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf164_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiRibbonToolstripMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf165_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf165_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf166_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf166_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf167_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf167_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf168_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf168_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf169_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf169_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf16_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf16_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf170_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf170_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf171_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf171_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf172_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf172_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf173_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_ + { + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnf173_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize_(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf174_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_ + { + ::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf174_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_(::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf175_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_ + { + ::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf175_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize_(::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf176_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_ + { + ::darkskin::RibbonGroupTemplateConstructor* __vwsnthis_0; + + __vwsnf176_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf177_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_ + { + ::darkskin::RibbonGroupTemplateConstructor* __vwsnthis_0; + + __vwsnf177_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf178_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_ + { + ::darkskin::RibbonGroupTemplateConstructor* __vwsnthis_0; + + __vwsnf178_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf179_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_ + { + ::darkskin::RibbonGroupTemplateConstructor* __vwsnthis_0; + + __vwsnf179_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf17_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf17_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf180_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_ + { + ::darkskin::RibbonGroupTemplateConstructor* __vwsnthis_0; + + __vwsnf180_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf181_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_ + { + ::darkskin::RibbonGroupTemplateConstructor* __vwsnthis_0; + + __vwsnf181_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf182_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_ + { + ::darkskin::RibbonGroupTemplateConstructor* __vwsnthis_0; + + __vwsnf182_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize_(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf183_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_ + { + ::darkskin::RibbonIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnf183_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf184_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_ + { + ::darkskin::RibbonIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnf184_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf185_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_ + { + ::darkskin::RibbonIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnf185_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize_(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf186_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf186_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf187_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf187_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf188_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf188_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf189_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf189_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf18_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf18_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiRibbonTabTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf190_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf190_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf191_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf191_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf192_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf192_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf193_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf193_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf194_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf194_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize_(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf195_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf195_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf196_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf196_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf197_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf197_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf198_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf198_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf199_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf199_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf19_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf19_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf1_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf1_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiRibbonToolstripMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf200_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf200_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf201_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf201_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf202_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf202_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf203_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf203_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf204_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf204_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf205_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf205_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize_(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf206_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf206_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf207_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf207_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf208_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf208_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf209_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf209_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf20_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf20_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf210_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf210_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf211_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf211_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf212_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf212_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf213_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf213_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf214_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf214_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf215_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf215_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize_(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf216_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf216_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf217_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf217_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf218_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf218_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf219_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf219_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf21_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf21_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf220_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf220_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf221_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf221_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf222_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf222_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf223_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf223_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf224_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf224_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize_(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf225_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf225_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf226_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf226_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf227_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf227_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf228_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf228_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf229_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf229_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf22_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf22_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf230_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf230_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf231_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf231_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf232_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf232_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf233_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf233_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf234_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf234_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf235_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf235_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf236_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf236_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize_(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf237_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_ + { + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnf237_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf238_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_ + { + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnf238_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf239_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_ + { + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnf239_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf23_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf23_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf240_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_ + { + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnf240_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf241_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_ + { + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnf241_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf242_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_ + { + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnf242_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize_(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf243_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf243_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf244_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf244_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf245_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf245_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf246_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf246_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf247_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf247_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf248_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf248_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf249_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf249_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf24_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf24_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiDateComboBoxTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf250_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf250_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf251_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf251_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf252_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf252_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf253_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf253_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf254_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_ + { + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf254_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize_(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf255_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_ + { + ::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf255_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_(::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf256_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_ + { + ::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf256_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize_(::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf257_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_ + { + ::darkskin::BottomScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf257_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_(::darkskin::BottomScrollButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf258_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_ + { + ::darkskin::BottomScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf258_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize_(::darkskin::BottomScrollButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf259_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize_ + { + ::darkskin::HScrollHandleTemplateConstructor* __vwsnthis_0; + + __vwsnf259_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize_(::darkskin::HScrollHandleTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf25_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf25_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiDatePickerTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf260_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_ + { + ::darkskin::HScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf260_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf261_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_ + { + ::darkskin::HScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf261_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf262_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_ + { + ::darkskin::HScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf262_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf263_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_ + { + ::darkskin::HScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf263_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf264_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_ + { + ::darkskin::HScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf264_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf265_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_ + { + ::darkskin::HScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf265_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize_(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf266_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_ + { + ::darkskin::HTrackerTemplateConstructor* __vwsnthis_0; + + __vwsnf266_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_(::darkskin::HTrackerTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf267_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_ + { + ::darkskin::HTrackerTemplateConstructor* __vwsnthis_0; + + __vwsnf267_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_(::darkskin::HTrackerTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf268_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_ + { + ::darkskin::HTrackerTemplateConstructor* __vwsnthis_0; + + __vwsnf268_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize_(::darkskin::HTrackerTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf269_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_ + { + ::darkskin::LeftScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf269_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_(::darkskin::LeftScrollButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf26_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf26_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf270_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_ + { + ::darkskin::LeftScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf270_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize_(::darkskin::LeftScrollButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf271_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize_ + { + ::darkskin::ProgressBarTemplateConstructor* __vwsnthis_0; + + __vwsnf271_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize_(::darkskin::ProgressBarTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf272_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_ + { + ::darkskin::RightScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf272_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_(::darkskin::RightScrollButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf273_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_ + { + ::darkskin::RightScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf273_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize_(::darkskin::RightScrollButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf274_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_ + { + ::darkskin::ScrollViewTemplateConstructor* __vwsnthis_0; + + __vwsnf274_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_(::darkskin::ScrollViewTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf275_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_ + { + ::darkskin::ScrollViewTemplateConstructor* __vwsnthis_0; + + __vwsnf275_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_(::darkskin::ScrollViewTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf276_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_ + { + ::darkskin::TopScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf276_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_(::darkskin::TopScrollButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf277_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_ + { + ::darkskin::TopScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf277_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize_(::darkskin::TopScrollButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf278_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize_ + { + ::darkskin::VScrollHandleTemplateConstructor* __vwsnthis_0; + + __vwsnf278_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize_(::darkskin::VScrollHandleTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf279_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_ + { + ::darkskin::VScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf279_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf27_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf27_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSelectableButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf280_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_ + { + ::darkskin::VScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf280_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf281_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_ + { + ::darkskin::VScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf281_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf282_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_ + { + ::darkskin::VScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf282_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf283_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_ + { + ::darkskin::VScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf283_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf284_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_ + { + ::darkskin::VScrollTemplateConstructor* __vwsnthis_0; + + __vwsnf284_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize_(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf285_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_ + { + ::darkskin::VTrackerTemplateConstructor* __vwsnthis_0; + + __vwsnf285_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_(::darkskin::VTrackerTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf286_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_ + { + ::darkskin::VTrackerTemplateConstructor* __vwsnthis_0; + + __vwsnf286_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_(::darkskin::VTrackerTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf287_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_ + { + ::darkskin::VTrackerTemplateConstructor* __vwsnthis_0; + + __vwsnf287_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize_(::darkskin::VTrackerTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf288_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_ + { + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf288_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf289_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_ + { + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf289_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf28_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf28_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf290_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_ + { + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf290_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf291_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_ + { + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf291_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf292_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_ + { + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf292_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf293_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_ + { + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf293_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf294_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_ + { + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf294_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize_(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf295_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_ + { + ::darkskin::TabHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf295_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf296_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_ + { + ::darkskin::TabHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf296_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf297_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_ + { + ::darkskin::TabHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf297_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf298_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_ + { + ::darkskin::TabHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf298_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf299_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_ + { + ::darkskin::TabHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnf299_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize_(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf29_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf29_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf2_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf2_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiTextListTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf300_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_ + { + ::darkskin::TabTemplateConstructor* __vwsnthis_0; + + __vwsnf300_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf301_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_ + { + ::darkskin::TabTemplateConstructor* __vwsnthis_0; + + __vwsnf301_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf302_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_ + { + ::darkskin::TabTemplateConstructor* __vwsnthis_0; + + __vwsnf302_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiItemEventArgs* arguments) const; + }; + + struct __vwsnf303_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_ + { + ::darkskin::TabTemplateConstructor* __vwsnthis_0; + + __vwsnf303_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiItemEventArgs* arguments) const; + }; + + struct __vwsnf304_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_ + { + ::darkskin::TabTemplateConstructor* __vwsnthis_0; + + __vwsnf304_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf305_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_ + { + ::darkskin::TabTemplateConstructor* __vwsnthis_0; + + __vwsnf305_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf306_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_ + { + ::darkskin::TabTemplateConstructor* __vwsnthis_0; + + __vwsnf306_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(::darkskin::TabTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf307_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_ + { + ::darkskin::MultilineTextBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf307_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_(::darkskin::MultilineTextBoxTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf308_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_ + { + ::darkskin::MultilineTextBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf308_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_(::darkskin::MultilineTextBoxTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf309_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_ + { + ::darkskin::MultilineTextBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf309_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_(::darkskin::MultilineTextBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf30_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf30_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf310_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize_ + { + ::darkskin::SinglelineTextBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf310_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize_(::darkskin::SinglelineTextBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf311_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_ + { + ::darkskin::MenuBarButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf311_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf312_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_ + { + ::darkskin::MenuBarButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf312_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf313_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_ + { + ::darkskin::MenuBarButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf313_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf314_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_ + { + ::darkskin::MenuBarButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf314_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf315_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_ + { + ::darkskin::MenuBarButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf315_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize_(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf316_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf316_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf317_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf317_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf318_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf318_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf319_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf319_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf31_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf31_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf320_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf320_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf321_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf321_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf322_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf322_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf323_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf323_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf324_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf324_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf325_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf325_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf326_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf326_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf327_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf327_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf328_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf328_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf329_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_ + { + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf329_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize_(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf32_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf32_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf330_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_ + { + ::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnf330_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf331_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_ + { + ::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnf331_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf332_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_ + { + ::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnf332_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize_(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf333_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_ + { + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf333_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf334_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_ + { + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf334_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf335_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_ + { + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf335_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf336_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_ + { + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf336_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf337_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_ + { + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf337_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf338_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_ + { + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf338_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize_(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf339_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_ + { + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf339_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf33_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf33_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf340_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_ + { + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf340_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf341_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_ + { + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf341_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf342_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_ + { + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf342_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf343_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_ + { + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf343_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf344_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_ + { + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf344_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf345_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_ + { + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf345_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf346_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_ + { + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf346_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf347_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_ + { + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf347_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize_(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf348_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_ + { + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf348_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf349_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_ + { + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf349_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf34_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf34_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf350_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_ + { + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf350_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf351_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_ + { + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf351_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf352_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_ + { + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf352_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf353_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_ + { + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf353_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf354_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_ + { + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf354_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf355_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_ + { + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf355_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf356_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_ + { + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf356_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize_(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf357_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf357_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiWindowTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf358_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf358_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf359_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf359_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf35_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf35_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiToolstripButtonTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf360_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf360_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf361_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf361_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf362_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf362_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf363_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf363_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf364_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf364_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf365_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf365_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf366_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf366_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf367_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf367_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf368_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf368_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf369_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf369_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf36_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf36_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf370_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf370_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf371_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf371_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf372_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf372_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf373_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf373_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf374_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf374_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf375_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf375_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf376_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_ + { + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnf376_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize_(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf37_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf37_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf38_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf38_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf39_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf39_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiTextListTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf3_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf3_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiRibbonGalleryListTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf40_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf40_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiTreeViewTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf41_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf41_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiListViewTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf42_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf42_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiDocumentLabelTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf43_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf43_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiDocumentLabelTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf44_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf44_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiDocumentViewerTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf45_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf45_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiSinglelineTextBoxTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf46_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf46_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMultilineTextBoxTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf47_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf47_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiComboBoxTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf48_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf48_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiTabTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf49_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf49_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf4_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf4_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiRibbonGalleryTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf50_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf50_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollViewTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf51_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf51_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiLabelTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf52_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf52_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiLabelTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf53_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf53_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiWindowTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf54_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf54_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf55_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf55_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiWindowTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf56_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_ + { + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf56_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf57_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_ + { + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf57_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf58_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_ + { + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf58_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf59_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_ + { + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf59_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf5_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf5_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf60_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_ + { + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf60_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf61_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_ + { + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf61_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize_(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf62_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_ + { + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf62_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf63_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_ + { + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf63_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf64_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_ + { + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf64_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf65_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_ + { + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf65_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf66_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_ + { + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf66_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf67_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_ + { + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf67_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf68_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_ + { + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf68_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf69_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_ + { + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf69_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize_(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf6_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf6_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiRibbonToolstripsTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf70_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_ + { + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf70_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf71_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_ + { + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf71_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf72_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_ + { + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf72_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf73_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_ + { + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf73_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf74_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_ + { + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf74_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf75_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_ + { + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf75_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf76_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_ + { + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf76_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf77_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_ + { + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnf77_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize_(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf78_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize_ + { + ::darkskin::DocumentTextBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf78_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize_(::darkskin::DocumentTextBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf79_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_ + { + ::darkskin::DocumentViewerTemplateConstructor* __vwsnthis_0; + + __vwsnf79_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_(::darkskin::DocumentViewerTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf7_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf7_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiRibbonButtonsTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf80_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_ + { + ::darkskin::DocumentViewerTemplateConstructor* __vwsnthis_0; + + __vwsnf80_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_(::darkskin::DocumentViewerTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiScrollTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf81_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_ + { + ::darkskin::DocumentViewerTemplateConstructor* __vwsnthis_0; + + __vwsnf81_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_(::darkskin::DocumentViewerTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf82_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf82_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiDatePickerTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf83_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf83_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiMenuTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf84_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf84_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf85_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf85_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf86_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf86_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf87_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf87_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf88_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf88_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf89_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf89_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf8_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf8_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiRibbonIconLabelTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf90_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf90_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf91_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf91_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf92_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_ + { + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnf92_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize_(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf93_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_ + { + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnf93_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf94_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_ + { + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnf94_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf95_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_ + { + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnf95_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf96_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_ + { + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnf96_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf97_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_ + { + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnf97_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf98_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_ + { + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnf98_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize_(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf99_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize_ + { + ::darkskin::ItemBackgroundTemplateConstructor* __vwsnthis_0; + + __vwsnf99_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize_(::darkskin::ItemBackgroundTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf9_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_ + { + ::darkskin::ThemeConstructor* __vwsnthis_0; + + __vwsnf9_DarkSkin_darkskin_ThemeConstructor___vwsn_darkskin_Theme_Initialize_(::darkskin::ThemeConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiRibbonIconLabelTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + class __vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc100_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc101_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc102_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc103_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc104_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc105_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc106_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc107_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc108_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc109_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc10_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc110_DarkSkin_darkskin_RibbonLargeDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonLargeDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonLargeDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc111_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc112_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc113_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc114_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc115_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc116_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc117_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc118_DarkSkin_darkskin_RibbonLargeSplitButtonTemplateConstructor___vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc119_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc11_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc120_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc121_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc122_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc123_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc124_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc125_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc126_DarkSkin_darkskin_RibbonSmallButtonTemplateConstructor___vwsn_darkskin_RibbonSmallButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc127_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc128_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc129_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc12_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc130_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc131_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc132_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc133_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc134_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc135_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc136_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc137_DarkSkin_darkskin_RibbonSmallDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonSmallDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonSmallDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnc138_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallIconLabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnc139_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallIconLabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc13_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnc140_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallIconLabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnc141_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallIconLabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnc142_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallIconLabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnc143_DarkSkin_darkskin_RibbonSmallIconLabelTemplateConstructor___vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallIconLabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallIconLabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc144_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc145_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc146_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc147_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc148_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc149_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc14_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc150_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc151_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc152_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc153_DarkSkin_darkskin_RibbonSmallSplitButtonTemplateConstructor___vwsn_darkskin_RibbonSmallSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSmallSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSmallSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc154_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonToolstripHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc155_DarkSkin_darkskin_RibbonToolstripHeaderTemplateConstructor___vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonToolstripHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonToolstripHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::BottomScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc156_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::BottomScrollButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::BottomScrollButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::BottomScrollButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::BottomScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc157_DarkSkin_darkskin_BottomScrollButtonTemplateConstructor___vwsn_darkskin_BottomScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::BottomScrollButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::BottomScrollButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::BottomScrollButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::HScrollHandleTemplateConstructor* __vwsnthis_0; + + __vwsnc158_DarkSkin_darkskin_HScrollHandleTemplateConstructor___vwsn_darkskin_HScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HScrollHandleTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::HScrollHandleTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::HScrollHandleTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::HScrollTemplateConstructor* __vwsnthis_0; + + __vwsnc159_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::HScrollTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::HScrollTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc15_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::HScrollTemplateConstructor* __vwsnthis_0; + + __vwsnc160_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::HScrollTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::HScrollTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::HScrollTemplateConstructor* __vwsnthis_0; + + __vwsnc161_DarkSkin_darkskin_HScrollTemplateConstructor___vwsn_darkskin_HScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HScrollTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::HScrollTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::HScrollTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::HTrackerTemplateConstructor* __vwsnthis_0; + + __vwsnc162_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HTrackerTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::HTrackerTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::HTrackerTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::HTrackerTemplateConstructor* __vwsnthis_0; + + __vwsnc163_DarkSkin_darkskin_HTrackerTemplateConstructor___vwsn_darkskin_HTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::HTrackerTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::HTrackerTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::HTrackerTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::LeftScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc164_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::LeftScrollButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::LeftScrollButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::LeftScrollButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::LeftScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc165_DarkSkin_darkskin_LeftScrollButtonTemplateConstructor___vwsn_darkskin_LeftScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::LeftScrollButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::LeftScrollButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::LeftScrollButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ProgressBarTemplateConstructor* __vwsnthis_0; + + __vwsnc166_DarkSkin_darkskin_ProgressBarTemplateConstructor___vwsn_darkskin_ProgressBarTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ProgressBarTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ProgressBarTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ProgressBarTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ProgressBarTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RightScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc167_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RightScrollButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RightScrollButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RightScrollButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RightScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc168_DarkSkin_darkskin_RightScrollButtonTemplateConstructor___vwsn_darkskin_RightScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RightScrollButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RightScrollButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RightScrollButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TopScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc169_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TopScrollButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TopScrollButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::TopScrollButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc16_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TopScrollButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc170_DarkSkin_darkskin_TopScrollButtonTemplateConstructor___vwsn_darkskin_TopScrollButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TopScrollButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TopScrollButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::TopScrollButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::VScrollHandleTemplateConstructor* __vwsnthis_0; + + __vwsnc171_DarkSkin_darkskin_VScrollHandleTemplateConstructor___vwsn_darkskin_VScrollHandleTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VScrollHandleTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::VScrollHandleTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::VScrollHandleTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::VScrollTemplateConstructor* __vwsnthis_0; + + __vwsnc172_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::VScrollTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::VScrollTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::VScrollTemplateConstructor* __vwsnthis_0; + + __vwsnc173_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::VScrollTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::VScrollTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::VScrollTemplateConstructor* __vwsnthis_0; + + __vwsnc174_DarkSkin_darkskin_VScrollTemplateConstructor___vwsn_darkskin_VScrollTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VScrollTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::VScrollTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::VScrollTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::VTrackerTemplateConstructor* __vwsnthis_0; + + __vwsnc175_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VTrackerTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::VTrackerTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::VTrackerTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::VTrackerTemplateConstructor* __vwsnthis_0; + + __vwsnc176_DarkSkin_darkskin_VTrackerTemplateConstructor___vwsn_darkskin_VTrackerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::VTrackerTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::VTrackerTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::VTrackerTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc177_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_3 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_3_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_3_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc178_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc179_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc17_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc180_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc181_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc182_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::presentation::controls::GuiRibbonTabPage* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabHeaderButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc183_DarkSkin_darkskin_TabHeaderButtonTemplateConstructor___vwsn_darkskin_TabHeaderButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TabHeaderButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::presentation::controls::GuiTab* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc184_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::controls::GuiTabPage* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc185_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::controls::GuiTabPage* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc186_DarkSkin_darkskin_TabHeaderTemplateConstructor___vwsn_darkskin_TabHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabHeaderTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::controls::GuiTab* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabTemplateConstructor* __vwsnthis_0; + + __vwsnc187_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TabTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabTemplateConstructor* __vwsnthis_0; + + __vwsnc188_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TabTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TabTemplateConstructor* __vwsnthis_0; + + __vwsnc189_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TabTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TabTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::presentation::controls::GuiRibbonTabPage* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc18_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MultilineTextBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc190_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MultilineTextBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MultilineTextBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::MultilineTextBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::SinglelineTextBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc191_DarkSkin_darkskin_SinglelineTextBoxTemplateConstructor___vwsn_darkskin_SinglelineTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::SinglelineTextBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::SinglelineTextBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::SinglelineTextBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuBarButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc192_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuBarButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::MenuBarButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::MenuBarButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuBarButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc193_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuBarButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuBarButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc194_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuBarButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuBarButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc195_DarkSkin_darkskin_MenuBarButtonTemplateConstructor___vwsn_darkskin_MenuBarButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuBarButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuBarButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc196_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc197_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc198_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc199_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc19_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc1_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc200_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc201_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc202_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc203_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc204_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc205_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc206_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc207_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::MenuItemButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc208_DarkSkin_darkskin_MenuItemButtonTemplateConstructor___vwsn_darkskin_MenuItemButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::MenuItemButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::MenuItemButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnc209_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripSplitArrowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripSplitArrowTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ToolstripSplitArrowTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc20_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnc210_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripSplitArrowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripSplitArrowTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ToolstripSplitArrowTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnc211_DarkSkin_darkskin_ToolstripSplitArrowTemplateConstructor___vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitArrowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripSplitArrowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripSplitArrowTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ToolstripSplitArrowTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc212_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc213_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ToolstripButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc214_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc215_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc216_DarkSkin_darkskin_ToolstripButtonTemplateConstructor___vwsn_darkskin_ToolstripButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc217_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc218_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc219_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc21_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc220_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc221_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc222_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc223_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc224_DarkSkin_darkskin_ToolstripDropdownButtonTemplateConstructor___vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ToolstripDropdownButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc225_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc226_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc227_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc228_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc229_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RadioButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc22_DarkSkin_darkskin_RadioButtonTemplateConstructor___vwsn_darkskin_RadioButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RadioButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RadioButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc230_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc231_DarkSkin_darkskin_ToolstripSplitButtonTemplateConstructor___vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ToolstripSplitButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ToolstripSplitButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc232_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::WindowTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::WindowTemplate* __vwsn_bind_cache_2 = nullptr; + ::darkskin::WindowTemplate* __vwsn_bind_cache_3 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_3_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_3_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc233_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc234_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::WindowTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc235_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc236_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc237_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc238_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::WindowTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc239_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::DocumentTextBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc23_DarkSkin_darkskin_DocumentTextBoxTemplateConstructor___vwsn_darkskin_DocumentTextBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DocumentTextBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::DocumentTextBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::DocumentTextBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc240_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::WindowTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc241_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::WindowTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc242_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::WindowTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc243_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc244_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::WindowTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::WindowTemplateConstructor* __vwsnthis_0; + + __vwsnc245_DarkSkin_darkskin_WindowTemplateConstructor___vwsn_darkskin_WindowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::WindowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::WindowTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::DocumentViewerTemplateConstructor* __vwsnthis_0; + + __vwsnc24_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DocumentViewerTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::DocumentViewerTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::DocumentViewerTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc25_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc26_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc27_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc28_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc29_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc2_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc30_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc31_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc32_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ComboBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc33_DarkSkin_darkskin_ComboBoxTemplateConstructor___vwsn_darkskin_ComboBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ComboBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ComboBoxTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnc34_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnc35_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnc36_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnc37_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnc38_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnthis_0; + + __vwsnc39_DarkSkin_darkskin_ExpandingDecoratorTemplateConstructor___vwsn_darkskin_ExpandingDecoratorTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ExpandingDecoratorTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ExpandingDecoratorTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc3_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ItemBackgroundTemplateConstructor* __vwsnthis_0; + + __vwsnc40_DarkSkin_darkskin_ItemBackgroundTemplateConstructor___vwsn_darkskin_ItemBackgroundTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ItemBackgroundTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ItemBackgroundTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ItemBackgroundTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ItemBackgroundTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc41_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc42_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc43_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc44_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc45_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc46_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc47_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc48_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc49_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc4_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc50_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc51_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnthis_0; + + __vwsnc52_DarkSkin_darkskin_ListViewColumnHeaderTemplateConstructor___vwsn_darkskin_ListViewColumnHeaderTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewColumnHeaderTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewColumnHeaderTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ListViewTemplateConstructor* __vwsnthis_0; + + __vwsnc53_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ListViewTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ListViewTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ListViewTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TextListTemplateConstructor* __vwsnthis_0; + + __vwsnc54_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TextListTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TextListTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::TextListTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::TreeViewTemplateConstructor* __vwsnthis_0; + + __vwsnc55_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::TreeViewTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::TreeViewTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::TreeViewTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::DateButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc56_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DateButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::DateButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::DateButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::DateButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::DateButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc57_DarkSkin_darkskin_DateButtonTemplateConstructor___vwsn_darkskin_DateButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DateButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::DateButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnc58_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::DatePickerTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnc59_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::DatePickerTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc5_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::ButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnc60_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::DatePickerTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnc61_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::DatePickerTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::DatePickerTemplateConstructor* __vwsnthis_0; + + __vwsnc62_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::DatePickerTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiCommonDatePickerLook* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::GroupBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc63_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::GroupBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc64_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0); + + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::GroupBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc65_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::GroupBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::GroupBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc66_DarkSkin_darkskin_GroupBoxTemplateConstructor___vwsn_darkskin_GroupBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::GroupBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::GroupBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::LabelTemplateConstructor* __vwsnthis_0; + + __vwsnc67_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::LabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::LabelTemplateConstructor* __vwsnthis_0; + + __vwsnc68_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::LabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::LabelTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::LabelTemplateConstructor* __vwsnthis_0; + + __vwsnc69_DarkSkin_darkskin_LabelTemplateConstructor___vwsn_darkskin_LabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::LabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::LabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc6_DarkSkin_darkskin_ButtonTemplateConstructor___vwsn_darkskin_ButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ShortcutKeyTemplateConstructor* __vwsnthis_0; + + __vwsnc70_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ShortcutKeyTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ShortcutKeyTemplateConstructor* __vwsnthis_0; + + __vwsnc71_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ShortcutKeyTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::ShortcutKeyTemplateConstructor* __vwsnthis_0; + + __vwsnc72_DarkSkin_darkskin_ShortcutKeyTemplateConstructor___vwsn_darkskin_ShortcutKeyTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::ShortcutKeyTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::ShortcutKeyTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnc73_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnc74_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnc75_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnc76_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnc77_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnthis_0; + + __vwsnc78_DarkSkin_darkskin_RibbonSplitArrowTemplateConstructor___vwsn_darkskin_RibbonSplitArrowTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonSplitArrowTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonSplitArrowTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc79_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGalleryDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonGalleryDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc7_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc80_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGalleryDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonGalleryDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc81_DarkSkin_darkskin_RibbonGalleryDropdownButtonTemplateConstructor___vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGalleryDropdownButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonGalleryDropdownButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnc82_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGalleryTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonGalleryTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnc83_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGalleryTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGalleryTemplateConstructor* __vwsnthis_0; + + __vwsnc84_DarkSkin_darkskin_RibbonGalleryTemplateConstructor___vwsn_darkskin_RibbonGalleryTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGalleryTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGalleryTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc85_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGroupExpandButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonGroupExpandButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc86_DarkSkin_darkskin_RibbonGroupExpandButtonTemplateConstructor___vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGroupExpandButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGroupExpandButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonGroupExpandButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGroupTemplateConstructor* __vwsnthis_0; + + __vwsnc87_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGroupTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGroupTemplateConstructor* __vwsnthis_0; + + __vwsnc88_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGroupTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonGroupTemplateConstructor* __vwsnthis_0; + + __vwsnc89_DarkSkin_darkskin_RibbonGroupTemplateConstructor___vwsn_darkskin_RibbonGroupTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonGroupTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonGroupTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc8_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnc90_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonIconLabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnc91_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonIconLabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonIconLabelTemplateConstructor* __vwsnthis_0; + + __vwsnc92_DarkSkin_darkskin_RibbonIconLabelTemplateConstructor___vwsn_darkskin_RibbonIconLabelTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonIconLabelTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonIconLabelTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc93_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc94_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_2 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_2_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_2_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc95_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc96_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc97_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc98_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnthis_0; + + __vwsnc99_DarkSkin_darkskin_RibbonLargeButtonTemplateConstructor___vwsn_darkskin_RibbonLargeButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::RibbonLargeButtonTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::RibbonLargeButtonTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::darkskin::CheckBoxTemplateConstructor* __vwsnthis_0; + + __vwsnc9_DarkSkin_darkskin_CheckBoxTemplateConstructor___vwsn_darkskin_CheckBoxTemplate_Initialize__vl_reflection_description_IValueSubscription(::darkskin::CheckBoxTemplateConstructor* __vwsnctorthis_0); + + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_0 = nullptr; + ::darkskin::CheckBoxTemplate* __vwsn_bind_cache_1 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; +} + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(__clang__) +#pragma clang diagnostic pop +#endif + +#endif + + +/*********************************************************************** +.\DARKSKIN.H +***********************************************************************/ +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! + +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DARKSKIN +#define VCZH_WORKFLOW_COMPILER_GENERATED_DARKSKIN + + +#endif + diff --git a/Import/DarkSkinReflection.cpp b/Import/DarkSkinReflection.cpp new file mode 100644 index 00000000..8f94241c --- /dev/null +++ b/Import/DarkSkinReflection.cpp @@ -0,0 +1,1701 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "DarkSkinReflection.h" + +/*********************************************************************** +.\DARKSKINREFLECTION.CPP +***********************************************************************/ +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! + +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries +***********************************************************************/ + + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#endif + +/*********************************************************************** +Reflection +***********************************************************************/ + +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + IMPL_CPP_TYPE_INFO(darkskin::BottomScrollButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::BottomScrollButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::CheckBoxTemplate) + IMPL_CPP_TYPE_INFO(darkskin::CheckBoxTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ComboBoxTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ComboBoxTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::CustomControlTemplate) + IMPL_CPP_TYPE_INFO(darkskin::CustomControlTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::DateButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::DateButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::DatePickerTemplate) + IMPL_CPP_TYPE_INFO(darkskin::DatePickerTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::DocumentLabelTemplate) + IMPL_CPP_TYPE_INFO(darkskin::DocumentLabelTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::DocumentTextBoxTemplate) + IMPL_CPP_TYPE_INFO(darkskin::DocumentTextBoxTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::DocumentViewerTemplate) + IMPL_CPP_TYPE_INFO(darkskin::DocumentViewerTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ExpandingDecoratorTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ExpandingDecoratorTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::GroupBoxTemplate) + IMPL_CPP_TYPE_INFO(darkskin::GroupBoxTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::HScrollHandleTemplate) + IMPL_CPP_TYPE_INFO(darkskin::HScrollHandleTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::HScrollTemplate) + IMPL_CPP_TYPE_INFO(darkskin::HScrollTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::HTrackerTemplate) + IMPL_CPP_TYPE_INFO(darkskin::HTrackerTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ItemBackgroundTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ItemBackgroundTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::LabelTemplate) + IMPL_CPP_TYPE_INFO(darkskin::LabelTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::LeftScrollButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::LeftScrollButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ListViewColumnHeaderTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ListViewColumnHeaderTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ListViewTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ListViewTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::MenuBarButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::MenuBarButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::MenuItemButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::MenuItemButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::MenuSplitterTemplate) + IMPL_CPP_TYPE_INFO(darkskin::MenuSplitterTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::MultilineTextBoxTemplate) + IMPL_CPP_TYPE_INFO(darkskin::MultilineTextBoxTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ProgressBarTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ProgressBarTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RadioButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RadioButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonButtonsTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonButtonsTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGalleryDropdownButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGalleryDropdownButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGalleryItemListTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGalleryItemListTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGalleryTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGalleryTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGroupExpandButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGroupExpandButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGroupMenuTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGroupMenuTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGroupTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonGroupTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonIconLabelTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonIconLabelTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonLargeButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonLargeButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonLargeDropdownButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonLargeDropdownButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonLargeSplitButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonLargeSplitButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonSmallButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonSmallButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonSmallDropdownButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonSmallDropdownButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonSmallIconLabelTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonSmallIconLabelTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonSmallSplitButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonSmallSplitButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonSplitArrowTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonSplitArrowTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonToolstripHeaderTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonToolstripHeaderTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonToolstripMenuTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonToolstripMenuTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RibbonToolstripsTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RibbonToolstripsTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::RightScrollButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::RightScrollButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ScrollViewTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ScrollViewTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ShortcutKeyTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ShortcutKeyTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::SinglelineTextBoxTemplate) + IMPL_CPP_TYPE_INFO(darkskin::SinglelineTextBoxTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::TabHeaderButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::TabHeaderButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::TabHeaderTemplate) + IMPL_CPP_TYPE_INFO(darkskin::TabHeaderTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::TabTemplate) + IMPL_CPP_TYPE_INFO(darkskin::TabTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::TextListTemplate) + IMPL_CPP_TYPE_INFO(darkskin::TextListTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::Theme) + IMPL_CPP_TYPE_INFO(darkskin::ThemeConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripDropdownButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripDropdownButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripMenuTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripMenuTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitArrowTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitArrowTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitterTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitterTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripTemplate) + IMPL_CPP_TYPE_INFO(darkskin::ToolstripTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::TooltipTemplate) + IMPL_CPP_TYPE_INFO(darkskin::TooltipTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::TopScrollButtonTemplate) + IMPL_CPP_TYPE_INFO(darkskin::TopScrollButtonTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::TreeViewTemplate) + IMPL_CPP_TYPE_INFO(darkskin::TreeViewTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::VScrollHandleTemplate) + IMPL_CPP_TYPE_INFO(darkskin::VScrollHandleTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::VScrollTemplate) + IMPL_CPP_TYPE_INFO(darkskin::VScrollTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::VTrackerTemplate) + IMPL_CPP_TYPE_INFO(darkskin::VTrackerTemplateConstructor) + IMPL_CPP_TYPE_INFO(darkskin::WindowTemplate) + IMPL_CPP_TYPE_INFO(darkskin::WindowTemplateConstructor) + +#define _ , + BEGIN_CLASS_MEMBER(::darkskin::BottomScrollButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::BottomScrollButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::BottomScrollButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::BottomScrollButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::BottomScrollButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::BottomScrollButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_BottomScrollButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::BottomScrollButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::ButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(self) + END_CLASS_MEMBER(::darkskin::ButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::CheckBoxTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::CheckBoxTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::CheckBoxTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::CheckBoxTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::CheckBoxTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::CheckBoxTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_CheckBoxTemplate_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_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) + END_CLASS_MEMBER(::darkskin::CheckBoxTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ComboBoxTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiDateComboBoxTemplate) + CLASS_MEMBER_BASE(::darkskin::ComboBoxTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ComboBoxTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ComboBoxTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ComboBoxTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ComboBoxTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ComboBoxTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ComboBoxTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::CustomControlTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) + CLASS_MEMBER_BASE(::darkskin::CustomControlTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::CustomControlTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::CustomControlTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::CustomControlTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::CustomControlTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_CustomControlTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + END_CLASS_MEMBER(::darkskin::CustomControlTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::DateButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::DateButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::DateButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::DateButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::DateButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::DateButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_DateButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::DateButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::DatePickerTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiDatePickerTemplate) + CLASS_MEMBER_BASE(::darkskin::DatePickerTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::DatePickerTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::DatePickerTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::DatePickerTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::DatePickerTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_DatePickerTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(look) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::DatePickerTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::DocumentLabelTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiDocumentLabelTemplate) + CLASS_MEMBER_BASE(::darkskin::DocumentLabelTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::DocumentLabelTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::DocumentLabelTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::DocumentLabelTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::DocumentLabelTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_DocumentLabelTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::DocumentLabelTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::DocumentTextBoxTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiDocumentLabelTemplate) + CLASS_MEMBER_BASE(::darkskin::DocumentTextBoxTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::DocumentTextBoxTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::DocumentTextBoxTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::DocumentTextBoxTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::DocumentTextBoxTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_DocumentTextBoxTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::DocumentTextBoxTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::DocumentViewerTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiDocumentViewerTemplate) + CLASS_MEMBER_BASE(::darkskin::DocumentViewerTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::DocumentViewerTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::DocumentViewerTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::DocumentViewerTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::DocumentViewerTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_DocumentViewerTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(look) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::DocumentViewerTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ExpandingDecoratorTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::ExpandingDecoratorTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ExpandingDecoratorTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ExpandingDecoratorTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ExpandingDecoratorTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ExpandingDecoratorTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ExpandingDecoratorTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(self) + END_CLASS_MEMBER(::darkskin::ExpandingDecoratorTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::GroupBoxTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) + CLASS_MEMBER_BASE(::darkskin::GroupBoxTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::GroupBoxTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::GroupBoxTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::GroupBoxTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::GroupBoxTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_GroupBoxTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(container) + CLASS_MEMBER_FIELD(self) + CLASS_MEMBER_FIELD(titleBounds) + END_CLASS_MEMBER(::darkskin::GroupBoxTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::HScrollHandleTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::HScrollHandleTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::HScrollHandleTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::HScrollHandleTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::HScrollHandleTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::HScrollHandleTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_HScrollHandleTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::HScrollHandleTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::HScrollTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollTemplate) + CLASS_MEMBER_BASE(::darkskin::HScrollTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::HScrollTemplate*(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::HScrollTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::HScrollTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::HScrollTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_HScrollTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(behavior) + CLASS_MEMBER_FIELD(buttonDecrease) + CLASS_MEMBER_FIELD(buttonIncrease) + CLASS_MEMBER_FIELD(handle) + CLASS_MEMBER_FIELD(handleContainer) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::HScrollTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::HTrackerTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollTemplate) + CLASS_MEMBER_BASE(::darkskin::HTrackerTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::HTrackerTemplate*(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::HTrackerTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::HTrackerTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::HTrackerTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_HTrackerTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(behavior) + CLASS_MEMBER_FIELD(handle) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::HTrackerTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ItemBackgroundTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::ItemBackgroundTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ItemBackgroundTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ItemBackgroundTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ItemBackgroundTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ItemBackgroundTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ItemBackgroundTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ItemBackgroundTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::LabelTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiLabelTemplate) + CLASS_MEMBER_BASE(::darkskin::LabelTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::LabelTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::LabelTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::LabelTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::LabelTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_LabelTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::LabelTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::LeftScrollButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::LeftScrollButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::LeftScrollButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::LeftScrollButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::LeftScrollButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::LeftScrollButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_LeftScrollButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::LeftScrollButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ListViewColumnHeaderTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiListViewColumnHeaderTemplate) + CLASS_MEMBER_BASE(::darkskin::ListViewColumnHeaderTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ListViewColumnHeaderTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ListViewColumnHeaderTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ListViewColumnHeaderTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ListViewColumnHeaderTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ListViewColumnHeaderTemplate_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_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(buttonArrow) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ListViewColumnHeaderTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ListViewTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiListViewTemplate) + CLASS_MEMBER_BASE(::darkskin::ListViewTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ListViewTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ListViewTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ListViewTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ListViewTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ListViewTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(look) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ListViewTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::MenuBarButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::MenuBarButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::MenuBarButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::MenuBarButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::MenuBarButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::MenuBarButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_MenuBarButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::MenuBarButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::MenuItemButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::MenuItemButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::MenuItemButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::MenuItemButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::MenuItemButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::MenuItemButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_MenuItemButtonTemplate_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) + END_CLASS_MEMBER(::darkskin::MenuItemButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::MenuSplitterTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) + CLASS_MEMBER_BASE(::darkskin::MenuSplitterTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::MenuSplitterTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::MenuSplitterTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::MenuSplitterTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::MenuSplitterTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_MenuSplitterTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + END_CLASS_MEMBER(::darkskin::MenuSplitterTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::MultilineTextBoxTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiMultilineTextBoxTemplate) + CLASS_MEMBER_BASE(::darkskin::MultilineTextBoxTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::MultilineTextBoxTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::MultilineTextBoxTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::MultilineTextBoxTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::MultilineTextBoxTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_MultilineTextBoxTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(look) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::MultilineTextBoxTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ProgressBarTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollTemplate) + CLASS_MEMBER_BASE(::darkskin::ProgressBarTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ProgressBarTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ProgressBarTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ProgressBarTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ProgressBarTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ProgressBarTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ProgressBarTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RadioButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RadioButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RadioButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RadioButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RadioButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RadioButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RadioButtonTemplate_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_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) + END_CLASS_MEMBER(::darkskin::RadioButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonButtonsTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonButtonsTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonButtonsTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonButtonsTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonButtonsTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonButtonsTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonButtonsTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonButtonsTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + END_CLASS_MEMBER(::darkskin::RibbonButtonsTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGalleryDropdownButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGalleryDropdownButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonGalleryDropdownButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonGalleryDropdownButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonGalleryDropdownButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGalleryItemListTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonGalleryItemListTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGalleryItemListTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonGalleryItemListTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGalleryItemListTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonGalleryItemListTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonGalleryItemListTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonGalleryItemListTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGalleryTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonGalleryListTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonGalleryTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGalleryTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonGalleryTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGalleryTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonGalleryTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonGalleryTemplate_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_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(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonGalleryTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGroupExpandButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonGroupExpandButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGroupExpandButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonGroupExpandButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGroupExpandButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonGroupExpandButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonGroupExpandButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonGroupExpandButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGroupMenuTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiMenuTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonGroupMenuTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGroupMenuTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonGroupMenuTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGroupMenuTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonGroupMenuTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonGroupMenuTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(container) + END_CLASS_MEMBER(::darkskin::RibbonGroupMenuTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGroupTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonGroupTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonGroupTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGroupTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonGroupTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonGroupTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonGroupTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonGroupTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(container) + CLASS_MEMBER_FIELD(self) + CLASS_MEMBER_FIELD(table) + END_CLASS_MEMBER(::darkskin::RibbonGroupTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonIconLabelTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonIconLabelTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonIconLabelTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonIconLabelTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonIconLabelTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonIconLabelTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonIconLabelTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonIconLabelTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonIconLabelTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonLargeButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonLargeButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonLargeButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonLargeButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonLargeButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonLargeButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonLargeButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonLargeButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonLargeDropdownButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonLargeDropdownButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonLargeDropdownButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonLargeDropdownButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonLargeDropdownButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonLargeDropdownButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonLargeDropdownButtonTemplate_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_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(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonLargeDropdownButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonLargeSplitButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonLargeSplitButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonLargeSplitButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonLargeSplitButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonLargeSplitButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonLargeSplitButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonLargeSplitButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(buttonArrow) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonLargeSplitButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonSmallButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonSmallButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonSmallButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonSmallButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonSmallButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonSmallButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallDropdownButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonSmallDropdownButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonSmallDropdownButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonSmallDropdownButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallDropdownButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonSmallDropdownButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonSmallDropdownButtonTemplate_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(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonSmallDropdownButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallIconLabelTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonIconLabelTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonSmallIconLabelTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonSmallIconLabelTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonSmallIconLabelTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallIconLabelTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonSmallIconLabelTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonSmallIconLabelTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonSmallIconLabelTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallSplitButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonSmallSplitButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonSmallSplitButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonSmallSplitButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallSplitButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonSmallSplitButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonSmallSplitButtonTemplate_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(buttonArrow) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonSmallSplitButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonSplitArrowTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonSplitArrowTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonSplitArrowTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonSplitArrowTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonSplitArrowTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonSplitArrowTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonSplitArrowTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(self) + END_CLASS_MEMBER(::darkskin::RibbonSplitArrowTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonToolstripHeaderTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonToolstripHeaderTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonToolstripHeaderTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonToolstripHeaderTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonToolstripHeaderTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonToolstripHeaderTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonToolstripHeaderTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RibbonToolstripHeaderTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonToolstripMenuTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonToolstripMenuTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonToolstripMenuTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonToolstripMenuTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonToolstripMenuTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonToolstripMenuTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonToolstripMenuTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonToolstripMenuTemplate_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(container) + CLASS_MEMBER_FIELD(content) + END_CLASS_MEMBER(::darkskin::RibbonToolstripMenuTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonToolstripsTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonToolstripsTemplate) + CLASS_MEMBER_BASE(::darkskin::RibbonToolstripsTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonToolstripsTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RibbonToolstripsTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RibbonToolstripsTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RibbonToolstripsTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RibbonToolstripsTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + END_CLASS_MEMBER(::darkskin::RibbonToolstripsTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::RightScrollButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::RightScrollButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::RightScrollButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::RightScrollButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::RightScrollButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::RightScrollButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_RightScrollButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::RightScrollButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ScrollViewTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollViewTemplate) + CLASS_MEMBER_BASE(::darkskin::ScrollViewTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ScrollViewTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ScrollViewTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ScrollViewTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ScrollViewTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ScrollViewTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(look) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ScrollViewTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ShortcutKeyTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiLabelTemplate) + CLASS_MEMBER_BASE(::darkskin::ShortcutKeyTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ShortcutKeyTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ShortcutKeyTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ShortcutKeyTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ShortcutKeyTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ShortcutKeyTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ShortcutKeyTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::SinglelineTextBoxTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSinglelineTextBoxTemplate) + CLASS_MEMBER_BASE(::darkskin::SinglelineTextBoxTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::SinglelineTextBoxTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::SinglelineTextBoxTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::SinglelineTextBoxTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::SinglelineTextBoxTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_SinglelineTextBoxTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::SinglelineTextBoxTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::TabHeaderButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::TabHeaderButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::TabHeaderButtonTemplate*(), NO_PARAMETER) + CLASS_MEMBER_METHOD(GetHighlighted, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetTabFocused, NO_PARAMETER) + CLASS_MEMBER_METHOD(SetHighlighted, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(SetTabFocused, { L"__vwsn_value_" }) + CLASS_MEMBER_EVENT(HighlightedChanged) + CLASS_MEMBER_EVENT(TabFocusedChanged) + CLASS_MEMBER_FIELD(__vwsn_prop_Highlighted) + CLASS_MEMBER_FIELD(__vwsn_prop_TabFocused) + CLASS_MEMBER_PROPERTY_EVENT(Highlighted, GetHighlighted, SetHighlighted, HighlightedChanged) + CLASS_MEMBER_PROPERTY_EVENT(TabFocused, GetTabFocused, SetTabFocused, TabFocusedChanged) + END_CLASS_MEMBER(::darkskin::TabHeaderButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::TabHeaderButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::TabHeaderButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_TabHeaderButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::TabHeaderButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::TabHeaderTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) + CLASS_MEMBER_BASE(::darkskin::TabHeaderTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::TabHeaderTemplate*(::vl::presentation::controls::GuiTabPage*), { L"__vwsn_ctor_parameter_CurrentTabPage" }) + CLASS_MEMBER_METHOD(GetCommands, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetCurrentTabPage, NO_PARAMETER) + CLASS_MEMBER_METHOD(SetCommands, { L"__vwsn_value_" }) + CLASS_MEMBER_EVENT(CommandsChanged) + CLASS_MEMBER_FIELD(__vwsn_parameter_CurrentTabPage) + CLASS_MEMBER_FIELD(__vwsn_prop_Commands) + CLASS_MEMBER_PROPERTY_EVENT(Commands, GetCommands, SetCommands, CommandsChanged) + CLASS_MEMBER_PROPERTY_READONLY(CurrentTabPage, GetCurrentTabPage) + END_CLASS_MEMBER(::darkskin::TabHeaderTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::TabHeaderTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::TabHeaderTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_TabHeaderTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(CurrentTabPage) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::TabHeaderTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::TabTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonTabTemplate) + CLASS_MEMBER_BASE(::darkskin::TabTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::TabTemplate*(), NO_PARAMETER) + CLASS_MEMBER_METHOD(GetHighlighted, NO_PARAMETER) + CLASS_MEMBER_METHOD(SetHighlighted, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(UpdateTabHeader, NO_PARAMETER) + CLASS_MEMBER_EVENT(HighlightedChanged) + CLASS_MEMBER_FIELD(__vwsn_prop_Highlighted) + CLASS_MEMBER_PROPERTY_EVENT(Highlighted, GetHighlighted, SetHighlighted, HighlightedChanged) + END_CLASS_MEMBER(::darkskin::TabTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::TabTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::TabTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_TabTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(afterHeadersContainer) + CLASS_MEMBER_FIELD(beforeHeadersContainer) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(header) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::TabTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::TextListTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListTemplate) + CLASS_MEMBER_BASE(::darkskin::TextListTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::TextListTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::TextListTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::TextListTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::TextListTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_TextListTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(look) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::TextListTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::Theme) + CLASS_MEMBER_BASE(::vl::presentation::theme::ThemeTemplates) + CLASS_MEMBER_BASE(::darkskin::ThemeConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::Theme*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::Theme) + + BEGIN_CLASS_MEMBER(::darkskin::ThemeConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ThemeConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_Theme_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + END_CLASS_MEMBER(::darkskin::ThemeConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::ToolstripButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ToolstripButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ToolstripButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripDropdownButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::ToolstripDropdownButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripDropdownButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ToolstripDropdownButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripDropdownButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripDropdownButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripDropdownButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ToolstripDropdownButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripMenuTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiMenuTemplate) + CLASS_MEMBER_BASE(::darkskin::ToolstripMenuTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripMenuTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ToolstripMenuTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripMenuTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripMenuTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripMenuTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(container) + END_CLASS_MEMBER(::darkskin::ToolstripMenuTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitArrowTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::ToolstripSplitArrowTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripSplitArrowTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ToolstripSplitArrowTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitArrowTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripSplitArrowTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripSplitArrowTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ToolstripSplitArrowTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::ToolstripSplitButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripSplitButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ToolstripSplitButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripSplitButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripSplitButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(buttonArrow) + CLASS_MEMBER_FIELD(container) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::ToolstripSplitButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitterTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) + CLASS_MEMBER_BASE(::darkskin::ToolstripSplitterTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripSplitterTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ToolstripSplitterTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitterTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripSplitterTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripSplitterTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + END_CLASS_MEMBER(::darkskin::ToolstripSplitterTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) + CLASS_MEMBER_BASE(::darkskin::ToolstripTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::ToolstripTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::ToolstripTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + END_CLASS_MEMBER(::darkskin::ToolstripTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::TooltipTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiWindowTemplate) + CLASS_MEMBER_BASE(::darkskin::TooltipTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::TooltipTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::TooltipTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::TooltipTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::TooltipTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_TooltipTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(container) + END_CLASS_MEMBER(::darkskin::TooltipTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::TopScrollButtonTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::TopScrollButtonTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::TopScrollButtonTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::TopScrollButtonTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::TopScrollButtonTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::TopScrollButtonTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_TopScrollButtonTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::TopScrollButtonTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::TreeViewTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTreeViewTemplate) + CLASS_MEMBER_BASE(::darkskin::TreeViewTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::TreeViewTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::TreeViewTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::TreeViewTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::TreeViewTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_TreeViewTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(look) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::TreeViewTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::VScrollHandleTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) + CLASS_MEMBER_BASE(::darkskin::VScrollHandleTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::VScrollHandleTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::VScrollHandleTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::VScrollHandleTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::VScrollHandleTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_VScrollHandleTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::VScrollHandleTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::VScrollTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollTemplate) + CLASS_MEMBER_BASE(::darkskin::VScrollTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::VScrollTemplate*(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::VScrollTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::VScrollTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::VScrollTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_VScrollTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(behavior) + CLASS_MEMBER_FIELD(buttonDecrease) + CLASS_MEMBER_FIELD(buttonIncrease) + CLASS_MEMBER_FIELD(handle) + CLASS_MEMBER_FIELD(handleContainer) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::VScrollTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::VTrackerTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollTemplate) + CLASS_MEMBER_BASE(::darkskin::VTrackerTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::VTrackerTemplate*(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::VTrackerTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::VTrackerTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::VTrackerTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_VTrackerTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + 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(behavior) + CLASS_MEMBER_FIELD(handle) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::VTrackerTemplateConstructor) + + BEGIN_CLASS_MEMBER(::darkskin::WindowTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiWindowTemplate) + CLASS_MEMBER_BASE(::darkskin::WindowTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::darkskin::WindowTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::darkskin::WindowTemplate) + + BEGIN_CLASS_MEMBER(::darkskin::WindowTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::WindowTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_darkskin_WindowTemplate_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_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(container) + CLASS_MEMBER_FIELD(contentTable) + CLASS_MEMBER_FIELD(frameTable) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::darkskin::WindowTemplateConstructor) + +#undef _ + class DarkSkinTypeLoader : public Object, public ITypeLoader + { + public: + void Load(ITypeManager* manager) + { + ADD_TYPE_INFO(::darkskin::BottomScrollButtonTemplate) + ADD_TYPE_INFO(::darkskin::BottomScrollButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ButtonTemplate) + ADD_TYPE_INFO(::darkskin::ButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::CheckBoxTemplate) + ADD_TYPE_INFO(::darkskin::CheckBoxTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ComboBoxTemplate) + ADD_TYPE_INFO(::darkskin::ComboBoxTemplateConstructor) + ADD_TYPE_INFO(::darkskin::CustomControlTemplate) + ADD_TYPE_INFO(::darkskin::CustomControlTemplateConstructor) + ADD_TYPE_INFO(::darkskin::DateButtonTemplate) + ADD_TYPE_INFO(::darkskin::DateButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::DatePickerTemplate) + ADD_TYPE_INFO(::darkskin::DatePickerTemplateConstructor) + ADD_TYPE_INFO(::darkskin::DocumentLabelTemplate) + ADD_TYPE_INFO(::darkskin::DocumentLabelTemplateConstructor) + ADD_TYPE_INFO(::darkskin::DocumentTextBoxTemplate) + ADD_TYPE_INFO(::darkskin::DocumentTextBoxTemplateConstructor) + ADD_TYPE_INFO(::darkskin::DocumentViewerTemplate) + ADD_TYPE_INFO(::darkskin::DocumentViewerTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ExpandingDecoratorTemplate) + ADD_TYPE_INFO(::darkskin::ExpandingDecoratorTemplateConstructor) + ADD_TYPE_INFO(::darkskin::GroupBoxTemplate) + ADD_TYPE_INFO(::darkskin::GroupBoxTemplateConstructor) + ADD_TYPE_INFO(::darkskin::HScrollHandleTemplate) + ADD_TYPE_INFO(::darkskin::HScrollHandleTemplateConstructor) + ADD_TYPE_INFO(::darkskin::HScrollTemplate) + ADD_TYPE_INFO(::darkskin::HScrollTemplateConstructor) + ADD_TYPE_INFO(::darkskin::HTrackerTemplate) + ADD_TYPE_INFO(::darkskin::HTrackerTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ItemBackgroundTemplate) + ADD_TYPE_INFO(::darkskin::ItemBackgroundTemplateConstructor) + ADD_TYPE_INFO(::darkskin::LabelTemplate) + ADD_TYPE_INFO(::darkskin::LabelTemplateConstructor) + ADD_TYPE_INFO(::darkskin::LeftScrollButtonTemplate) + ADD_TYPE_INFO(::darkskin::LeftScrollButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ListViewColumnHeaderTemplate) + ADD_TYPE_INFO(::darkskin::ListViewColumnHeaderTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ListViewTemplate) + ADD_TYPE_INFO(::darkskin::ListViewTemplateConstructor) + ADD_TYPE_INFO(::darkskin::MenuBarButtonTemplate) + ADD_TYPE_INFO(::darkskin::MenuBarButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::MenuItemButtonTemplate) + ADD_TYPE_INFO(::darkskin::MenuItemButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::MenuSplitterTemplate) + ADD_TYPE_INFO(::darkskin::MenuSplitterTemplateConstructor) + ADD_TYPE_INFO(::darkskin::MultilineTextBoxTemplate) + ADD_TYPE_INFO(::darkskin::MultilineTextBoxTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ProgressBarTemplate) + ADD_TYPE_INFO(::darkskin::ProgressBarTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RadioButtonTemplate) + ADD_TYPE_INFO(::darkskin::RadioButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonButtonsTemplate) + ADD_TYPE_INFO(::darkskin::RibbonButtonsTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonGalleryDropdownButtonTemplate) + ADD_TYPE_INFO(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonGalleryItemListTemplate) + ADD_TYPE_INFO(::darkskin::RibbonGalleryItemListTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonGalleryTemplate) + ADD_TYPE_INFO(::darkskin::RibbonGalleryTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonGroupExpandButtonTemplate) + ADD_TYPE_INFO(::darkskin::RibbonGroupExpandButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonGroupMenuTemplate) + ADD_TYPE_INFO(::darkskin::RibbonGroupMenuTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonGroupTemplate) + ADD_TYPE_INFO(::darkskin::RibbonGroupTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonIconLabelTemplate) + ADD_TYPE_INFO(::darkskin::RibbonIconLabelTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonLargeButtonTemplate) + ADD_TYPE_INFO(::darkskin::RibbonLargeButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonLargeDropdownButtonTemplate) + ADD_TYPE_INFO(::darkskin::RibbonLargeDropdownButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonLargeSplitButtonTemplate) + ADD_TYPE_INFO(::darkskin::RibbonLargeSplitButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonSmallButtonTemplate) + ADD_TYPE_INFO(::darkskin::RibbonSmallButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonSmallDropdownButtonTemplate) + ADD_TYPE_INFO(::darkskin::RibbonSmallDropdownButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonSmallIconLabelTemplate) + ADD_TYPE_INFO(::darkskin::RibbonSmallIconLabelTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonSmallSplitButtonTemplate) + ADD_TYPE_INFO(::darkskin::RibbonSmallSplitButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonSplitArrowTemplate) + ADD_TYPE_INFO(::darkskin::RibbonSplitArrowTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonToolstripHeaderTemplate) + ADD_TYPE_INFO(::darkskin::RibbonToolstripHeaderTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonToolstripMenuTemplate) + ADD_TYPE_INFO(::darkskin::RibbonToolstripMenuTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RibbonToolstripsTemplate) + ADD_TYPE_INFO(::darkskin::RibbonToolstripsTemplateConstructor) + ADD_TYPE_INFO(::darkskin::RightScrollButtonTemplate) + ADD_TYPE_INFO(::darkskin::RightScrollButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ScrollViewTemplate) + ADD_TYPE_INFO(::darkskin::ScrollViewTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ShortcutKeyTemplate) + ADD_TYPE_INFO(::darkskin::ShortcutKeyTemplateConstructor) + ADD_TYPE_INFO(::darkskin::SinglelineTextBoxTemplate) + ADD_TYPE_INFO(::darkskin::SinglelineTextBoxTemplateConstructor) + ADD_TYPE_INFO(::darkskin::TabHeaderButtonTemplate) + ADD_TYPE_INFO(::darkskin::TabHeaderButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::TabHeaderTemplate) + ADD_TYPE_INFO(::darkskin::TabHeaderTemplateConstructor) + ADD_TYPE_INFO(::darkskin::TabTemplate) + ADD_TYPE_INFO(::darkskin::TabTemplateConstructor) + ADD_TYPE_INFO(::darkskin::TextListTemplate) + ADD_TYPE_INFO(::darkskin::TextListTemplateConstructor) + ADD_TYPE_INFO(::darkskin::Theme) + ADD_TYPE_INFO(::darkskin::ThemeConstructor) + ADD_TYPE_INFO(::darkskin::ToolstripButtonTemplate) + ADD_TYPE_INFO(::darkskin::ToolstripButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplate) + ADD_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ToolstripMenuTemplate) + ADD_TYPE_INFO(::darkskin::ToolstripMenuTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplate) + ADD_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplate) + ADD_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ToolstripSplitterTemplate) + ADD_TYPE_INFO(::darkskin::ToolstripSplitterTemplateConstructor) + ADD_TYPE_INFO(::darkskin::ToolstripTemplate) + ADD_TYPE_INFO(::darkskin::ToolstripTemplateConstructor) + ADD_TYPE_INFO(::darkskin::TooltipTemplate) + ADD_TYPE_INFO(::darkskin::TooltipTemplateConstructor) + ADD_TYPE_INFO(::darkskin::TopScrollButtonTemplate) + ADD_TYPE_INFO(::darkskin::TopScrollButtonTemplateConstructor) + ADD_TYPE_INFO(::darkskin::TreeViewTemplate) + ADD_TYPE_INFO(::darkskin::TreeViewTemplateConstructor) + ADD_TYPE_INFO(::darkskin::VScrollHandleTemplate) + ADD_TYPE_INFO(::darkskin::VScrollHandleTemplateConstructor) + ADD_TYPE_INFO(::darkskin::VScrollTemplate) + ADD_TYPE_INFO(::darkskin::VScrollTemplateConstructor) + ADD_TYPE_INFO(::darkskin::VTrackerTemplate) + ADD_TYPE_INFO(::darkskin::VTrackerTemplateConstructor) + ADD_TYPE_INFO(::darkskin::WindowTemplate) + ADD_TYPE_INFO(::darkskin::WindowTemplateConstructor) + } + + void Unload(ITypeManager* manager) + { + } + }; +#endif + + bool LoadDarkSkinTypes() + { +#ifndef VCZH_DEBUG_NO_REFLECTION + if (auto manager = GetGlobalTypeManager()) + { + return manager->AddTypeLoader(MakePtr()); + } +#endif + return false; + } + } + } +} + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(__clang__) +#pragma clang diagnostic pop +#endif + diff --git a/Import/DarkSkinReflection.h b/Import/DarkSkinReflection.h new file mode 100644 index 00000000..7db78cb2 --- /dev/null +++ b/Import/DarkSkinReflection.h @@ -0,0 +1,207 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "DarkSkin.h" +#include "GacUIReflection.h" +#include "GacUI.h" +#include "VlppParser.h" +#include "VlppWorkflowLibrary.h" +#include "VlppReflection.h" +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" + +/*********************************************************************** +.\DARKSKINREFLECTION.H +***********************************************************************/ +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! + +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DARKSKINREFLECTION +#define VCZH_WORKFLOW_COMPILER_GENERATED_DARKSKINREFLECTION + +#ifndef VCZH_DEBUG_NO_REFLECTION +#endif + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#endif + +/*********************************************************************** +Reflection +***********************************************************************/ + +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + DECL_TYPE_INFO(::darkskin::BottomScrollButtonTemplate) + DECL_TYPE_INFO(::darkskin::BottomScrollButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ButtonTemplate) + DECL_TYPE_INFO(::darkskin::ButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::CheckBoxTemplate) + DECL_TYPE_INFO(::darkskin::CheckBoxTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ComboBoxTemplate) + DECL_TYPE_INFO(::darkskin::ComboBoxTemplateConstructor) + DECL_TYPE_INFO(::darkskin::CustomControlTemplate) + DECL_TYPE_INFO(::darkskin::CustomControlTemplateConstructor) + DECL_TYPE_INFO(::darkskin::DateButtonTemplate) + DECL_TYPE_INFO(::darkskin::DateButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::DatePickerTemplate) + DECL_TYPE_INFO(::darkskin::DatePickerTemplateConstructor) + DECL_TYPE_INFO(::darkskin::DocumentLabelTemplate) + DECL_TYPE_INFO(::darkskin::DocumentLabelTemplateConstructor) + DECL_TYPE_INFO(::darkskin::DocumentTextBoxTemplate) + DECL_TYPE_INFO(::darkskin::DocumentTextBoxTemplateConstructor) + DECL_TYPE_INFO(::darkskin::DocumentViewerTemplate) + DECL_TYPE_INFO(::darkskin::DocumentViewerTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ExpandingDecoratorTemplate) + DECL_TYPE_INFO(::darkskin::ExpandingDecoratorTemplateConstructor) + DECL_TYPE_INFO(::darkskin::GroupBoxTemplate) + DECL_TYPE_INFO(::darkskin::GroupBoxTemplateConstructor) + DECL_TYPE_INFO(::darkskin::HScrollHandleTemplate) + DECL_TYPE_INFO(::darkskin::HScrollHandleTemplateConstructor) + DECL_TYPE_INFO(::darkskin::HScrollTemplate) + DECL_TYPE_INFO(::darkskin::HScrollTemplateConstructor) + DECL_TYPE_INFO(::darkskin::HTrackerTemplate) + DECL_TYPE_INFO(::darkskin::HTrackerTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ItemBackgroundTemplate) + DECL_TYPE_INFO(::darkskin::ItemBackgroundTemplateConstructor) + DECL_TYPE_INFO(::darkskin::LabelTemplate) + DECL_TYPE_INFO(::darkskin::LabelTemplateConstructor) + DECL_TYPE_INFO(::darkskin::LeftScrollButtonTemplate) + DECL_TYPE_INFO(::darkskin::LeftScrollButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ListViewColumnHeaderTemplate) + DECL_TYPE_INFO(::darkskin::ListViewColumnHeaderTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ListViewTemplate) + DECL_TYPE_INFO(::darkskin::ListViewTemplateConstructor) + DECL_TYPE_INFO(::darkskin::MenuBarButtonTemplate) + DECL_TYPE_INFO(::darkskin::MenuBarButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::MenuItemButtonTemplate) + DECL_TYPE_INFO(::darkskin::MenuItemButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::MenuSplitterTemplate) + DECL_TYPE_INFO(::darkskin::MenuSplitterTemplateConstructor) + DECL_TYPE_INFO(::darkskin::MultilineTextBoxTemplate) + DECL_TYPE_INFO(::darkskin::MultilineTextBoxTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ProgressBarTemplate) + DECL_TYPE_INFO(::darkskin::ProgressBarTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RadioButtonTemplate) + DECL_TYPE_INFO(::darkskin::RadioButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonButtonsTemplate) + DECL_TYPE_INFO(::darkskin::RibbonButtonsTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonGalleryDropdownButtonTemplate) + DECL_TYPE_INFO(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonGalleryItemListTemplate) + DECL_TYPE_INFO(::darkskin::RibbonGalleryItemListTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonGalleryTemplate) + DECL_TYPE_INFO(::darkskin::RibbonGalleryTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonGroupExpandButtonTemplate) + DECL_TYPE_INFO(::darkskin::RibbonGroupExpandButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonGroupMenuTemplate) + DECL_TYPE_INFO(::darkskin::RibbonGroupMenuTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonGroupTemplate) + DECL_TYPE_INFO(::darkskin::RibbonGroupTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonIconLabelTemplate) + DECL_TYPE_INFO(::darkskin::RibbonIconLabelTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonLargeButtonTemplate) + DECL_TYPE_INFO(::darkskin::RibbonLargeButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonLargeDropdownButtonTemplate) + DECL_TYPE_INFO(::darkskin::RibbonLargeDropdownButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonLargeSplitButtonTemplate) + DECL_TYPE_INFO(::darkskin::RibbonLargeSplitButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonSmallButtonTemplate) + DECL_TYPE_INFO(::darkskin::RibbonSmallButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonSmallDropdownButtonTemplate) + DECL_TYPE_INFO(::darkskin::RibbonSmallDropdownButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonSmallIconLabelTemplate) + DECL_TYPE_INFO(::darkskin::RibbonSmallIconLabelTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonSmallSplitButtonTemplate) + DECL_TYPE_INFO(::darkskin::RibbonSmallSplitButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonSplitArrowTemplate) + DECL_TYPE_INFO(::darkskin::RibbonSplitArrowTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonToolstripHeaderTemplate) + DECL_TYPE_INFO(::darkskin::RibbonToolstripHeaderTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonToolstripMenuTemplate) + DECL_TYPE_INFO(::darkskin::RibbonToolstripMenuTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RibbonToolstripsTemplate) + DECL_TYPE_INFO(::darkskin::RibbonToolstripsTemplateConstructor) + DECL_TYPE_INFO(::darkskin::RightScrollButtonTemplate) + DECL_TYPE_INFO(::darkskin::RightScrollButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ScrollViewTemplate) + DECL_TYPE_INFO(::darkskin::ScrollViewTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ShortcutKeyTemplate) + DECL_TYPE_INFO(::darkskin::ShortcutKeyTemplateConstructor) + DECL_TYPE_INFO(::darkskin::SinglelineTextBoxTemplate) + DECL_TYPE_INFO(::darkskin::SinglelineTextBoxTemplateConstructor) + DECL_TYPE_INFO(::darkskin::TabHeaderButtonTemplate) + DECL_TYPE_INFO(::darkskin::TabHeaderButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::TabHeaderTemplate) + DECL_TYPE_INFO(::darkskin::TabHeaderTemplateConstructor) + DECL_TYPE_INFO(::darkskin::TabTemplate) + DECL_TYPE_INFO(::darkskin::TabTemplateConstructor) + DECL_TYPE_INFO(::darkskin::TextListTemplate) + DECL_TYPE_INFO(::darkskin::TextListTemplateConstructor) + DECL_TYPE_INFO(::darkskin::Theme) + DECL_TYPE_INFO(::darkskin::ThemeConstructor) + DECL_TYPE_INFO(::darkskin::ToolstripButtonTemplate) + DECL_TYPE_INFO(::darkskin::ToolstripButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplate) + DECL_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ToolstripMenuTemplate) + DECL_TYPE_INFO(::darkskin::ToolstripMenuTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplate) + DECL_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplate) + DECL_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ToolstripSplitterTemplate) + DECL_TYPE_INFO(::darkskin::ToolstripSplitterTemplateConstructor) + DECL_TYPE_INFO(::darkskin::ToolstripTemplate) + DECL_TYPE_INFO(::darkskin::ToolstripTemplateConstructor) + DECL_TYPE_INFO(::darkskin::TooltipTemplate) + DECL_TYPE_INFO(::darkskin::TooltipTemplateConstructor) + DECL_TYPE_INFO(::darkskin::TopScrollButtonTemplate) + DECL_TYPE_INFO(::darkskin::TopScrollButtonTemplateConstructor) + DECL_TYPE_INFO(::darkskin::TreeViewTemplate) + DECL_TYPE_INFO(::darkskin::TreeViewTemplateConstructor) + DECL_TYPE_INFO(::darkskin::VScrollHandleTemplate) + DECL_TYPE_INFO(::darkskin::VScrollHandleTemplateConstructor) + DECL_TYPE_INFO(::darkskin::VScrollTemplate) + DECL_TYPE_INFO(::darkskin::VScrollTemplateConstructor) + DECL_TYPE_INFO(::darkskin::VTrackerTemplate) + DECL_TYPE_INFO(::darkskin::VTrackerTemplateConstructor) + DECL_TYPE_INFO(::darkskin::WindowTemplate) + DECL_TYPE_INFO(::darkskin::WindowTemplateConstructor) +#endif + + extern bool LoadDarkSkinTypes(); + } + } +} + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(__clang__) +#pragma clang diagnostic pop +#endif + +#endif + diff --git a/Import/GacUI.h b/Import/GacUI.h index 796668aa..a0613fe3 100644 --- a/Import/GacUI.h +++ b/Import/GacUI.h @@ -2,8 +2,12 @@ THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY DEVELOPER: Zihan Chen(vczh) ***********************************************************************/ -#include "Vlpp.h" +#include "VlppParser.h" #include "VlppWorkflowLibrary.h" +#include "VlppReflection.h" +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" /*********************************************************************** .\GUITYPES.H diff --git a/Import/GacUICompiler.h b/Import/GacUICompiler.h index 40ba456c..d8f8e51c 100644 --- a/Import/GacUICompiler.h +++ b/Import/GacUICompiler.h @@ -5,8 +5,12 @@ DEVELOPER: Zihan Chen(vczh) #include "GacUIReflection.h" #include "GacUI.h" #include "VlppWorkflowCompiler.h" -#include "Vlpp.h" +#include "VlppParser.h" #include "VlppWorkflowLibrary.h" +#include "VlppReflection.h" +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" #include "VlppWorkflowRuntime.h" /*********************************************************************** diff --git a/Import/GacUIReflection.h b/Import/GacUIReflection.h index 1f77c1d6..f509fb58 100644 --- a/Import/GacUIReflection.h +++ b/Import/GacUIReflection.h @@ -4,8 +4,12 @@ DEVELOPER: Zihan Chen(vczh) ***********************************************************************/ #include "GacUI.h" #include "VlppWorkflowCompiler.h" -#include "Vlpp.h" +#include "VlppParser.h" #include "VlppWorkflowLibrary.h" +#include "VlppReflection.h" +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" #include "VlppWorkflowRuntime.h" /*********************************************************************** diff --git a/Import/GacUIWindows.cpp b/Import/GacUIWindows.cpp index fc35a923..d0228eb5 100644 --- a/Import/GacUIWindows.cpp +++ b/Import/GacUIWindows.cpp @@ -7938,70 +7938,48 @@ namespace vl { namespace windows { +#define USE_API(NAME, API) static auto proc_##API = (decltype(&API))(GetProcAddress(GetModuleHandle(L#NAME), #API)) + void InitDpiAwareness(bool dpiAware) { + USE_API(user32, SetProcessDpiAwarenessContext); + USE_API(shcore, SetProcessDpiAwareness); + + if(proc_SetProcessDpiAwarenessContext) { - HMODULE moduleHandle = LoadLibrary(L"user32"); - bool available = GetProcAddress(moduleHandle, "SetProcessDpiAwarenessContext") != NULL; - FreeLibrary(moduleHandle); - if (available) - { - SetProcessDpiAwarenessContext(dpiAware ? DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2: DPI_AWARENESS_CONTEXT_UNAWARE); - return; - } + proc_SetProcessDpiAwarenessContext(dpiAware ? DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2: DPI_AWARENESS_CONTEXT_UNAWARE); + return; } + + if(proc_SetProcessDpiAwareness) { - HMODULE moduleHandle = LoadLibrary(L"Shcore"); - bool available = GetProcAddress(moduleHandle, "SetProcessDpiAwareness") != NULL; - FreeLibrary(moduleHandle); - if (available) - { - SetProcessDpiAwareness(dpiAware ? PROCESS_PER_MONITOR_DPI_AWARE : PROCESS_DPI_UNAWARE); - return; - } + proc_SetProcessDpiAwareness(dpiAware ? PROCESS_PER_MONITOR_DPI_AWARE : PROCESS_DPI_UNAWARE); + return; } } void DpiAwared_GetDpiForMonitor(HMONITOR monitor, UINT* x, UINT* y) { - static bool initialized = false; - static bool available_GetDpiForMonitor = false; - if (!initialized) - { - initialized = true; - HMODULE moduleHandle = LoadLibrary(L"Shcore"); - available_GetDpiForMonitor = GetProcAddress(moduleHandle, "GetDpiForMonitor") != NULL; - FreeLibrary(moduleHandle); - } + USE_API(shcore, GetDpiForMonitor); - if (!available_GetDpiForMonitor) + if (proc_GetDpiForMonitor) { - *x = 96; - *y = 96; - } - - if (GetDpiForMonitor(monitor, MDT_DEFAULT, x, y) != S_OK) - { - *x = 96; - *y = 96; + if (proc_GetDpiForMonitor(monitor, MDT_DEFAULT, x, y) == S_OK) + { + return; + } } + *x = 96; + *y = 96; } void DpiAwared_GetDpiForWindow(HWND handle, UINT* x, UINT* y) { - static bool initialized = false; - static bool available_GetDpiForWindow = false; - if (!initialized) - { - initialized = true; - HMODULE moduleHandle = LoadLibrary(L"user32"); - available_GetDpiForWindow = GetProcAddress(moduleHandle, "GetDpiForWindow") != NULL; - FreeLibrary(moduleHandle); - } + USE_API(user32, GetDpiForWindow); - if (available_GetDpiForWindow) + if (proc_GetDpiForWindow) { - *x = *y = GetDpiForWindow(handle); + *x = *y = proc_GetDpiForWindow(handle); } else { @@ -8019,19 +7997,11 @@ namespace vl void DpiAwared_AdjustWindowRect(LPRECT rect, HWND handle, UINT dpi) { - static bool initialized = false; - static bool available_AdjustWindowRectExForDpi = false; - if (!initialized) - { - initialized = true; - HMODULE moduleHandle = LoadLibrary(L"user32"); - available_AdjustWindowRectExForDpi = GetProcAddress(moduleHandle, "AdjustWindowRectExForDpi") != NULL; - FreeLibrary(moduleHandle); - } + USE_API(user32, AdjustWindowRectExForDpi); - if (available_AdjustWindowRectExForDpi) + if (proc_AdjustWindowRectExForDpi) { - AdjustWindowRectExForDpi(rect, (DWORD)GetWindowLongPtr(handle, GWL_STYLE), FALSE, (DWORD)GetWindowLongPtr(handle, GWL_EXSTYLE), dpi); + proc_AdjustWindowRectExForDpi(rect, (DWORD)GetWindowLongPtr(handle, GWL_STYLE), FALSE, (DWORD)GetWindowLongPtr(handle, GWL_EXSTYLE), dpi); } else { @@ -8041,25 +8011,19 @@ namespace vl int DpiAwared_GetSystemMetrics(int index, UINT dpi) { - static bool initialized = false; - static bool available_GetSystemMetricsForDpi = false; - if (!initialized) - { - initialized = true; - HMODULE moduleHandle = LoadLibrary(L"user32"); - available_GetSystemMetricsForDpi = GetProcAddress(moduleHandle, "GetSystemMetricsForDpi") != NULL; - FreeLibrary(moduleHandle); - } + USE_API(user32, GetSystemMetricsForDpi); - if (available_GetSystemMetricsForDpi) + if (proc_GetSystemMetricsForDpi) { - return GetSystemMetricsForDpi(index, dpi); + return proc_GetSystemMetricsForDpi(index, dpi); } else { return GetSystemMetrics(index); } } + +#undef USE_API } } } diff --git a/Import/GacUIWindows.h b/Import/GacUIWindows.h index 5744fb81..d6233d16 100644 --- a/Import/GacUIWindows.h +++ b/Import/GacUIWindows.h @@ -3,8 +3,12 @@ THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY DEVELOPER: Zihan Chen(vczh) ***********************************************************************/ #include "GacUI.h" -#include "Vlpp.h" +#include "VlppParser.h" #include "VlppWorkflowLibrary.h" +#include "VlppReflection.h" +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" /*********************************************************************** .\GRAPHICSELEMENT\WINDOWSDIRECT2D\GUIGRAPHICSWINDOWSDIRECT2D.H diff --git a/Import/Vlpp.cpp b/Import/Vlpp.cpp index fc2b2c12..75569cb9 100644 --- a/Import/Vlpp.cpp +++ b/Import/Vlpp.cpp @@ -454,828 +454,6 @@ ParsingException } } -/*********************************************************************** -.\FILESYSTEM.CPP -***********************************************************************/ -#if defined VCZH_MSVC -#include -#pragma comment(lib, "Shlwapi.lib") -#elif defined VCZH_GCC -#include -#include -#include -#endif - -namespace vl -{ - namespace filesystem - { - using namespace collections; - using namespace stream; - - // ReadDirectoryChangesW - -/*********************************************************************** -FilePath -***********************************************************************/ - -#if defined VCZH_GCC - const wchar_t FilePath::Delimiter; -#endif - - void FilePath::Initialize() - { - { - Array buffer(fullPath.Length() + 1); -#if defined VCZH_MSVC - wcscpy_s(&buffer[0], fullPath.Length() + 1, fullPath.Buffer()); -#elif defined VCZH_GCC - wcscpy(&buffer[0], fullPath.Buffer()); -#endif - for (vint i = 0; i < buffer.Count(); i++) - { - if (buffer[i] == L'\\' || buffer[i] == L'/') - { - buffer[i] = Delimiter; - } - } - fullPath = &buffer[0]; - } - -#if defined VCZH_MSVC - if (fullPath != L"") - { - if (fullPath.Length() < 2 || fullPath[1] != L':') - { - wchar_t buffer[MAX_PATH + 1] = { 0 }; - auto result = GetCurrentDirectory(sizeof(buffer) / sizeof(*buffer), buffer); - if (result > MAX_PATH + 1 || result == 0) - { - throw ArgumentException(L"Failed to call GetCurrentDirectory.", L"vl::filesystem::FilePath::Initialize", L""); - } - fullPath = WString(buffer) + L"\\" + fullPath; - } - { - wchar_t buffer[MAX_PATH + 1] = { 0 }; - if (fullPath.Length() == 2 && fullPath[1] == L':') - { - fullPath += L"\\"; - } - auto result = GetFullPathName(fullPath.Buffer(), sizeof(buffer) / sizeof(*buffer), buffer, NULL); - if (result > MAX_PATH + 1 || result == 0) - { - throw ArgumentException(L"The path is illegal.", L"vl::filesystem::FilePath::FilePath", L"_filePath"); - } - fullPath = buffer; - } - } -#elif defined VCZH_GCC - if (fullPath.Length() == 0) - fullPath = L"/"; - - if (fullPath[0] != Delimiter) - { - char buffer[PATH_MAX] = { 0 }; - getcwd(buffer, PATH_MAX); - fullPath = atow(AString(buffer)) + Delimiter + fullPath; - } - - { - collections::List components; - GetPathComponents(fullPath, components); - for(int i = 0; i < components.Count(); i++) - { - if(components[i] == L".") - { - components.RemoveAt(i); - i--; - } - else if(components[i] == L"..") - { - if(i > 0) - { - components.RemoveAt(i); - components.RemoveAt(i - 1); - i -= 2; - } - else - { - throw ArgumentException(L"Illegal path."); - } - } - } - - fullPath = ComponentsToPath(components); - } -#endif - if (fullPath != L"/" && fullPath.Length() > 0 && fullPath[fullPath.Length() - 1] == Delimiter) - { - fullPath = fullPath.Left(fullPath.Length() - 1); - } - } - - FilePath::FilePath() - { - } - - FilePath::FilePath(const WString& _filePath) - :fullPath(_filePath) - { - Initialize(); - } - - FilePath::FilePath(const wchar_t* _filePath) - :fullPath(_filePath) - { - Initialize(); - } - - FilePath::FilePath(const FilePath& _filePath) - :fullPath(_filePath.fullPath) - { - Initialize(); - } - - FilePath::~FilePath() - { - } - - vint FilePath::Compare(const FilePath& a, const FilePath& b) - { - return WString::Compare(a.fullPath, b.fullPath); - } - - FilePath FilePath::operator/(const WString& relativePath)const - { - if (IsRoot()) - { - return relativePath; - } - else - { - return fullPath + L"/" + relativePath; - } - } - - bool FilePath::IsFile()const - { -#if defined VCZH_MSVC - WIN32_FILE_ATTRIBUTE_DATA info; - BOOL result = GetFileAttributesEx(fullPath.Buffer(), GetFileExInfoStandard, &info); - if (!result) return false; - return (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0; -#elif defined VCZH_GCC - struct stat info; - AString path = wtoa(fullPath); - int result = stat(path.Buffer(), &info); - if(result != 0) return false; - else return S_ISREG(info.st_mode); -#endif - } - - bool FilePath::IsFolder()const - { -#if defined VCZH_MSVC - WIN32_FILE_ATTRIBUTE_DATA info; - BOOL result = GetFileAttributesEx(fullPath.Buffer(), GetFileExInfoStandard, &info); - if (!result) return false; - return (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0; -#elif defined VCZH_GCC - struct stat info; - AString path = wtoa(fullPath); - int result = stat(path.Buffer(), &info); - if(result != 0) return false; - else return S_ISDIR(info.st_mode); -#endif - } - - bool FilePath::IsRoot()const - { -#if defined VCZH_MSVC - return fullPath == L""; -#elif defined VCZH_GCC - return fullPath == L"/"; -#endif - } - - WString FilePath::GetName()const - { - WString delimiter = Delimiter; - auto index = INVLOC.FindLast(fullPath, delimiter, Locale::None); - if (index.key == -1) return fullPath; - return fullPath.Right(fullPath.Length() - index.key - 1); - } - - FilePath FilePath::GetFolder()const - { - WString delimiter = Delimiter; - auto index = INVLOC.FindLast(fullPath, delimiter, Locale::None); - if (index.key == -1) return FilePath(); - return fullPath.Left(index.key); - } - - WString FilePath::GetFullPath()const - { - return fullPath; - } - - WString FilePath::GetRelativePathFor(const FilePath& _filePath) - { - if (fullPath.Length()==0 || _filePath.fullPath.Length()==0 || fullPath[0] != _filePath.fullPath[0]) - { - return _filePath.fullPath; - } -#if defined VCZH_MSVC - wchar_t buffer[MAX_PATH + 1] = { 0 }; - PathRelativePathTo( - buffer, - fullPath.Buffer(), - (IsFolder() ? FILE_ATTRIBUTE_DIRECTORY : 0), - _filePath.fullPath.Buffer(), - (_filePath.IsFolder() ? FILE_ATTRIBUTE_DIRECTORY : 0) - ); - return buffer; -#elif defined VCZH_GCC - collections::List srcComponents, tgtComponents, resultComponents; - GetPathComponents(IsFolder() ? fullPath : GetFolder().GetFullPath(), srcComponents); - GetPathComponents(_filePath.fullPath, tgtComponents); - - int minLength = srcComponents.Count() <= tgtComponents.Count() ? srcComponents.Count() : tgtComponents.Count(); - int lastCommonComponent = 0; - for(int i = 0; i < minLength; i++) - { - if(srcComponents[i] == tgtComponents[i]) - { - lastCommonComponent = i; - } - else - break; - } - - for(int i = lastCommonComponent + 1; i < srcComponents.Count(); i++) - { - resultComponents.Add(L".."); - } - - for(int i = lastCommonComponent + 1; i < tgtComponents.Count(); i++) - { - resultComponents.Add(tgtComponents[i]); - } - - return ComponentsToPath(resultComponents); -#endif - } - - void FilePath::GetPathComponents(WString path, collections::List& components) - { - WString pathRemaining = path; - WString delimiter = Delimiter; - - components.Clear(); - - while(true) - { - auto index = INVLOC.FindFirst(pathRemaining, delimiter, Locale::None); - if (index.key == -1) - break; - - if(index.key != 0) - components.Add(pathRemaining.Left(index.key)); - else - { -#if defined VCZH_GCC - // Unix absolute path starting with "/" - // components[0] will be L"/" - components.Add(delimiter); -#elif defined VCZH_MSVC - if(pathRemaining.Length() >= 2 && pathRemaining[1] == Delimiter) - { - // Windows UNC Path starting with "\\" - // components[0] will be L"\\" - components.Add(L"\\"); - index.value++; - } -#endif - } - - pathRemaining = pathRemaining.Right(pathRemaining.Length() - (index.key + index.value)); - } - - if(pathRemaining.Length() != 0) - { - components.Add(pathRemaining); - } - } - - WString FilePath::ComponentsToPath(const collections::List& components) - { - WString result; - WString delimiter = Delimiter; - - int i = 0; - -#if defined VCZH_GCC - // For Unix-like OSes, if first component is "/" then take it as absolute path - if(components.Count() > 0 && components[0] == delimiter) - { - result += delimiter; - i++; - } -#elif defined VCZH_MSVC - // For Windows, if first component is "\\" then it is an UNC path - if(components.Count() > 0 && components[0] == L"\\") - { - result += delimiter; - i++; - } -#endif - - for(; i < components.Count(); i++) - { - result += components[i]; - if(i + 1 < components.Count()) - result += delimiter; - } - - return result; - } - -/*********************************************************************** -File -***********************************************************************/ - - File::File() - { - } - - File::File(const FilePath& _filePath) - :filePath(_filePath) - { - } - - File::~File() - { - } - - const FilePath& File::GetFilePath()const - { - return filePath; - } - - bool File::ReadAllTextWithEncodingTesting(WString& text, stream::BomEncoder::Encoding& encoding, bool& containsBom) - { - Array buffer; - { - FileStream fileStream(filePath.GetFullPath(), FileStream::ReadOnly); - if (!fileStream.IsAvailable()) return false; - if (fileStream.Size() == 0) - { - text = L""; - encoding = BomEncoder::Mbcs; - containsBom = false; - return true; - } - - buffer.Resize((vint)fileStream.Size()); - vint count = fileStream.Read(&buffer[0], buffer.Count()); - CHECK_ERROR(count == buffer.Count(), L"vl::filesystem::File::ReadAllTextWithEncodingTesting(WString&, BomEncoder::Encoding&, bool&)#Failed to read the whole file."); - } - TestEncoding(&buffer[0], buffer.Count(), encoding, containsBom); - - MemoryWrapperStream memoryStream(&buffer[0], buffer.Count()); - if (containsBom) - { - BomDecoder decoder; - DecoderStream decoderStream(memoryStream, decoder); - StreamReader reader(decoderStream); - text = reader.ReadToEnd(); - } - else - { - switch (encoding) - { - case BomEncoder::Utf8: - { - Utf8Decoder decoder; - DecoderStream decoderStream(memoryStream, decoder); - StreamReader reader(decoderStream); - text = reader.ReadToEnd(); - } - break; - case BomEncoder::Utf16: - { - Utf16Decoder decoder; - DecoderStream decoderStream(memoryStream, decoder); - StreamReader reader(decoderStream); - text = reader.ReadToEnd(); - } - break; - case BomEncoder::Utf16BE: - { - Utf16BEDecoder decoder; - DecoderStream decoderStream(memoryStream, decoder); - StreamReader reader(decoderStream); - text = reader.ReadToEnd(); - } - break; - default: - { - MbcsDecoder decoder; - DecoderStream decoderStream(memoryStream, decoder); - StreamReader reader(decoderStream); - text = reader.ReadToEnd(); - } - } - } - return true; - } - - WString File::ReadAllTextByBom()const - { - WString text; - ReadAllTextByBom(text); - return text; - } - - bool File::ReadAllTextByBom(WString& text)const - { - FileStream fileStream(filePath.GetFullPath(), FileStream::ReadOnly); - if (!fileStream.IsAvailable()) return false; - BomDecoder decoder; - DecoderStream decoderStream(fileStream, decoder); - StreamReader reader(decoderStream); - text = reader.ReadToEnd(); - return true; - } - - bool File::ReadAllLinesByBom(collections::List& lines)const - { - FileStream fileStream(filePath.GetFullPath(), FileStream::ReadOnly); - if (!fileStream.IsAvailable()) return false; - BomDecoder decoder; - DecoderStream decoderStream(fileStream, decoder); - StreamReader reader(decoderStream); - while (!reader.IsEnd()) - { - lines.Add(reader.ReadLine()); - } - return true; - } - - bool File::WriteAllText(const WString& text, bool bom, stream::BomEncoder::Encoding encoding) - { - FileStream fileStream(filePath.GetFullPath(), FileStream::WriteOnly); - if (!fileStream.IsAvailable()) return false; - - IEncoder* encoder = nullptr; - if (bom) - { - encoder = new BomEncoder(encoding); - } - else switch (encoding) - { - case BomEncoder::Utf8: - encoder = new Utf8Encoder; - break; - case BomEncoder::Utf16: - encoder = new Utf16Encoder; - break; - case BomEncoder::Utf16BE: - encoder = new Utf16BEEncoder; - break; - default: - encoder = new MbcsEncoder; - break; - } - - { - EncoderStream encoderStream(fileStream, *encoder); - StreamWriter writer(encoderStream); - writer.WriteString(text); - } - delete encoder; - return true; - } - - bool File::WriteAllLines(collections::List& lines, bool bom, stream::BomEncoder::Encoding encoding) - { - FileStream fileStream(filePath.GetFullPath(), FileStream::WriteOnly); - if (!fileStream.IsAvailable()) return false; - - IEncoder* encoder = nullptr; - if (bom) - { - encoder = new BomEncoder(encoding); - } - else switch (encoding) - { - case BomEncoder::Utf8: - encoder = new Utf8Encoder; - break; - case BomEncoder::Utf16: - encoder = new Utf16Encoder; - break; - case BomEncoder::Utf16BE: - encoder = new Utf16BEEncoder; - break; - default: - encoder = new MbcsEncoder; - break; - } - - { - EncoderStream encoderStream(fileStream, *encoder); - StreamWriter writer(encoderStream); - FOREACH(WString, line, lines) - { - writer.WriteLine(line); - } - } - delete encoder; - return true; - } - - bool File::Exists()const - { - return filePath.IsFile(); - } - - bool File::Delete()const - { -#if defined VCZH_MSVC - return DeleteFile(filePath.GetFullPath().Buffer()) != 0; -#elif defined VCZH_GCC - AString path = wtoa(filePath.GetFullPath()); - return unlink(path.Buffer()) == 0; -#endif - } - - bool File::Rename(const WString& newName)const - { -#if defined VCZH_MSVC - WString oldFileName = filePath.GetFullPath(); - WString newFileName = (filePath.GetFolder() / newName).GetFullPath(); - return MoveFile(oldFileName.Buffer(), newFileName.Buffer()) != 0; -#elif defined VCZH_GCC - AString oldFileName = wtoa(filePath.GetFullPath()); - AString newFileName = wtoa((filePath.GetFolder() / newName).GetFullPath()); - return rename(oldFileName.Buffer(), newFileName.Buffer()) == 0; -#endif - } - -/*********************************************************************** -Folder -***********************************************************************/ - - Folder::Folder() - { - } - - Folder::Folder(const FilePath& _filePath) - :filePath(_filePath) - { - } - - Folder::~Folder() - { - } - - const FilePath& Folder::GetFilePath()const - { - return filePath; - } - - bool Folder::GetFolders(collections::List& folders)const - { -#if defined VCZH_MSVC - if (filePath.IsRoot()) - { - auto bufferSize = GetLogicalDriveStrings(0, nullptr); - if (bufferSize > 0) - { - Array buffer(bufferSize); - if (GetLogicalDriveStrings((DWORD)buffer.Count(), &buffer[0]) > 0) - { - auto begin = &buffer[0]; - auto end = begin + buffer.Count(); - while (begin < end && *begin) - { - WString driveString = begin; - begin += driveString.Length() + 1; - folders.Add(Folder(FilePath(driveString))); - } - return true; - } - } - return false; - } - else - { - if (!Exists()) return false; - WIN32_FIND_DATA findData; - HANDLE findHandle = INVALID_HANDLE_VALUE; - - while (true) - { - if (findHandle == INVALID_HANDLE_VALUE) - { - WString searchPath = (filePath / L"*").GetFullPath(); - findHandle = FindFirstFile(searchPath.Buffer(), &findData); - if (findHandle == INVALID_HANDLE_VALUE) - { - break; - } - } - else - { - BOOL result = FindNextFile(findHandle, &findData); - if (result == 0) - { - FindClose(findHandle); - break; - } - } - - if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) - { - if (wcscmp(findData.cFileName, L".") != 0 && wcscmp(findData.cFileName, L"..") != 0) - { - folders.Add(Folder(filePath / findData.cFileName)); - } - } - } - return true; - } -#elif defined VCZH_GCC - if (!Exists()) return false; - - DIR *dir; - AString searchPath = wtoa(filePath.GetFullPath()); - - if ((dir = opendir(searchPath.Buffer())) == NULL) - { - return false; - } - - struct dirent* entry; - while ((entry = readdir(dir)) != NULL) - { - WString childName = atow(AString(entry->d_name)); - FilePath childFullPath = filePath / childName; - if (childName != L"." && childName != L".." && childFullPath.IsFolder()) - { - folders.Add(Folder(childFullPath)); - } - } - - if (closedir(dir) != 0) - { - return false; - } - - return true; -#endif - } - - bool Folder::GetFiles(collections::List& files)const - { -#if defined VCZH_MSVC - if (filePath.IsRoot()) - { - return true; - } - if (!Exists()) return false; - WIN32_FIND_DATA findData; - HANDLE findHandle = INVALID_HANDLE_VALUE; - - while (true) - { - if (findHandle == INVALID_HANDLE_VALUE) - { - WString searchPath = (filePath / L"*").GetFullPath(); - findHandle = FindFirstFile(searchPath.Buffer(), &findData); - if (findHandle == INVALID_HANDLE_VALUE) - { - break; - } - } - else - { - BOOL result = FindNextFile(findHandle, &findData); - if (result == 0) - { - FindClose(findHandle); - break; - } - } - - if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) - { - files.Add(File(filePath / findData.cFileName)); - } - } - return true; -#elif defined VCZH_GCC - if (!Exists()) return false; - - DIR *dir; - AString searchPath = wtoa(filePath.GetFullPath()); - - if ((dir = opendir(searchPath.Buffer())) == NULL) - { - return false; - } - - struct dirent* entry; - while ((entry = readdir(dir)) != NULL) - { - FilePath childFullPath = filePath / (atow(AString(entry->d_name))); - if (childFullPath.IsFile()) - { - files.Add(File(childFullPath)); - } - } - - if (closedir(dir) != 0) - { - return false; - } - - return true; -#endif - } - - bool Folder::Exists()const - { - return filePath.IsFolder(); - } - - bool Folder::Create(bool recursively)const - { - if (recursively) - { - auto folder = filePath.GetFolder(); - if (folder.IsFile()) return false; - if (folder.IsFolder()) return Create(false); - return Folder(folder).Create(true) && Create(false); - } - else - { -#if defined VCZH_MSVC - return CreateDirectory(filePath.GetFullPath().Buffer(), NULL) != 0; -#elif defined VCZH_GCC - AString path = wtoa(filePath.GetFullPath()); - return mkdir(path.Buffer(), 0777) == 0; -#endif - } - } - - bool Folder::Delete(bool recursively)const - { - if (!Exists()) return false; - - if (recursively) - { - List folders; - GetFolders(folders); - FOREACH(Folder, folder, folders) - { - if (!folder.Delete(true)) return false; - } - - List files; - GetFiles(files); - FOREACH(File, file, files) - { - if (!file.Delete()) return false; - } - - return Delete(false); - } -#if defined VCZH_MSVC - return RemoveDirectory(filePath.GetFullPath().Buffer()) != 0; -#elif defined VCZH_GCC - AString path = wtoa(filePath.GetFullPath()); - return rmdir(path.Buffer()) == 0; -#endif - } - - bool Folder::Rename(const WString& newName)const - { -#if defined VCZH_MSVC - WString oldFileName = filePath.GetFullPath(); - WString newFileName = (filePath.GetFolder() / newName).GetFullPath(); - return MoveFile(oldFileName.Buffer(), newFileName.Buffer()) != 0; -#elif defined VCZH_GCC - AString oldFileName = wtoa(filePath.GetFullPath()); - AString newFileName = wtoa((filePath.GetFolder() / newName).GetFullPath()); - return rename(oldFileName.Buffer(), newFileName.Buffer()) == 0; -#endif - } - } -} - - /*********************************************************************** .\GLOBALSTORAGE.CPP ***********************************************************************/ @@ -1356,1020 +534,14 @@ Helper Functions } -/*********************************************************************** -.\HTTPUTILITY.CPP -***********************************************************************/ - -#ifdef VCZH_MSVC -#include - -#pragma comment(lib, "WinHttp.lib") - -namespace vl -{ - using namespace collections; - -/*********************************************************************** -HttpRequest -***********************************************************************/ - - HttpRequest::HttpRequest() - :port(0) - ,secure(false) - { - } - - bool HttpRequest::SetHost(const WString& inputQuery) - { - server=L""; - query=L""; - port=0; - secure=false; - - { - if(server==L"") - { - if(inputQuery.Length()>7) - { - WString protocol=inputQuery.Sub(0, 8); - if(_wcsicmp(protocol.Buffer(), L"https://")==0) - { - const wchar_t* reading=inputQuery.Buffer()+8; - const wchar_t* index1=wcschr(reading, L':'); - const wchar_t* index2=wcschr(reading, L'/'); - if(index2) - { - query=index2; - server=WString(reading, (index1?index1:index2)-reading); - port=INTERNET_DEFAULT_HTTPS_PORT; - secure=true; - if(index1) - { - WString portString(index1+1, index2-index1-1); - port=_wtoi(portString.Buffer()); - } - return true; - } - } - } - } - if(server==L"") - { - if(inputQuery.Length()>6) - { - WString protocol=inputQuery.Sub(0, 7); - if(_wcsicmp(protocol.Buffer(), L"http://")==0) - { - const wchar_t* reading=inputQuery.Buffer()+7; - const wchar_t* index1=wcschr(reading, L':'); - const wchar_t* index2=wcschr(reading, L'/'); - if(index2) - { - query=index2; - server=WString(reading, (index1?index1:index2)-reading); - port=INTERNET_DEFAULT_HTTP_PORT; - if(index1) - { - WString portString(index1+1, index2-index1-1); - port=_wtoi(portString.Buffer()); - } - return true; - } - } - } - } - } - return false; - } - - void HttpRequest::SetBodyUtf8(const WString& bodyString) - { - vint utf8Size=WideCharToMultiByte(CP_UTF8, 0, bodyString.Buffer(), (int)bodyString.Length(), NULL, 0, NULL, NULL); - char* utf8=new char[utf8Size+1]; - ZeroMemory(utf8, utf8Size+1); - WideCharToMultiByte(CP_UTF8, 0, bodyString.Buffer(), (int)bodyString.Length(), utf8, (int)utf8Size, NULL, NULL); - - body.Resize(utf8Size); - memcpy(&body[0], utf8, utf8Size); - delete[] utf8; - } - -/*********************************************************************** -HttpResponse -***********************************************************************/ - - HttpResponse::HttpResponse() - :statusCode(0) - { - } - - WString HttpResponse::GetBodyUtf8() - { - WString response; - char* utf8=&body[0]; - vint totalSize=body.Count(); - vint utf16Size=MultiByteToWideChar(CP_UTF8, 0, utf8, (int)totalSize, NULL, 0); - wchar_t* utf16=new wchar_t[utf16Size+1]; - ZeroMemory(utf16, (utf16Size+1)*sizeof(wchar_t)); - MultiByteToWideChar(CP_UTF8, 0, utf8, (int)totalSize, utf16, (int)utf16Size); - response=utf16; - delete[] utf16; - return response; - } - -/*********************************************************************** -Utilities -***********************************************************************/ - - struct BufferPair - { - char* buffer; - vint length; - - BufferPair() - :buffer(0) - ,length(0) - { - } - - BufferPair(char* _buffer, vint _length) - :buffer(_buffer) - ,length(_length) - { - } - - bool operator==(const BufferPair& pair){return false;} - bool operator!=(const BufferPair& pair){return true;} - }; - - bool HttpQuery(const HttpRequest& request, HttpResponse& response) - { - // initialize - response.statusCode=-1; - HINTERNET internet=NULL; - HINTERNET connectedInternet=NULL; - HINTERNET requestInternet=NULL; - BOOL httpResult=FALSE; - DWORD error=0; - List acceptTypes; - List availableBuffers; - - // access http - internet=WinHttpOpen(L"vczh", WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0); - error=GetLastError(); - if(!internet) goto CLEANUP; - - // connect - connectedInternet=WinHttpConnect(internet, request.server.Buffer(), (int)request.port, 0); - error=GetLastError(); - if(!connectedInternet) goto CLEANUP; - - // open request - for(vint i=0;i0) - { - httpResult=WinHttpSendRequest(requestInternet, WINHTTP_NO_ADDITIONAL_HEADERS, 0, (LPVOID)&request.body.Get(0), (int)request.body.Count(), (int)request.body.Count(), NULL); - } - else - { - httpResult=WinHttpSendRequest(requestInternet, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, NULL); - } - error=GetLastError(); - if(httpResult==FALSE) goto CLEANUP; - - // receive response - httpResult=WinHttpReceiveResponse(requestInternet, NULL); - error=GetLastError(); - if(httpResult!=TRUE) goto CLEANUP; - - // read response status code - { - DWORD headerLength=sizeof(DWORD); - DWORD statusCode=0; - httpResult=WinHttpQueryHeaders(requestInternet, WINHTTP_QUERY_STATUS_CODE|WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_HEADER_NAME_BY_INDEX, &statusCode, &headerLength, WINHTTP_NO_HEADER_INDEX); - error=GetLastError(); - if(httpResult==FALSE) goto CLEANUP; - response.statusCode=statusCode; - } - // read respons cookie - { - DWORD headerLength=sizeof(DWORD); - httpResult=WinHttpQueryHeaders(requestInternet, WINHTTP_QUERY_RAW_HEADERS_CRLF, WINHTTP_HEADER_NAME_BY_INDEX, NULL, &headerLength, WINHTTP_NO_HEADER_INDEX); - error=GetLastError(); - if(error==ERROR_INSUFFICIENT_BUFFER) - { - wchar_t* rawHeader=new wchar_t[headerLength/sizeof(wchar_t)]; - ZeroMemory(rawHeader, headerLength); - httpResult=WinHttpQueryHeaders(requestInternet, WINHTTP_QUERY_RAW_HEADERS_CRLF, WINHTTP_HEADER_NAME_BY_INDEX, rawHeader, &headerLength, WINHTTP_NO_HEADER_INDEX); - - const wchar_t* cookieStart=wcsstr(rawHeader, L"Cookie:"); - if(cookieStart) - { - const wchar_t* cookieEnd=wcsstr(cookieStart, L";"); - if(cookieEnd) - { - response.cookie=WString(cookieStart+7, cookieEnd-cookieStart-7); - } - } - delete[] rawHeader; - } - } - - // read response body - while(true) - { - DWORD bytesAvailable=0; - BOOL queryDataAvailableResult=WinHttpQueryDataAvailable(requestInternet, &bytesAvailable); - error=GetLastError(); - if(queryDataAvailableResult==TRUE && bytesAvailable!=0) - { - char* utf8=new char[bytesAvailable]; - DWORD bytesRead=0; - BOOL readDataResult=WinHttpReadData(requestInternet, utf8, bytesAvailable, &bytesRead); - error=GetLastError(); - if(readDataResult==TRUE) - { - availableBuffers.Add(BufferPair(utf8, bytesRead)); - } - else - { - delete[] utf8; - } - } - else - { - break; - } - } - - { - // concatincate response body - vint totalSize = 0; - FOREACH(BufferPair, p, availableBuffers) - { - totalSize += p.length; - } - response.body.Resize(totalSize); - if (totalSize > 0) - { - char* utf8 = new char[totalSize]; - { - char* temp = utf8; - FOREACH(BufferPair, p, availableBuffers) - { - memcpy(temp, p.buffer, p.length); - temp += p.length; - } - } - memcpy(&response.body[0], utf8, totalSize); - delete[] utf8; - } - FOREACH(BufferPair, p, availableBuffers) - { - delete[] p.buffer; - } - } - CLEANUP: - if(requestInternet) WinHttpCloseHandle(requestInternet); - if(connectedInternet) WinHttpCloseHandle(connectedInternet); - if(internet) WinHttpCloseHandle(internet); - return response.statusCode!=-1; - } - - WString UrlEncodeQuery(const WString& query) - { - vint utf8Size=WideCharToMultiByte(CP_UTF8, 0, query.Buffer(),(int) query.Length(), NULL, 0, NULL, NULL); - char* utf8=new char[utf8Size+1]; - ZeroMemory(utf8, utf8Size+1); - WideCharToMultiByte(CP_UTF8, 0, query.Buffer(), (int)query.Length(), utf8, (int)utf8Size, NULL, NULL); - - wchar_t* encoded=new wchar_t[utf8Size*3+1]; - ZeroMemory(encoded, (utf8Size*3+1)*sizeof(wchar_t)); - wchar_t* writing=encoded; - for(vint i=0;i -#include -#endif - -namespace vl -{ - using namespace collections; - -#if defined VCZH_MSVC - - extern SYSTEMTIME DateTimeToSystemTime(const DateTime& dateTime); - - BOOL CALLBACK Locale_EnumLocalesProcEx( - _In_ LPWSTR lpLocaleString, - _In_ DWORD dwFlags, - _In_ LPARAM lParam - ) - { - ((List*)lParam)->Add(Locale(lpLocaleString)); - return TRUE; - } - - BOOL CALLBACK Locale_EnumDateFormatsProcExEx( - _In_ LPWSTR lpDateFormatString, - _In_ CALID CalendarID, - _In_ LPARAM lParam - ) - { - ((List*)lParam)->Add(lpDateFormatString); - return TRUE; - } - - BOOL CALLBACK EnumTimeFormatsProcEx( - _In_ LPWSTR lpTimeFormatString, - _In_ LPARAM lParam - ) - { - ((List*)lParam)->Add(lpTimeFormatString); - return TRUE; - } - - WString Transform(const WString& localeName, const WString& input, DWORD flag) - { - int length=LCMapStringEx(localeName.Buffer(), flag, input.Buffer(), (int)input.Length()+1, NULL, 0, NULL, NULL, NULL); - Array buffer(length); - LCMapStringEx(localeName.Buffer(), flag, input.Buffer(), (int)input.Length()+1, &buffer[0], (int)buffer.Count(), NULL, NULL, NULL); - return &buffer[0]; - } - - DWORD TranslateNormalization(Locale::Normalization normalization) - { - DWORD result=0; - if(normalization&Locale::IgnoreCase) result|=NORM_IGNORECASE; - if(normalization&Locale::IgnoreCaseLinguistic) result|=NORM_IGNORECASE | NORM_LINGUISTIC_CASING; - if(normalization&Locale::IgnoreKanaType) result|=NORM_IGNOREKANATYPE; - if(normalization&Locale::IgnoreNonSpace) result|=NORM_IGNORENONSPACE; - if(normalization&Locale::IgnoreSymbol) result|=NORM_IGNORESYMBOLS; - if(normalization&Locale::IgnoreWidth) result|=NORM_IGNOREWIDTH; - if(normalization&Locale::DigitsAsNumbers) result|=SORT_DIGITSASNUMBERS; - if(normalization&Locale::StringSoft) result|=SORT_STRINGSORT; - return result; - } - -#endif - -/*********************************************************************** -Locale -***********************************************************************/ - - Locale::Locale(const WString& _localeName) - :localeName(_localeName) - { - } - - Locale::~Locale() - { - } - - Locale Locale::Invariant() - { -#if defined VCZH_MSVC - return Locale(LOCALE_NAME_INVARIANT); -#elif defined VCZH_GCC - return Locale(L""); -#endif - } - - Locale Locale::SystemDefault() - { -#if defined VCZH_MSVC - wchar_t buffer[LOCALE_NAME_MAX_LENGTH+1]={0}; - GetSystemDefaultLocaleName(buffer, LOCALE_NAME_MAX_LENGTH); - return Locale(buffer); -#elif defined VCZH_GCC - return Locale(L"en-US"); -#endif - } - - Locale Locale::UserDefault() - { -#if defined VCZH_MSVC - wchar_t buffer[LOCALE_NAME_MAX_LENGTH+1]={0}; - GetUserDefaultLocaleName(buffer, LOCALE_NAME_MAX_LENGTH); - return Locale(buffer); -#elif defined VCZH_GCC - return Locale(L"en-US"); -#endif - } - - void Locale::Enumerate(collections::List& locales) - { -#if defined VCZH_MSVC - EnumSystemLocalesEx(&Locale_EnumLocalesProcEx, LOCALE_ALL, (LPARAM)&locales, NULL); -#elif defined VCZH_GCC - locales.Add(Locale(L"en-US")); -#endif - } - - const WString& Locale::GetName()const - { - return localeName; - } - - void Locale::GetShortDateFormats(collections::List& formats)const - { -#if defined VCZH_MSVC - EnumDateFormatsExEx(&Locale_EnumDateFormatsProcExEx, localeName.Buffer(), DATE_SHORTDATE, (LPARAM)&formats); -#elif defined VCZH_GCC - formats.Add(L"MM/dd/yyyy"); - formats.Add(L"yyyy-MM-dd"); -#endif - } - - void Locale::GetLongDateFormats(collections::List& formats)const - { -#if defined VCZH_MSVC - EnumDateFormatsExEx(&Locale_EnumDateFormatsProcExEx, localeName.Buffer(), DATE_LONGDATE, (LPARAM)&formats); -#elif defined VCZH_GCC - formats.Add(L"dddd, dd MMMM yyyy"); -#endif - } - - void Locale::GetYearMonthDateFormats(collections::List& formats)const - { -#if defined VCZH_MSVC - EnumDateFormatsExEx(&Locale_EnumDateFormatsProcExEx, localeName.Buffer(), DATE_YEARMONTH, (LPARAM)&formats); -#elif defined VCZH_GCC - formats.Add(L"yyyy MMMM"); -#endif - } - - void Locale::GetLongTimeFormats(collections::List& formats)const - { -#if defined VCZH_MSVC - EnumTimeFormatsEx(&EnumTimeFormatsProcEx, localeName.Buffer(), 0, (LPARAM)&formats); -#elif defined VCZH_GCC - formats.Add(L"HH:mm:ss"); -#endif - } - - void Locale::GetShortTimeFormats(collections::List& formats)const - { -#if defined VCZH_MSVC - EnumTimeFormatsEx(&EnumTimeFormatsProcEx, localeName.Buffer(), TIME_NOSECONDS, (LPARAM)&formats); -#elif defined VCZH_GCC - formats.Add(L"HH:mm"); - formats.Add(L"hh:mm tt"); -#endif - } - - WString Locale::FormatDate(const WString& format, DateTime date)const - { -#if defined VCZH_MSVC - SYSTEMTIME st=DateTimeToSystemTime(date); - int length=GetDateFormatEx(localeName.Buffer(), 0, &st, format.Buffer(), NULL, 0, NULL); - if(length==0) return L""; - Array buffer(length); - GetDateFormatEx(localeName.Buffer(), 0, &st, format.Buffer(), &buffer[0], (int)buffer.Count(), NULL); - return &buffer[0]; -#elif defined VCZH_GCC - /* - auto df = L"yyyy,MM,MMM,MMMM,dd,ddd,dddd"; - auto ds = L"2000,01,Jan,January,02,Sun,Sunday"; - auto tf = L"hh,HH,mm,ss,tt"; - auto ts = L"01,13,02,03,PM"; - */ - WString result; - const wchar_t* reading = format.Buffer(); - - while (*reading) - { - if (wcsncmp(reading, L"yyyy", 4) == 0) - { - WString fragment = itow(date.year); - while (fragment.Length() < 4) fragment = L"0" + fragment; - result += fragment; - reading += 4; - } - else if (wcsncmp(reading, L"MMMM", 4) == 0) - { - result += GetLongMonthName(date.month); - reading += 4; - } - else if (wcsncmp(reading, L"MMM", 3) == 0) - { - result += GetShortMonthName(date.month); - reading += 3; - } - else if (wcsncmp(reading, L"MM", 2) == 0) - { - WString fragment = itow(date.month); - while (fragment.Length() < 2) fragment = L"0" + fragment; - result += fragment; - reading += 2; - } - else if (wcsncmp(reading, L"dddd", 4) == 0) - { - result += GetLongDayOfWeekName(date.dayOfWeek); - reading += 4; - } - else if (wcsncmp(reading, L"ddd", 3) == 0) - { - result += GetShortDayOfWeekName(date.dayOfWeek); - reading += 3; - } - else if (wcsncmp(reading, L"dd", 2) == 0) - { - WString fragment = itow(date.day); - while (fragment.Length() < 2) fragment = L"0" + fragment; - result += fragment; - reading += 2; - } - else if (wcsncmp(reading, L"hh", 2) == 0) - { - WString fragment = itow(date.hour > 12 ? date.hour - 12 : date.hour); - while (fragment.Length() < 2) fragment = L"0" + fragment; - result += fragment; - reading += 2; - } - else if (wcsncmp(reading, L"HH", 2) == 0) - { - WString fragment = itow(date.hour); - while (fragment.Length() < 2) fragment = L"0" + fragment; - result += fragment; - reading += 2; - } - else if (wcsncmp(reading, L"mm", 2) == 0) - { - WString fragment = itow(date.minute); - while (fragment.Length() < 2) fragment = L"0" + fragment; - result += fragment; - reading += 2; - } - else if (wcsncmp(reading, L"ss", 2) == 0) - { - WString fragment = itow(date.second); - while (fragment.Length() < 2) fragment = L"0" + fragment; - result += fragment; - reading += 2; - } - else if (wcsncmp(reading, L"tt", 2) == 0) - { - result += date.hour > 12 ? L"PM" : L"AM"; - reading += 2; - } - else - { - result += *reading; - reading++; - } - } - return result; -#endif - } - - WString Locale::FormatTime(const WString& format, DateTime time)const - { -#if defined VCZH_MSVC - SYSTEMTIME st=DateTimeToSystemTime(time); - int length=GetTimeFormatEx(localeName.Buffer(), 0, &st, format.Buffer(), NULL, 0); - if(length==0) return L""; - Array buffer(length); - GetTimeFormatEx(localeName.Buffer(), 0, &st, format.Buffer(),&buffer[0], (int)buffer.Count()); - return &buffer[0]; -#elif defined VCZH_GCC - return FormatDate(format, time); -#endif - } - - WString Locale::FormatNumber(const WString& number)const - { -#ifdef VCZH_MSVC - int length=GetNumberFormatEx(localeName.Buffer(), 0, number.Buffer(), NULL, NULL, 0); - if(length==0) return L""; - Array buffer(length); - GetNumberFormatEx(localeName.Buffer(), 0, number.Buffer(), NULL, &buffer[0], (int)buffer.Count()); - return &buffer[0]; -#elif defined VCZH_GCC - return number; -#endif - } - - WString Locale::FormatCurrency(const WString& currency)const - { -#ifdef VCZH_MSVC - int length=GetCurrencyFormatEx(localeName.Buffer(), 0, currency.Buffer(), NULL, NULL, 0); - if(length==0) return L""; - Array buffer(length); - GetCurrencyFormatEx(localeName.Buffer(), 0, currency.Buffer(), NULL, &buffer[0], (int)buffer.Count()); - return &buffer[0]; -#elif defined VCZH_GCC - return currency; -#endif - } - - WString Locale::GetShortDayOfWeekName(vint dayOfWeek)const - { -#if defined VCZH_MSVC - return FormatDate(L"ddd", DateTime::FromDateTime(2000, 1, 2+dayOfWeek)); -#elif defined VCZH_GCC - switch(dayOfWeek) - { - case 0: return L"Sun"; - case 1: return L"Mon"; - case 2: return L"Tue"; - case 3: return L"Wed"; - case 4: return L"Thu"; - case 5: return L"Fri"; - case 6: return L"Sat"; - } - return L""; -#endif - } - - WString Locale::GetLongDayOfWeekName(vint dayOfWeek)const - { -#if defined VCZH_MSVC - return FormatDate(L"dddd", DateTime::FromDateTime(2000, 1, 2+dayOfWeek)); -#elif defined VCZH_GCC - switch(dayOfWeek) - { - case 0: return L"Sunday"; - case 1: return L"Monday"; - case 2: return L"Tuesday"; - case 3: return L"Wednesday"; - case 4: return L"Thursday"; - case 5: return L"Friday"; - case 6: return L"Saturday"; - } - return L""; -#endif - } - - WString Locale::GetShortMonthName(vint month)const - { -#if defined VCZH_MSVC - return FormatDate(L"MMM", DateTime::FromDateTime(2000, month, 1)); -#elif defined VCZH_GCC - switch(month) - { - case 1: return L"Jan"; - case 2: return L"Feb"; - case 3: return L"Mar"; - case 4: return L"Apr"; - case 5: return L"May"; - case 6: return L"Jun"; - case 7: return L"Jul"; - case 8: return L"Aug"; - case 9: return L"Sep"; - case 10: return L"Oct"; - case 11: return L"Nov"; - case 12: return L"Dec"; - } - return L""; -#endif - } - - WString Locale::GetLongMonthName(vint month)const - { -#if defined VCZH_MSVC - return FormatDate(L"MMMM", DateTime::FromDateTime(2000, month, 1)); -#elif defined VCZH_GCC - switch(month) - { - case 1: return L"January"; - case 2: return L"February"; - case 3: return L"March"; - case 4: return L"April"; - case 5: return L"May"; - case 6: return L"June"; - case 7: return L"July"; - case 8: return L"August"; - case 9: return L"September"; - case 10: return L"October"; - case 11: return L"November"; - case 12: return L"December"; - } - return L""; -#endif - } - -#ifdef VCZH_MSVC - WString Locale::ToFullWidth(const WString& str)const - { - return Transform(localeName, str, LCMAP_FULLWIDTH); - } - - WString Locale::ToHalfWidth(const WString& str)const - { - return Transform(localeName, str, LCMAP_HALFWIDTH); - } - - WString Locale::ToHiragana(const WString& str)const - { - return Transform(localeName, str, LCMAP_HIRAGANA); - } - - WString Locale::ToKatagana(const WString& str)const - { - return Transform(localeName, str, LCMAP_KATAKANA); - } -#endif - - WString Locale::ToLower(const WString& str)const - { -#if defined VCZH_MSVC - return Transform(localeName, str, LCMAP_LOWERCASE); -#elif defined VCZH_GCC - return wlower(str); -#endif - } - - WString Locale::ToUpper(const WString& str)const - { -#if defined VCZH_MSVC - return Transform(localeName, str, LCMAP_UPPERCASE); -#elif defined VCZH_GCC - return wupper(str); -#endif - } - - WString Locale::ToLinguisticLower(const WString& str)const - { -#if defined VCZH_MSVC - return Transform(localeName, str, LCMAP_LOWERCASE | LCMAP_LINGUISTIC_CASING); -#elif defined VCZH_GCC - return wlower(str); -#endif - } - - WString Locale::ToLinguisticUpper(const WString& str)const - { -#if defined VCZH_MSVC - return Transform(localeName, str, LCMAP_UPPERCASE | LCMAP_LINGUISTIC_CASING); -#elif defined VCZH_GCC - return wupper(str); -#endif - } - -#ifdef VCZH_MSVC - WString Locale::ToSimplifiedChinese(const WString& str)const - { - return Transform(localeName, str, LCMAP_SIMPLIFIED_CHINESE); - } - - WString Locale::ToTraditionalChinese(const WString& str)const - { - return Transform(localeName, str, LCMAP_TRADITIONAL_CHINESE); - } - - WString Locale::ToTileCase(const WString& str)const - { - return Transform(localeName, str, LCMAP_TITLECASE); - } -#endif - - vint Locale::Compare(const WString& s1, const WString& s2, Normalization normalization)const - { -#if defined VCZH_MSVC - switch(CompareStringEx(localeName.Buffer(), TranslateNormalization(normalization), s1.Buffer(), (int)s1.Length(), s2.Buffer(), (int)s2.Length(), NULL, NULL, NULL)) - { - case CSTR_LESS_THAN: return -1; - case CSTR_GREATER_THAN: return 1; - default: return 0; - } -#elif defined VCZH_GCC - switch(normalization) - { - case Normalization::None: - return wcscmp(s1.Buffer(), s2.Buffer()); - case Normalization::IgnoreCase: - return wcscasecmp(s1.Buffer(), s2.Buffer()); - } -#endif - } - - vint Locale::CompareOrdinal(const WString& s1, const WString& s2)const - { -#if defined VCZH_MSVC - switch(CompareStringOrdinal(s1.Buffer(), (int)s1.Length(), s2.Buffer(), (int)s2.Length(), FALSE)) - { - case CSTR_LESS_THAN: return -1; - case CSTR_GREATER_THAN: return 1; - default: return 0; - } -#elif defined VCZH_GCC - return wcscmp(s1.Buffer(), s2.Buffer()); -#endif - } - - vint Locale::CompareOrdinalIgnoreCase(const WString& s1, const WString& s2)const - { -#if defined VCZH_MSVC - switch(CompareStringOrdinal(s1.Buffer(), (int)s1.Length(), s2.Buffer(), (int)s2.Length(), TRUE)) - { - case CSTR_LESS_THAN: return -1; - case CSTR_GREATER_THAN: return 1; - default: return 0; - } -#elif defined VCZH_GCC - return wcscasecmp(s1.Buffer(), s2.Buffer()); -#endif - } - - collections::Pair Locale::FindFirst(const WString& text, const WString& find, Normalization normalization)const - { -#if defined VCZH_MSVC - int length=0; - int result=FindNLSStringEx(localeName.Buffer(), FIND_FROMSTART | TranslateNormalization(normalization), text.Buffer(), (int)text.Length(), find.Buffer(), (int)find.Length(), &length, NULL, NULL, NULL); - return result==-1?Pair(-1, 0):Pair(result, length); -#elif defined VCZH_GCC - if(text.Length() < find.Length() || find.Length() == 0) - { - return Pair(-1, 0); - } - const wchar_t* result = 0; - switch(normalization) - { - case Normalization::None: - { - const wchar_t* reading = text.Buffer(); - while(*reading) - { - if (wcsncmp(reading, find.Buffer(), find.Length())==0) - { - result = reading; - break; - } - reading++; - } - } - break; - case Normalization::IgnoreCase: - { - const wchar_t* reading = text.Buffer(); - while(*reading) - { - if (wcsncasecmp(reading, find.Buffer(), find.Length())==0) - { - result = reading; - break; - } - reading++; - } - } - break; - } - return result == nullptr ? Pair(-1, 0) : Pair(result - text.Buffer(), find.Length()); -#endif - } - - collections::Pair Locale::FindLast(const WString& text, const WString& find, Normalization normalization)const - { -#if defined VCZH_MSVC - int length=0; - int result=FindNLSStringEx(localeName.Buffer(), FIND_FROMEND | TranslateNormalization(normalization), text.Buffer(), (int)text.Length(), find.Buffer(), (int)find.Length(), &length, NULL, NULL, NULL); - return result==-1?Pair(-1, 0):Pair(result, length); -#elif defined VCZH_GCC - if(text.Length() < find.Length() || find.Length() == 0) - { - return Pair(-1, 0); - } - const wchar_t* result = 0; - switch(normalization) - { - case Normalization::None: - { - const wchar_t* reading = text.Buffer(); - while(*reading) - { - if (wcsncmp(reading, find.Buffer(), find.Length())==0) - { - result = reading; - } - reading++; - } - } - break; - case Normalization::IgnoreCase: - { - const wchar_t* reading = text.Buffer(); - while(*reading) - { - if (wcsncasecmp(reading, find.Buffer(), find.Length())==0) - { - result = reading; - } - reading++; - } - } - break; - } - return result == nullptr ? Pair(-1, 0) : Pair(result - text.Buffer(), find.Length()); -#endif - } - - bool Locale::StartsWith(const WString& text, const WString& find, Normalization normalization)const - { -#if defined VCZH_MSVC - int result=FindNLSStringEx(localeName.Buffer(), FIND_STARTSWITH | TranslateNormalization(normalization), text.Buffer(), (int)text.Length(), find.Buffer(), (int)find.Length(), NULL, NULL, NULL, NULL); - return result!=-1; -#elif defined VCZH_GCC - if(text.Length() < find.Length() || find.Length() == 0) - { - return false; - } - switch(normalization) - { - case Normalization::None: - return wcsncmp(text.Buffer(), find.Buffer(), find.Length()) == 0; - case Normalization::IgnoreCase: - return wcsncasecmp(text.Buffer(), find.Buffer(), find.Length()) == 0; - } -#endif - } - - bool Locale::EndsWith(const WString& text, const WString& find, Normalization normalization)const - { -#if defined VCZH_MSVC - int result=FindNLSStringEx(localeName.Buffer(), FIND_ENDSWITH | TranslateNormalization(normalization), text.Buffer(), (int)text.Length(), find.Buffer(), (int)find.Length(), NULL, NULL, NULL, NULL); - return result!=-1; -#elif defined VCZH_GCC - if(text.Length() < find.Length() || find.Length() == 0) - { - return false; - } - switch(normalization) - { - case Normalization::None: - return wcsncmp(text.Buffer() + text.Length() - find.Length(), find.Buffer(), find.Length()) == 0; - case Normalization::IgnoreCase: - return wcsncasecmp(text.Buffer() + text.Length() - find.Length(), find.Buffer(), find.Length()) == 0; - } -#endif - } -} - - /*********************************************************************** .\STRING.CPP ***********************************************************************/ #if defined VCZH_MSVC #elif defined VCZH_GCC +#include +#include +#include #define _strtoi64 strtoll #define _strtoui64 strtoull #define _wcstoi64 wcstoll @@ -2907,1915 +1079,6 @@ namespace vl } -/*********************************************************************** -.\THREADING.CPP -***********************************************************************/ -#ifdef VCZH_MSVC - -namespace vl -{ - using namespace threading_internal; - using namespace collections; - -/*********************************************************************** -WaitableObject -***********************************************************************/ - - namespace threading_internal - { - struct WaitableData - { - HANDLE handle; - - WaitableData(HANDLE _handle) - :handle(_handle) - { - } - }; - } - - WaitableObject::WaitableObject() - :waitableData(0) - { - } - - void WaitableObject::SetData(threading_internal::WaitableData* data) - { - waitableData=data; - } - - bool WaitableObject::IsCreated() - { - return waitableData!=0; - } - - bool WaitableObject::Wait() - { - return WaitForTime(INFINITE); - } - - bool WaitableObject::WaitForTime(vint ms) - { - if(IsCreated()) - { - if(WaitForSingleObject(waitableData->handle, (DWORD)ms)==WAIT_OBJECT_0) - { - return true; - } - } - return false; - } - - bool WaitableObject::WaitAll(WaitableObject** objects, vint count) - { - Array handles(count); - for(vint i=0;iwaitableData->handle; - } - DWORD result=WaitForMultipleObjects((DWORD)count, &handles[0], TRUE, INFINITE); - return result==WAIT_OBJECT_0 || result==WAIT_ABANDONED_0; - - } - - bool WaitableObject::WaitAllForTime(WaitableObject** objects, vint count, vint ms) - { - Array handles(count); - for(vint i=0;iwaitableData->handle; - } - DWORD result=WaitForMultipleObjects((DWORD)count, &handles[0], TRUE, (DWORD)ms); - return result==WAIT_OBJECT_0 || result==WAIT_ABANDONED_0; - } - - vint WaitableObject::WaitAny(WaitableObject** objects, vint count, bool* abandoned) - { - Array handles(count); - for(vint i=0;iwaitableData->handle; - } - DWORD result=WaitForMultipleObjects((DWORD)count, &handles[0], FALSE, INFINITE); - if(WAIT_OBJECT_0 <= result && result handles(count); - for(vint i=0;iwaitableData->handle; - } - DWORD result=WaitForMultipleObjects((DWORD)count, &handles[0], FALSE, (DWORD)ms); - if(WAIT_OBJECT_0 <= result && resultdeleteAfterStopped; - ThreadLocalStorage::FixStorages(); - try - { - procedure(this, argument); - threadState=Thread::Stopped; - ThreadLocalStorage::ClearStorages(); - } - catch (...) - { - ThreadLocalStorage::ClearStorages(); - throw; - } - if(deleteAfterStopped) - { - delete this; - } - } - public: - ProceduredThread(Thread::ThreadProcedure _procedure, void* _argument, bool _deleteAfterStopped) - :procedure(_procedure) - ,argument(_argument) - ,deleteAfterStopped(_deleteAfterStopped) - { - } - }; - - class LambdaThread : public Thread - { - private: - Func procedure; - bool deleteAfterStopped; - - protected: - void Run() - { - bool deleteAfterStopped = this->deleteAfterStopped; - ThreadLocalStorage::FixStorages(); - try - { - procedure(); - threadState=Thread::Stopped; - ThreadLocalStorage::ClearStorages(); - } - catch (...) - { - ThreadLocalStorage::ClearStorages(); - throw; - } - if(deleteAfterStopped) - { - delete this; - } - } - public: - LambdaThread(const Func& _procedure, bool _deleteAfterStopped) - :procedure(_procedure) - ,deleteAfterStopped(_deleteAfterStopped) - { - } - }; - } - - void InternalThreadProc(Thread* thread) - { - thread->Run(); - } - - DWORD WINAPI InternalThreadProcWrapper(LPVOID lpParameter) - { - InternalThreadProc((Thread*)lpParameter); - return 0; - } - - Thread::Thread() - { - internalData=new ThreadData; - internalData->handle=CreateThread(NULL, 0, InternalThreadProcWrapper, this, CREATE_SUSPENDED, &internalData->id); - threadState=Thread::NotStarted; - SetData(internalData); - } - - Thread::~Thread() - { - if (internalData) - { - Stop(); - CloseHandle(internalData->handle); - delete internalData; - } - } - - Thread* Thread::CreateAndStart(ThreadProcedure procedure, void* argument, bool deleteAfterStopped) - { - if(procedure) - { - Thread* thread=new ProceduredThread(procedure, argument, deleteAfterStopped); - if(thread->Start()) - { - return thread; - } - else - { - delete thread; - } - } - return 0; - } - - Thread* Thread::CreateAndStart(const Func& procedure, bool deleteAfterStopped) - { - Thread* thread=new LambdaThread(procedure, deleteAfterStopped); - if(thread->Start()) - { - return thread; - } - else - { - delete thread; - } - return 0; - } - - void Thread::Sleep(vint ms) - { - ::Sleep((DWORD)ms); - } - - - vint Thread::GetCPUCount() - { - SYSTEM_INFO info; - GetSystemInfo(&info); - return info.dwNumberOfProcessors; - } - - vint Thread::GetCurrentThreadId() - { - return (vint)::GetCurrentThreadId(); - } - - bool Thread::Start() - { - if(threadState==Thread::NotStarted && internalData->handle!=NULL) - { - if(ResumeThread(internalData->handle)!=-1) - { - threadState=Thread::Running; - return true; - } - } - return false; - } - - bool Thread::Stop() - { - if(internalData->handle!=NULL) - { - if (SuspendThread(internalData->handle) != -1) - { - threadState=Thread::Stopped; - return true; - } - } - return false; - } - - Thread::ThreadState Thread::GetState() - { - return threadState; - } - - void Thread::SetCPU(vint index) - { - SetThreadAffinityMask(internalData->handle, ((vint)1 << index)); - } - -/*********************************************************************** -Mutex -***********************************************************************/ - - namespace threading_internal - { - struct MutexData : public WaitableData - { - MutexData(HANDLE _handle) - :WaitableData(_handle) - { - } - }; - } - - Mutex::Mutex() - :internalData(0) - { - } - - Mutex::~Mutex() - { - if(internalData) - { - CloseHandle(internalData->handle); - delete internalData; - } - } - - bool Mutex::Create(bool owned, const WString& name) - { - if(IsCreated())return false; - BOOL aOwned=owned?TRUE:FALSE; - LPCTSTR aName=name==L""?NULL:name.Buffer(); - HANDLE handle=CreateMutex(NULL, aOwned, aName); - if(handle) - { - internalData=new MutexData(handle); - SetData(internalData); - } - return IsCreated(); - } - - bool Mutex::Open(bool inheritable, const WString& name) - { - if(IsCreated())return false; - BOOL aInteritable=inheritable?TRUE:FALSE; - HANDLE handle=OpenMutex(SYNCHRONIZE, aInteritable, name.Buffer()); - if(handle) - { - internalData=new MutexData(handle); - SetData(internalData); - } - return IsCreated(); - } - - bool Mutex::Release() - { - if(IsCreated()) - { - return ReleaseMutex(internalData->handle)!=0; - } - return false; - } - -/*********************************************************************** -Semaphore -***********************************************************************/ - - namespace threading_internal - { - struct SemaphoreData : public WaitableData - { - SemaphoreData(HANDLE _handle) - :WaitableData(_handle) - { - } - }; - } - - Semaphore::Semaphore() - :internalData(0) - { - } - - Semaphore::~Semaphore() - { - if(internalData) - { - CloseHandle(internalData->handle); - delete internalData; - } - } - - bool Semaphore::Create(vint initialCount, vint maxCount, const WString& name) - { - if(IsCreated())return false; - LONG aInitial=(LONG)initialCount; - LONG aMax=(LONG)maxCount; - LPCTSTR aName=name==L""?NULL:name.Buffer(); - HANDLE handle=CreateSemaphore(NULL, aInitial, aMax, aName); - if(handle) - { - internalData=new SemaphoreData(handle); - SetData(internalData); - } - return IsCreated(); - } - - bool Semaphore::Open(bool inheritable, const WString& name) - { - if(IsCreated())return false; - BOOL aInteritable=inheritable?TRUE:FALSE; - HANDLE handle=OpenSemaphore(SYNCHRONIZE, aInteritable, name.Buffer()); - if(handle) - { - internalData=new SemaphoreData(handle); - SetData(internalData); - } - return IsCreated(); - } - - bool Semaphore::Release() - { - if(IsCreated()) - { - return Release(1)!=-1; - } - return false; - } - - vint Semaphore::Release(vint count) - { - if(IsCreated()) - { - LONG previous=-1; - if(ReleaseSemaphore(internalData->handle, (LONG)count, &previous)!=0) - { - return (vint)previous; - } - } - return -1; - } - -/*********************************************************************** -EventObject -***********************************************************************/ - - namespace threading_internal - { - struct EventData : public WaitableData - { - EventData(HANDLE _handle) - :WaitableData(_handle) - { - } - }; - } - - EventObject::EventObject() - :internalData(0) - { - } - - EventObject::~EventObject() - { - if(internalData) - { - CloseHandle(internalData->handle); - delete internalData; - } - } - - bool EventObject::CreateAutoUnsignal(bool signaled, const WString& name) - { - if(IsCreated())return false; - BOOL aSignaled=signaled?TRUE:FALSE; - LPCTSTR aName=name==L""?NULL:name.Buffer(); - HANDLE handle=CreateEvent(NULL, FALSE, aSignaled, aName); - if(handle) - { - internalData=new EventData(handle); - SetData(internalData); - } - return IsCreated(); - } - - bool EventObject::CreateManualUnsignal(bool signaled, const WString& name) - { - if(IsCreated())return false; - BOOL aSignaled=signaled?TRUE:FALSE; - LPCTSTR aName=name==L""?NULL:name.Buffer(); - HANDLE handle=CreateEvent(NULL, TRUE, aSignaled, aName); - if(handle) - { - internalData=new EventData(handle); - SetData(internalData); - } - return IsCreated(); - } - - bool EventObject::Open(bool inheritable, const WString& name) - { - if(IsCreated())return false; - BOOL aInteritable=inheritable?TRUE:FALSE; - HANDLE handle=OpenEvent(SYNCHRONIZE, aInteritable, name.Buffer()); - if(handle) - { - internalData=new EventData(handle); - SetData(internalData); - } - return IsCreated(); - } - - bool EventObject::Signal() - { - if(IsCreated()) - { - return SetEvent(internalData->handle)!=0; - } - return false; - } - - bool EventObject::Unsignal() - { - if(IsCreated()) - { - return ResetEvent(internalData->handle)!=0; - } - return false; - } - -/*********************************************************************** -ThreadPoolLite -***********************************************************************/ - - struct ThreadPoolQueueProcArgument - { - void(*proc)(void*); - void* argument; - }; - - DWORD WINAPI ThreadPoolQueueProc(void* argument) - { - Ptr proc=(ThreadPoolQueueProcArgument*)argument; - ThreadLocalStorage::FixStorages(); - try - { - proc->proc(proc->argument); - ThreadLocalStorage::ClearStorages(); - } - catch (...) - { - ThreadLocalStorage::ClearStorages(); - } - return 0; - } - - DWORD WINAPI ThreadPoolQueueFunc(void* argument) - { - Ptr> proc=(Func*)argument; - ThreadLocalStorage::FixStorages(); - try - { - (*proc.Obj())(); - ThreadLocalStorage::ClearStorages(); - } - catch (...) - { - ThreadLocalStorage::ClearStorages(); - } - return 0; - } - - ThreadPoolLite::ThreadPoolLite() - { - } - - ThreadPoolLite::~ThreadPoolLite() - { - } - - bool ThreadPoolLite::Queue(void(*proc)(void*), void* argument) - { - ThreadPoolQueueProcArgument* p=new ThreadPoolQueueProcArgument; - p->proc=proc; - p->argument=argument; - if(QueueUserWorkItem(&ThreadPoolQueueProc, p, WT_EXECUTEDEFAULT)) - { - return true; - } - else - { - delete p; - return false; - } - } - - bool ThreadPoolLite::Queue(const Func& proc) - { - Func* p=new Func(proc); - if(QueueUserWorkItem(&ThreadPoolQueueFunc, p, WT_EXECUTEDEFAULT)) - { - return true; - } - else - { - delete p; - return false; - } - } - -/*********************************************************************** -CriticalSection -***********************************************************************/ - - namespace threading_internal - { - struct CriticalSectionData - { - CRITICAL_SECTION criticalSection; - }; - } - - CriticalSection::Scope::Scope(CriticalSection& _criticalSection) - :criticalSection(&_criticalSection) - { - criticalSection->Enter(); - } - - CriticalSection::Scope::~Scope() - { - criticalSection->Leave(); - } - - CriticalSection::CriticalSection() - { - internalData=new CriticalSectionData; - InitializeCriticalSection(&internalData->criticalSection); - } - - CriticalSection::~CriticalSection() - { - DeleteCriticalSection(&internalData->criticalSection); - delete internalData; - } - - bool CriticalSection::TryEnter() - { - return TryEnterCriticalSection(&internalData->criticalSection)!=0; - } - - void CriticalSection::Enter() - { - EnterCriticalSection(&internalData->criticalSection); - } - - void CriticalSection::Leave() - { - LeaveCriticalSection(&internalData->criticalSection); - } - -/*********************************************************************** -ReaderWriterLock -***********************************************************************/ - - namespace threading_internal - { - struct ReaderWriterLockData - { - SRWLOCK lock; - }; - } - - ReaderWriterLock::ReaderScope::ReaderScope(ReaderWriterLock& _lock) - :lock(&_lock) - { - lock->EnterReader(); - } - - ReaderWriterLock::ReaderScope::~ReaderScope() - { - lock->LeaveReader(); - } - - ReaderWriterLock::WriterScope::WriterScope(ReaderWriterLock& _lock) - :lock(&_lock) - { - lock->EnterWriter(); - } - - ReaderWriterLock::WriterScope::~WriterScope() - { - lock->LeaveWriter(); - } - - ReaderWriterLock::ReaderWriterLock() - :internalData(new threading_internal::ReaderWriterLockData) - { - InitializeSRWLock(&internalData->lock); - } - - ReaderWriterLock::~ReaderWriterLock() - { - delete internalData; - } - - bool ReaderWriterLock::TryEnterReader() - { - return TryAcquireSRWLockShared(&internalData->lock)!=0; - } - - void ReaderWriterLock::EnterReader() - { - AcquireSRWLockShared(&internalData->lock); - } - - void ReaderWriterLock::LeaveReader() - { - ReleaseSRWLockShared(&internalData->lock); - } - - bool ReaderWriterLock::TryEnterWriter() - { - return TryAcquireSRWLockExclusive(&internalData->lock)!=0; - } - - void ReaderWriterLock::EnterWriter() - { - AcquireSRWLockExclusive(&internalData->lock); - } - - void ReaderWriterLock::LeaveWriter() - { - ReleaseSRWLockExclusive(&internalData->lock); - } - -/*********************************************************************** -ConditionVariable -***********************************************************************/ - - namespace threading_internal - { - struct ConditionVariableData - { - CONDITION_VARIABLE variable; - }; - } - - ConditionVariable::ConditionVariable() - :internalData(new threading_internal::ConditionVariableData) - { - InitializeConditionVariable(&internalData->variable); - } - - ConditionVariable::~ConditionVariable() - { - delete internalData; - } - - bool ConditionVariable::SleepWith(CriticalSection& cs) - { - return SleepConditionVariableCS(&internalData->variable, &cs.internalData->criticalSection, INFINITE)!=0; - } - - bool ConditionVariable::SleepWithForTime(CriticalSection& cs, vint ms) - { - return SleepConditionVariableCS(&internalData->variable, &cs.internalData->criticalSection, (DWORD)ms)!=0; - } - - bool ConditionVariable::SleepWithReader(ReaderWriterLock& lock) - { - return SleepConditionVariableSRW(&internalData->variable, &lock.internalData->lock, INFINITE, CONDITION_VARIABLE_LOCKMODE_SHARED)!=0; - } - - bool ConditionVariable::SleepWithReaderForTime(ReaderWriterLock& lock, vint ms) - { - return SleepConditionVariableSRW(&internalData->variable, &lock.internalData->lock, (DWORD)ms, CONDITION_VARIABLE_LOCKMODE_SHARED)!=0; - } - - bool ConditionVariable::SleepWithWriter(ReaderWriterLock& lock) - { - return SleepConditionVariableSRW(&internalData->variable, &lock.internalData->lock, INFINITE, 0)!=0; - } - - bool ConditionVariable::SleepWithWriterForTime(ReaderWriterLock& lock, vint ms) - { - return SleepConditionVariableSRW(&internalData->variable, &lock.internalData->lock, (DWORD)ms, 0)!=0; - } - - void ConditionVariable::WakeOnePending() - { - WakeConditionVariable(&internalData->variable); - } - - void ConditionVariable::WakeAllPendings() - { - WakeAllConditionVariable(&internalData->variable); - } - -/*********************************************************************** -SpinLock -***********************************************************************/ - - SpinLock::Scope::Scope(SpinLock& _spinLock) - :spinLock(&_spinLock) - { - spinLock->Enter(); - } - - SpinLock::Scope::~Scope() - { - spinLock->Leave(); - } - - SpinLock::SpinLock() - :token(0) - { - } - - SpinLock::~SpinLock() - { - } - - bool SpinLock::TryEnter() - { - return _InterlockedExchange(&token, 1)==0; - } - - void SpinLock::Enter() - { - while(_InterlockedCompareExchange(&token, 1, 0)!=0) - { - while(token!=0) _mm_pause(); - } - } - - void SpinLock::Leave() - { - _InterlockedExchange(&token, 0); - } - -/*********************************************************************** -ThreadLocalStorage -***********************************************************************/ - -#define KEY ((DWORD&)key) - - ThreadLocalStorage::ThreadLocalStorage(Destructor _destructor) - :destructor(_destructor) - { - static_assert(sizeof(key) >= sizeof(DWORD), "ThreadLocalStorage's key storage is not large enouth."); - PushStorage(this); - KEY = TlsAlloc(); - CHECK_ERROR(KEY != TLS_OUT_OF_INDEXES, L"vl::ThreadLocalStorage::ThreadLocalStorage()#Failed to alloc new thread local storage index."); - } - - ThreadLocalStorage::~ThreadLocalStorage() - { - TlsFree(KEY); - } - - void* ThreadLocalStorage::Get() - { - CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Get()#Cannot access a disposed ThreadLocalStorage."); - return TlsGetValue(KEY); - } - - void ThreadLocalStorage::Set(void* data) - { - CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Set()#Cannot access a disposed ThreadLocalStorage."); - TlsSetValue(KEY, data); - } - -#undef KEY -} -#endif - -/*********************************************************************** -ThreadLocalStorage Common Implementations -***********************************************************************/ - -namespace vl -{ - void ThreadLocalStorage::Clear() - { - CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Clear()#Cannot access a disposed ThreadLocalStorage."); - if(destructor) - { - if (auto data = Get()) - { - destructor(data); - } - } - Set(nullptr); - } - - void ThreadLocalStorage::Dispose() - { - CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Dispose()#Cannot access a disposed ThreadLocalStorage."); - Clear(); - disposed = true; - } - - struct TlsStorageLink - { - ThreadLocalStorage* storage = nullptr; - TlsStorageLink* next = nullptr; - }; - - volatile bool tlsFixed = false; - TlsStorageLink* tlsHead = nullptr; - TlsStorageLink** tlsTail = &tlsHead; - - void ThreadLocalStorage::PushStorage(ThreadLocalStorage* storage) - { - CHECK_ERROR(!tlsFixed, L"vl::ThreadLocalStorage::PushStorage(ThreadLocalStorage*)#Cannot create new ThreadLocalStorage instance after calling ThreadLocalStorage::FixStorages()."); - auto link = new TlsStorageLink; - link->storage = storage; - *tlsTail = link; - tlsTail = &link->next; - } - - void ThreadLocalStorage::FixStorages() - { - tlsFixed = true; - } - - void ThreadLocalStorage::ClearStorages() - { - FixStorages(); - auto current = tlsHead; - while (current) - { - current->storage->Clear(); - current = current->next; - } - } - - void ThreadLocalStorage::DisposeStorages() - { - FixStorages(); - auto current = tlsHead; - tlsHead = nullptr; - tlsTail = nullptr; - while (current) - { - current->storage->Dispose(); - - auto temp = current; - current = current->next; - delete temp; - } - } -} - - -/*********************************************************************** -.\THREADINGLINUX.CPP -***********************************************************************/ -#ifdef VCZH_GCC -#include -#include -#include -#include -#if defined(__APPLE__) || defined(__APPLE_CC__) -#include -#endif - - -namespace vl -{ - using namespace threading_internal; - using namespace collections; - - -/*********************************************************************** -Thread -***********************************************************************/ - - namespace threading_internal - { - struct ThreadData - { - pthread_t id; - EventObject ev; - }; - - class ProceduredThread : public Thread - { - private: - Thread::ThreadProcedure procedure; - void* argument; - bool deleteAfterStopped; - - protected: - void Run() - { - bool deleteAfterStopped = this->deleteAfterStopped; - ThreadLocalStorage::FixStorages(); - try - { - procedure(this, argument); - threadState=Thread::Stopped; - internalData->ev.Signal(); - ThreadLocalStorage::ClearStorages(); - } - catch (...) - { - ThreadLocalStorage::ClearStorages(); - throw; - } - if(deleteAfterStopped) - { - delete this; - } - } - public: - ProceduredThread(Thread::ThreadProcedure _procedure, void* _argument, bool _deleteAfterStopped) - :procedure(_procedure) - ,argument(_argument) - ,deleteAfterStopped(_deleteAfterStopped) - { - } - }; - - class LambdaThread : public Thread - { - private: - Func procedure; - bool deleteAfterStopped; - - protected: - void Run() - { - bool deleteAfterStopped = this->deleteAfterStopped; - ThreadLocalStorage::FixStorages(); - try - { - procedure(); - threadState=Thread::Stopped; - internalData->ev.Signal(); - ThreadLocalStorage::ClearStorages(); - } - catch (...) - { - ThreadLocalStorage::ClearStorages(); - throw; - } - if(deleteAfterStopped) - { - delete this; - } - } - public: - LambdaThread(const Func& _procedure, bool _deleteAfterStopped) - :procedure(_procedure) - ,deleteAfterStopped(_deleteAfterStopped) - { - } - }; - } - - void InternalThreadProc(Thread* thread) - { - thread->Run(); - } - - void* InternalThreadProcWrapper(void* lpParameter) - { - InternalThreadProc((Thread*)lpParameter); - return 0; - } - - Thread::Thread() - { - internalData=new ThreadData; - internalData->ev.CreateManualUnsignal(false); - threadState=Thread::NotStarted; - } - - Thread::~Thread() - { - if (internalData) - { - Stop(); - if (threadState!=Thread::NotStarted) - { - pthread_detach(internalData->id); - } - delete internalData; - } - } - - Thread* Thread::CreateAndStart(ThreadProcedure procedure, void* argument, bool deleteAfterStopped) - { - if(procedure) - { - Thread* thread=new ProceduredThread(procedure, argument, deleteAfterStopped); - if(thread->Start()) - { - return thread; - } - else - { - delete thread; - } - } - return 0; - } - - Thread* Thread::CreateAndStart(const Func& procedure, bool deleteAfterStopped) - { - Thread* thread=new LambdaThread(procedure, deleteAfterStopped); - if(thread->Start()) - { - return thread; - } - else - { - delete thread; - } - return 0; - } - - void Thread::Sleep(vint ms) - { - if (ms >= 1000) - { - sleep(ms / 1000); - } - if (ms % 1000) - { - usleep((ms % 1000) * 1000); - } - } - - vint Thread::GetCPUCount() - { - return (vint)sysconf(_SC_NPROCESSORS_ONLN); - } - - vint Thread::GetCurrentThreadId() - { - return (vint)::pthread_self(); - } - - bool Thread::Start() - { - if(threadState==Thread::NotStarted) - { - if(pthread_create(&internalData->id, nullptr, &InternalThreadProcWrapper, this)==0) - { - threadState=Thread::Running; - return true; - } - } - return false; - } - - bool Thread::Wait() - { - return internalData->ev.Wait(); - } - - bool Thread::Stop() - { - if (threadState==Thread::Running) - { - if(pthread_cancel(internalData->id)==0) - { - threadState=Thread::Stopped; - internalData->ev.Signal(); - return true; - } - } - return false; - } - - Thread::ThreadState Thread::GetState() - { - return threadState; - } - -/*********************************************************************** -Mutex -***********************************************************************/ - - namespace threading_internal - { - struct MutexData - { - Semaphore sem; - }; - }; - - Mutex::Mutex() - { - internalData = new MutexData; - } - - Mutex::~Mutex() - { - delete internalData; - } - - bool Mutex::Create(bool owned, const WString& name) - { - return internalData->sem.Create(owned ? 0 : 1, 1, name); - } - - bool Mutex::Open(bool inheritable, const WString& name) - { - return internalData->sem.Open(inheritable, name); - } - - bool Mutex::Release() - { - return internalData->sem.Release(); - } - - bool Mutex::Wait() - { - return internalData->sem.Wait(); - } - -/*********************************************************************** -Semaphore -***********************************************************************/ - - namespace threading_internal - { - struct SemaphoreData - { - sem_t semUnnamed; - sem_t* semNamed = nullptr; - }; - } - - Semaphore::Semaphore() - :internalData(0) - { - } - - Semaphore::~Semaphore() - { - if (internalData) - { - if (internalData->semNamed) - { - sem_close(internalData->semNamed); - } - else - { - sem_destroy(&internalData->semUnnamed); - } - delete internalData; - } - } - - bool Semaphore::Create(vint initialCount, vint maxCount, const WString& name) - { - if (internalData) return false; - if (initialCount > maxCount) return false; - - internalData = new SemaphoreData; -#if defined(__APPLE__) - - AString auuid; - if(name.Length() == 0) - { - CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault); - CFStringRef cfstr = CFUUIDCreateString(kCFAllocatorDefault, cfuuid); - auuid = CFStringGetCStringPtr(cfstr, kCFStringEncodingASCII); - - CFRelease(cfstr); - CFRelease(cfuuid); - } - auuid = auuid.Insert(0, "/"); - // OSX SEM_NAME_LENGTH = 31 - if(auuid.Length() >= 30) - auuid = auuid.Sub(0, 30); - - if ((internalData->semNamed = sem_open(auuid.Buffer(), O_CREAT, O_RDWR, initialCount)) == SEM_FAILED) - { - delete internalData; - internalData = 0; - return false; - } - -#else - if (name == L"") - { - if(sem_init(&internalData->semUnnamed, 0, (int)initialCount) == -1) - { - delete internalData; - internalData = 0; - return false; - } - } - else - { - AString astr = wtoa(name); - - if ((internalData->semNamed = sem_open(astr.Buffer(), O_CREAT, 0777, initialCount)) == SEM_FAILED) - { - delete internalData; - internalData = 0; - return false; - } - } -#endif - - Release(initialCount); - return true; - } - - bool Semaphore::Open(bool inheritable, const WString& name) - { - if (internalData) return false; - if (inheritable) return false; - - internalData = new SemaphoreData; - if (!(internalData->semNamed = sem_open(wtoa(name).Buffer(), 0))) - { - delete internalData; - internalData = 0; - return false; - } - - return true; - } - - bool Semaphore::Release() - { - return Release(1); - } - - vint Semaphore::Release(vint count) - { - for (vint i = 0; i < count; i++) - { - if (internalData->semNamed) - { - sem_post(internalData->semNamed); - } - else - { - sem_post(&internalData->semUnnamed); - } - } - return true; - } - - bool Semaphore::Wait() - { - if (internalData->semNamed) - { - return sem_wait(internalData->semNamed) == 0; - } - else - { - return sem_wait(&internalData->semUnnamed) == 0; - } - } - -/*********************************************************************** -EventObject -***********************************************************************/ - - namespace threading_internal - { - struct EventData - { - bool autoReset; - volatile bool signaled; - CriticalSection mutex; - ConditionVariable cond; - volatile vint counter = 0; - }; - } - - EventObject::EventObject() - { - internalData = nullptr; - } - - EventObject::~EventObject() - { - if (internalData) - { - delete internalData; - } - } - - bool EventObject::CreateAutoUnsignal(bool signaled, const WString& name) - { - if (name!=L"") return false; - if (internalData) return false; - - internalData = new EventData; - internalData->autoReset = true; - internalData->signaled = signaled; - return true; - } - - bool EventObject::CreateManualUnsignal(bool signaled, const WString& name) - { - if (name!=L"") return false; - if (internalData) return false; - - internalData = new EventData; - internalData->autoReset = false; - internalData->signaled = signaled; - return true; - } - - bool EventObject::Signal() - { - if (!internalData) return false; - - internalData->mutex.Enter(); - internalData->signaled = true; - if (internalData->counter) - { - if (internalData->autoReset) - { - internalData->cond.WakeOnePending(); - internalData->signaled = false; - } - else - { - internalData->cond.WakeAllPendings(); - } - } - internalData->mutex.Leave(); - return true; - } - - bool EventObject::Unsignal() - { - if (!internalData) return false; - - internalData->mutex.Enter(); - internalData->signaled = false; - internalData->mutex.Leave(); - return true; - } - - bool EventObject::Wait() - { - if (!internalData) return false; - - internalData->mutex.Enter(); - if (internalData->signaled) - { - if (internalData->autoReset) - { - internalData->signaled = false; - } - } - else - { - internalData->counter++; - internalData->cond.SleepWith(internalData->mutex); - internalData->counter--; - } - internalData->mutex.Leave(); - return true; - } - -/*********************************************************************** -ThreadPoolLite -***********************************************************************/ - - namespace threading_internal - { - struct ThreadPoolTask - { - Func task; - Ptr next; - }; - - struct ThreadPoolData - { - Semaphore semaphore; - EventObject taskFinishEvent; - Ptr taskBegin; - Ptr* taskEnd = nullptr; - volatile bool stopping = false; - List taskThreads; - }; - - SpinLock threadPoolLock; - ThreadPoolData* threadPoolData = nullptr; - - void ThreadPoolProc(Thread* thread, void* argument) - { - while (true) - { - Ptr task; - - threadPoolData->semaphore.Wait(); - SPIN_LOCK(threadPoolLock) - { - if (threadPoolData->taskBegin) - { - task = threadPoolData->taskBegin; - threadPoolData->taskBegin = task->next; - } - - if (!threadPoolData->taskBegin) - { - threadPoolData->taskEnd = &threadPoolData->taskBegin; - threadPoolData->taskFinishEvent.Signal(); - } - } - - if (task) - { - ThreadLocalStorage::FixStorages(); - try - { - task->task(); - ThreadLocalStorage::ClearStorages(); - } - catch (...) - { - ThreadLocalStorage::ClearStorages(); - } - } - else if (threadPoolData->stopping) - { - return; - } - } - } - - bool ThreadPoolQueue(const Func& proc) - { - SPIN_LOCK(threadPoolLock) - { - if (!threadPoolData) - { - threadPoolData = new ThreadPoolData; - threadPoolData->semaphore.Create(0, 65536); - threadPoolData->taskFinishEvent.CreateManualUnsignal(false); - threadPoolData->taskEnd = &threadPoolData->taskBegin; - - for (vint i = 0; i < Thread::GetCPUCount() * 4; i++) - { - threadPoolData->taskThreads.Add(Thread::CreateAndStart(&ThreadPoolProc, nullptr, false)); - } - } - - if (threadPoolData) - { - if (threadPoolData->stopping) - { - return false; - } - - auto task = MakePtr(); - task->task = proc; - *threadPoolData->taskEnd = task; - threadPoolData->taskEnd = &task->next; - threadPoolData->semaphore.Release(); - threadPoolData->taskFinishEvent.Unsignal(); - } - } - return true; - } - - bool ThreadPoolStop(bool discardPendingTasks) - { - SPIN_LOCK(threadPoolLock) - { - if (!threadPoolData) return false; - if (threadPoolData->stopping) return false; - - threadPoolData->stopping = true; - if (discardPendingTasks) - { - threadPoolData->taskEnd = &threadPoolData->taskBegin; - threadPoolData->taskBegin = nullptr; - } - - threadPoolData->semaphore.Release(threadPoolData->taskThreads.Count()); - } - - threadPoolData->taskFinishEvent.Wait(); - for (vint i = 0; i < threadPoolData->taskThreads.Count(); i++) - { - auto thread = threadPoolData->taskThreads[i]; - thread->Wait(); - delete thread; - } - threadPoolData->taskThreads.Clear(); - - SPIN_LOCK(threadPoolLock) - { - delete threadPoolData; - threadPoolData = nullptr; - } - return true; - } - } - - ThreadPoolLite::ThreadPoolLite() - { - } - - ThreadPoolLite::~ThreadPoolLite() - { - } - - bool ThreadPoolLite::Queue(void(*proc)(void*), void* argument) - { - return ThreadPoolQueue([proc, argument](){proc(argument);}); - } - - bool ThreadPoolLite::Queue(const Func& proc) - { - return ThreadPoolQueue(proc); - } - - bool ThreadPoolLite::Stop(bool discardPendingTasks) - { - return ThreadPoolStop(discardPendingTasks); - } - -/*********************************************************************** -CriticalSection -***********************************************************************/ - - namespace threading_internal - { - struct CriticalSectionData - { - pthread_mutex_t mutex; - }; - } - - CriticalSection::CriticalSection() - { - internalData = new CriticalSectionData; - pthread_mutex_init(&internalData->mutex, nullptr); - } - - CriticalSection::~CriticalSection() - { - pthread_mutex_destroy(&internalData->mutex); - delete internalData; - } - - bool CriticalSection::TryEnter() - { - return pthread_mutex_trylock(&internalData->mutex) == 0; - } - - void CriticalSection::Enter() - { - pthread_mutex_lock(&internalData->mutex); - } - - void CriticalSection::Leave() - { - pthread_mutex_unlock(&internalData->mutex); - } - - CriticalSection::Scope::Scope(CriticalSection& _criticalSection) - :criticalSection(&_criticalSection) - { - criticalSection->Enter(); - } - - CriticalSection::Scope::~Scope() - { - criticalSection->Leave(); - } - -/*********************************************************************** -ReaderWriterLock -***********************************************************************/ - - namespace threading_internal - { - struct ReaderWriterLockData - { - pthread_rwlock_t rwlock; - }; - } - - ReaderWriterLock::ReaderWriterLock() - { - internalData = new ReaderWriterLockData; - pthread_rwlock_init(&internalData->rwlock, nullptr); - } - - ReaderWriterLock::~ReaderWriterLock() - { - pthread_rwlock_destroy(&internalData->rwlock); - delete internalData; - } - - bool ReaderWriterLock::TryEnterReader() - { - return pthread_rwlock_tryrdlock(&internalData->rwlock) == 0; - } - - void ReaderWriterLock::EnterReader() - { - pthread_rwlock_rdlock(&internalData->rwlock); - } - - void ReaderWriterLock::LeaveReader() - { - pthread_rwlock_unlock(&internalData->rwlock); - } - - bool ReaderWriterLock::TryEnterWriter() - { - return pthread_rwlock_trywrlock(&internalData->rwlock) == 0; - } - - void ReaderWriterLock::EnterWriter() - { - pthread_rwlock_wrlock(&internalData->rwlock); - } - - void ReaderWriterLock::LeaveWriter() - { - pthread_rwlock_unlock(&internalData->rwlock); - } - - ReaderWriterLock::ReaderScope::ReaderScope(ReaderWriterLock& _lock) - :lock(&_lock) - { - lock->EnterReader(); - } - - ReaderWriterLock::ReaderScope::~ReaderScope() - { - lock->LeaveReader(); - } - - ReaderWriterLock::WriterScope::WriterScope(ReaderWriterLock& _lock) - :lock(&_lock) - { - lock->EnterWriter(); - } - - ReaderWriterLock::WriterScope::~WriterScope() - { - lock->LeaveReader(); - } - -/*********************************************************************** -ConditionVariable -***********************************************************************/ - - namespace threading_internal - { - struct ConditionVariableData - { - pthread_cond_t cond; - }; - } - - ConditionVariable::ConditionVariable() - { - internalData = new ConditionVariableData; - pthread_cond_init(&internalData->cond, nullptr); - } - - ConditionVariable::~ConditionVariable() - { - pthread_cond_destroy(&internalData->cond); - delete internalData; - } - - bool ConditionVariable::SleepWith(CriticalSection& cs) - { - return pthread_cond_wait(&internalData->cond, &cs.internalData->mutex) == 0; - } - - void ConditionVariable::WakeOnePending() - { - pthread_cond_signal(&internalData->cond); - } - - void ConditionVariable::WakeAllPendings() - { - pthread_cond_broadcast(&internalData->cond); - } - -/*********************************************************************** -SpinLock -***********************************************************************/ - - SpinLock::Scope::Scope(SpinLock& _spinLock) - :spinLock(&_spinLock) - { - spinLock->Enter(); - } - - SpinLock::Scope::~Scope() - { - spinLock->Leave(); - } - - SpinLock::SpinLock() - :token(0) - { - } - - SpinLock::~SpinLock() - { - } - - bool SpinLock::TryEnter() - { - return __sync_lock_test_and_set(&token, 1)==0; - } - - void SpinLock::Enter() - { - while(__sync_val_compare_and_swap(&token, 0, 1)!=0) - { - while(token!=0) _mm_pause(); - } - } - - void SpinLock::Leave() - { - __sync_lock_test_and_set(&token, 0); - } - -/*********************************************************************** -ThreadLocalStorage -***********************************************************************/ - -#define KEY ((pthread_key_t&)key) - - ThreadLocalStorage::ThreadLocalStorage(Destructor _destructor) - :destructor(_destructor) - { - static_assert(sizeof(key) >= sizeof(pthread_key_t), "ThreadLocalStorage's key storage is not large enouth."); - PushStorage(this); - auto error = pthread_key_create(&KEY, destructor); - CHECK_ERROR(error != EAGAIN && error != ENOMEM, L"vl::ThreadLocalStorage::ThreadLocalStorage()#Failed to create a thread local storage index."); - } - - ThreadLocalStorage::~ThreadLocalStorage() - { - pthread_key_delete(KEY); - } - - void* ThreadLocalStorage::Get() - { - CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Get()#Cannot access a disposed ThreadLocalStorage."); - return pthread_getspecific(KEY); - } - - void ThreadLocalStorage::Set(void* data) - { - CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Set()#Cannot access a disposed ThreadLocalStorage."); - pthread_setspecific(KEY, data); - } - -#undef KEY -} -#endif - - /*********************************************************************** .\COLLECTIONS\PARTIALORDERING.CPP ***********************************************************************/ @@ -4923,21975 +1186,9 @@ PartialOrderingProcessor } } -/*********************************************************************** -.\PARSING\PARSING.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - namespace tabling - { - using namespace definitions; - using namespace analyzing; - using namespace collections; - using namespace regex; - -/*********************************************************************** -ParsingGeneralParser -***********************************************************************/ - - ParsingGeneralParser::ParsingGeneralParser(Ptr _table) - :table(_table) - { - } - - ParsingGeneralParser::~ParsingGeneralParser() - { - } - - Ptr ParsingGeneralParser::GetTable() - { - return table; - } - - void ParsingGeneralParser::BeginParse() - { - } - - bool ParsingGeneralParser::Parse(ParsingState& state, ParsingTransitionProcessor& processor, collections::List>& errors) - { - BeginParse(); - processor.Reset(); - - for(vint i=0;itoken==-1 || !token->completeToken) - { - errors.Add(new ParsingError(token, L"Unrecognizable token: \""+WString(token->reading, token->length)+L"\".")); - } - } - - while(true) - { - ParsingState::TransitionResult result=ParseStep(state, errors); - if(!result) - { - const RegexToken* token=state.GetToken(state.GetCurrentToken()); - errors.Add(new ParsingError(token, L"Internal error when parsing.")); - return false; - } - else if(result.transitionType==ParsingState::TransitionResult::SkipToken) - { - if(state.GetCurrentTableTokenIndex()==ParsingTable::TokenFinish) - { - const RegexToken* token=state.GetToken(state.GetCurrentToken()); - errors.Add(new ParsingError(token, L"Failed to recover error when reaching the end of the input.")); - return false; - } - else - { - state.SkipCurrentToken(); - continue; - } - } - else if(!processor.Run(result)) - { - const RegexToken* token=state.GetToken(state.GetCurrentToken()); - errors.Add(new ParsingError(token, L"Internal error when building the parsing tree.")); - return false; - } - if(result.tableTokenIndex==ParsingTable::TokenFinish && !processor.GetProcessingAmbiguityBranch()) - { - break; - } - } - - return true; - } - - Ptr ParsingGeneralParser::Parse(ParsingState& state, collections::List>& errors) - { - ParsingTreeBuilder builder; - Parse(state, builder, errors); - - Ptr node=builder.GetNode(); - if(!node) - { - errors.Add(new ParsingError(L"Internal error when building the parsing tree after a succeeded parsing process.")); - return 0; - } - return node; - } - - Ptr ParsingGeneralParser::Parse(const WString& input, const WString& rule, collections::List>& errors, vint codeIndex) - { - ParsingState state(input, table, codeIndex); - if(state.Reset(rule)==-1) - { - errors.Add(new ParsingError(L"Rule \""+rule+L"\" does not exist.")); - return 0; - } - return Parse(state, errors); - } - -/*********************************************************************** -ParsingStrictParser -***********************************************************************/ - - bool ParsingStrictParser::OnTestErrorRecoverExists() - { - return false; - } - - void ParsingStrictParser::OnClearErrorRecover() - { - } - - ParsingState::TransitionResult ParsingStrictParser::OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List>& errors) - { - const RegexToken* token=state.GetToken(state.GetCurrentToken()); - errors.Add(new ParsingError(token, (token==0?L"Error happened during parsing when reaching the end of the input.":L"Error happened during parsing."))); - return ParsingState::TransitionResult(); - } - - ParsingStrictParser::ParsingStrictParser(Ptr _table) - :ParsingGeneralParser(_table) - { - } - - ParsingStrictParser::~ParsingStrictParser() - { - } - - ParsingState::TransitionResult ParsingStrictParser::ParseStep(ParsingState& state, collections::List>& errors) - { - ParsingState::TransitionResult result; - if (OnTestErrorRecoverExists()) - { - result = OnErrorRecover(state, -1, errors); - } - else - { - result = state.ReadToken(); - if (result) - { - OnClearErrorRecover(); - } - else - { - vint currentTokenIndex = state.GetCurrentTableTokenIndex(); - if (currentTokenIndex != -1) - { - result = OnErrorRecover(state, currentTokenIndex, errors); - } - } - } - return result; - } - -/*********************************************************************** -ParsingAutoRecoverParser -***********************************************************************/ - - ParsingAutoRecoverParser::RecoverFuture& ParsingAutoRecoverParser::GetRecoverFuture(vint index) - { - return recoverFutures[index]; - } - - ParsingAutoRecoverParser::RecoverFuture& ParsingAutoRecoverParser::CreateRecoverFuture(vint index, vint previousIndex) - { - RecoverFuture* rf = 0; - if (index >= recoverFutures.Count()) - { - CHECK_ERROR(index == recoverFutures.Count(), L"ParsingAutoRecoverParser::CreateRecoverFuture(vint, vint)#Wrong argument: index."); - RecoverFuture recoverFuture; - recoverFuture.future = new ParsingState::Future; - index = recoverFutures.Add(recoverFuture); - } - rf = &GetRecoverFuture(index); - rf->index = index; - rf->previousIndex = previousIndex; - return *rf; - } - - bool ParsingAutoRecoverParser::OnTestErrorRecoverExists() - { - return recoveringFutureIndex != -1; - } - - void ParsingAutoRecoverParser::OnClearErrorRecover() - { - recoveringFutureIndex = -1; - } - - ParsingState::TransitionResult ParsingAutoRecoverParser::OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List>& errors) - { - if(recoveringFutureIndex==-1) - { - List prioritizedTokens; - prioritizedTokens.Add(ParsingTable::TokenFinish); - CopyFrom( - prioritizedTokens, - Range(ParsingTable::UserTokenStart, table->GetTokenCount() - ParsingTable::UserTokenStart) - ); - prioritizedTokens.Add(ParsingTable::LeftRecursiveReduce); - prioritizedTokens.Add(ParsingTable::NormalReduce); - prioritizedTokens.Remove(currentTokenIndex); - prioritizedTokens.Insert(0, currentTokenIndex); - - vint processingFutureIndex=-1; - vint usedFutureCount=0; - while(processingFutureIndexcurrentState==-1) continue; - - FOREACH(vint, currentTableTokenIndex, prioritizedTokens) - { - vint newInsertedTokenCount = previous.insertedTokenCount; - if (currentTableTokenIndex != ParsingTable::NormalReduce && currentTableTokenIndex != ParsingTable::LeftRecursiveReduce) - { - newInsertedTokenCount++; - } - if (currentTableTokenIndex != currentTokenIndex && newInsertedTokenCount > maxInsertedTokenCount) - { - continue; - } - - RecoverFuture& now = CreateRecoverFuture(usedFutureCount, previous.index); - now.insertedTokenCount = newInsertedTokenCount; - - if(state.ReadTokenInFuture(currentTableTokenIndex, previous.future, now.future, 0)) - { - if(currentTableTokenIndex==currentTokenIndex) - { - if(previous.future) - { - recoveringFutureIndex = previous.index; - RecoverFuture* rf = &GetRecoverFuture(previous.index); - while(rf->future->previous) - { - RecoverFuture* prf = &GetRecoverFuture(rf->previousIndex); - prf->nextIndex = rf->index; - prf->future->next = rf->future; - rf = prf; - } - recoveringFutureIndex = rf->index; - } - else - { - recoveringFutureIndex = 0; - } - goto FOUND_ERROR_RECOVER_SOLUTION; - } - else - { - usedFutureCount++; - } - } - } - } - } - FOUND_ERROR_RECOVER_SOLUTION: - - RecoverFuture* rf = 0; - if (recoveringFutureIndex != -1) - { - rf = &GetRecoverFuture(recoveringFutureIndex); - if(rf->future->next) - { - recoveringFutureIndex = rf->nextIndex; - } - else - { - recoveringFutureIndex = -1; - } - } - - if(rf) - { - return state.RunTransition(rf->future->selectedItem, 0); - } - else - { - return ParsingState::TransitionResult(ParsingState::TransitionResult::SkipToken); - } - } - - ParsingAutoRecoverParser::ParsingAutoRecoverParser(Ptr _table, vint _maxInsertedTokenCount) - :ParsingStrictParser(_table) - , recoveringFutureIndex(-1) - , maxInsertedTokenCount(_maxInsertedTokenCount == -1 ? 4 : _maxInsertedTokenCount) - { - } - - ParsingAutoRecoverParser::~ParsingAutoRecoverParser() - { - FOREACH(RecoverFuture, future, recoverFutures) - { - delete future.future; - } - } - - void ParsingAutoRecoverParser::BeginParse() - { - recoveringFutureIndex = -1; - ParsingStrictParser::BeginParse(); - } - -/*********************************************************************** -ParsingAmbiguousParser -***********************************************************************/ - - ParsingAmbiguousParser::ParsingAmbiguousParser(Ptr _table) - :ParsingGeneralParser(_table) - ,consumedDecisionCount(0) - { - } - - ParsingAmbiguousParser::~ParsingAmbiguousParser() - { - } - - void ParsingAmbiguousParser::OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List& futures, vint& begin, vint& end, collections::List>& errors) - { - begin=end; - } - - vint ParsingAmbiguousParser::GetResolvableFutureLevels(collections::List& futures, vint begin, vint end) - { - if(end-begin<2) - { - return 1; - } - List resolvingFutures; - for(vint i=begin;icurrentState!=second->currentState - || first->reduceStateCount!=second->reduceStateCount - || first->shiftStates.Count()!=second->shiftStates.Count() - ) - { - return level; - } - else - { - for(vint j=0;jshiftStates.Count();j++) - { - if(first->shiftStates[j]!=second->shiftStates[j]) - { - return level; - } - } - } - } - level++; - - for(vint i=0;iprevious)) - { - return level; - } - } - } - } - - vint ParsingAmbiguousParser::SearchPathForOneStep(ParsingState& state, collections::List& futures, vint& begin, vint& end, collections::List>& errors) - { - futures.Add(state.ExploreCreateRootFuture()); - vint previousBegin = 0; - vint previousEnd = 1; - vint resolvableFutureLevels = 0; - bool errorRecovered = false; - - while(true) - { - // keep all futures that consumed a token in a list - List consumedTokenFutures; - vint processBegin = previousBegin; - vint processEnd = previousEnd; - while (processEnd > processBegin) - { - // explore the current token - if (state.ExploreStep(futures, processBegin, processEnd - processBegin, futures)) - { - CopyFrom( - consumedTokenFutures, - From(futures) - .Skip(processEnd) - .Take(futures.Count() - processEnd), - true - ); - futures.RemoveRange(processEnd, futures.Count() - processEnd); - } - - // explore left recursive reduce and normal reduce - state.ExploreLeftRecursiveReduce(futures, processBegin, processEnd - processBegin, futures); - state.ExploreNormalReduce(futures, processBegin, processEnd - processBegin, futures); - - // if a token is consumed, then for those reduce futures, explore them until a token is consumed, and discard all failed futures - processBegin = processEnd; - processEnd = futures.Count(); - } - - if (consumedTokenFutures.Count() == 0) - { - // failed to get any future that consumed a token, do error recovering - vint tokenIndex = state.GetCurrentTableTokenIndex(); - OnErrorRecover(state, tokenIndex, futures, previousBegin, previousEnd, errors); - if (previousBegin == previousEnd) - { - break; - } - } - else - { - state.SkipCurrentToken(); - // put all futures that consumed a token from consumedTokenFutures back to future list - previousBegin = futures.Count(); - CopyFrom(futures, consumedTokenFutures, true); - previousEnd = futures.Count(); - - // resolve all futures and see if all futures collapsed into a equivalent single future - resolvableFutureLevels = GetResolvableFutureLevels(futures, previousBegin, previousEnd); - if (resolvableFutureLevels != 0) - { - break; - } - } - } - - begin = previousBegin; - end = previousEnd; - return resolvableFutureLevels; - } - - vint ParsingAmbiguousParser::GetConflictReduceCount(collections::List& futures) - { - vint conflictReduceCount=-1; - for(vint i=0;iselectedItem->instructions.Count(); - vint secondIndex=second->selectedItem->instructions.Count(); - while(--firstIndex>=0 && --secondIndex>=0) - { - ParsingTable::Instruction* firstIns=&first->selectedItem->instructions[firstIndex]; - ParsingTable::Instruction* secondIns=&second->selectedItem->instructions[secondIndex]; - if(firstIns && secondIns) - { - if(firstIns->instructionType==secondIns->instructionType - && firstIns->nameParameter==secondIns->nameParameter - && firstIns->stateParameter==secondIns->stateParameter - && firstIns->value==secondIns->value - ) - { - if(firstIns->instructionType==ParsingTable::Instruction::Reduce || firstIns->instructionType==ParsingTable::Instruction::LeftRecursiveReduce) - { - count++; - } - continue; - } - } - break; - } - if(conflictReduceCount==-1 || conflictReduceCount>count) - { - conflictReduceCount=count; - } - } - if(conflictReduceCount==-1) - { - conflictReduceCount=0; - } - return conflictReduceCount; - } - - void ParsingAmbiguousParser::GetConflictReduceIndices(collections::List& futures, vint conflictReduceCount, collections::Array& conflictReduceIndices) - { - conflictReduceIndices.Resize(futures.Count()); - for(vint i=0;iselectedItem->instructions.Count(); - vint count=0; - while(count0) - { - switch(future->selectedItem->instructions[--index].instructionType) - { - case ParsingTable::Instruction::Reduce: - case ParsingTable::Instruction::LeftRecursiveReduce: - count++; - break; - default:; - } - } - conflictReduceIndices[i]=index; - } - } - vint ParsingAmbiguousParser::GetAffectedStackNodeCount(collections::List& futures, collections::Array& conflictReduceIndices) - { - vint affectedStackNodeCount=-1; - for(vint i=0;iselectedItem) - { - vint start=(future==futures[i]?conflictReduceIndices[i]:future->selectedItem->instructions.Count())-1; - for(vint j=start;j>=0;j--) - { - switch(future->selectedItem->instructions[j].instructionType) - { - case ParsingTable::Instruction::Reduce: - count++; - break; - case ParsingTable::Instruction::Shift: - count--; - break; - default:; - } - } - future=future->previous; - } - - if(affectedStackNodeCount==-1) - { - affectedStackNodeCount=count; - } - else if(affectedStackNodeCount!=count) - { - return -1; - } - } - return affectedStackNodeCount; - } - - void ParsingAmbiguousParser::BuildSingleDecisionPath(ParsingState& state, ParsingState::Future* future, vint lastAvailableInstructionCount) - { - List> path; - while(future && future->selectedToken!=-1) - { - path.Add(Pair(future->selectedItem, future->selectedRegexToken)); - future = future->previous; - } - - for (vint j = path.Count() - 1; j >= 0; j--) - { - if(j==0 && lastAvailableInstructionCount!=-1) - { - decisions.Add(state.RunTransition(path[j].key, path[j].value, 0, lastAvailableInstructionCount, false)); - } - else - { - decisions.Add(state.RunTransition(path[j].key, path[j].value)); - } - } - } - - void ParsingAmbiguousParser::BuildAmbiguousDecisions(ParsingState& state, collections::List& futures, vint begin, vint end, vint resolvableFutureLevels, collections::List>& errors) - { - List resolvingFutures; - CopyFrom( - resolvingFutures, - From(futures) - .Skip(begin) - .Take(end - begin) - ); - for (vint i = 1; i < resolvableFutureLevels; i++) - { - for(vint j=0;jprevious; - } - } - - Array conflictReduceIndices; - vint conflictReduceCount=GetConflictReduceCount(resolvingFutures); - GetConflictReduceIndices(resolvingFutures, conflictReduceCount, conflictReduceIndices); - - WString ambiguityNodeType, ambiguityRuleName; - if(resolvingFutures[0]->selectedItem->instructions.Count()==conflictReduceIndices[0]) - { - vint rootStartState=state.GetParsingRuleStartState(); - ambiguityNodeType=state.GetTable()->GetStateInfo(rootStartState).ruleAmbiguousType; - ambiguityRuleName=state.GetParsingRule(); - } - else - { - ParsingTable::Instruction& ins=resolvingFutures[0]->selectedItem->instructions[conflictReduceIndices[0]]; - ambiguityNodeType=state.GetTable()->GetStateInfo(ins.stateParameter).ruleAmbiguousType; - ambiguityRuleName=state.GetTable()->GetStateInfo(ins.stateParameter).ruleName; - } - if(ambiguityNodeType==L"") - { - const RegexToken* token=state.GetToken(state.GetCurrentToken()); - errors.Add(new ParsingError(token, L"Ambiguity happens when reducing rule \""+ambiguityRuleName+L"\" but this rule does not have an associated ambiguous node type.")); - return; - } - - vint affectedStackNodeCount=GetAffectedStackNodeCount(resolvingFutures, conflictReduceIndices); - if(affectedStackNodeCount==-1) - { - const RegexToken* token=state.GetToken(state.GetCurrentToken()); - errors.Add(new ParsingError(token, (token==0?L"Failed to pass ambiguity checking during parsing when reaching to the end of the input.":L"Failed to pass ambiguity checking during parsing."))); - return; - } - - Ptr stateGroup; - for(vint i=0;iinstructions.Count()-start, true)); - } - } - } - - ParsingState::Future* lastFuture=futures[end-1]; - ParsingState::Future** futureCleaner=&lastFuture; - for(int i=1;iprevious; - } - *futureCleaner=0; - - if(lastFuture) - { - BuildSingleDecisionPath(state, lastFuture, -1); - } - } - - void ParsingAmbiguousParser::BuildDecisions(ParsingState& state, collections::List& futures, vint begin, vint end, vint resolvableFutureLevels, collections::List>& errors) - { - if(end-begin==0) - { - const RegexToken* token=state.GetToken(state.GetCurrentToken()); - errors.Add(new ParsingError(token, (token==0?L"Error happened during parsing when reaching to the end of the input.":L"Error happened during parsing."))); - } - else if(end-begin==1) - { - BuildSingleDecisionPath(state, futures[begin], -1); - } - else - { - BuildAmbiguousDecisions(state, futures, begin, end, resolvableFutureLevels, errors); - } - } - - ParsingState::TransitionResult ParsingAmbiguousParser::ParseStep(ParsingState& state, collections::List>& errors) - { - if(decisions.Count()==consumedDecisionCount) - { - List futures; - vint resultBegin=0; - vint resultEnd=0; - - vint resolvableFutureLevels=SearchPathForOneStep(state, futures, resultBegin, resultEnd, errors); - BuildDecisions(state, futures, resultBegin, resultEnd, resolvableFutureLevels, errors); - - FOREACH(ParsingState::Future*, future, futures) - { - delete future; - } - } - - if(decisions.Count()>consumedDecisionCount) - { - ParsingState::TransitionResult result=decisions[consumedDecisionCount++]; - if(consumedDecisionCount==decisions.Count()) - { - decisions.Clear(); - consumedDecisionCount=0; - } - return result; - } - else - { - return ParsingState::TransitionResult(); - } - } - - void ParsingAmbiguousParser::BeginParse() - { - decisions.Clear(); - consumedDecisionCount=0; - ParsingGeneralParser::BeginParse(); - } - -/*********************************************************************** -ParsingAutoRecoverAmbiguousParser -***********************************************************************/ - - void ParsingAutoRecoverAmbiguousParser::OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List& futures, vint& begin, vint& end, collections::List>& errors) - { - vint insertedTokenCount = 0; - while (insertedTokenCount++ < maxInsertedTokenCount) - { - // keep all futures that consumed a token in a list - List consumedTokenFutures; - vint processBegin = begin; - vint processEnd = end; - while (processEnd > processBegin) - { - // explore all tokens - for (vint i = processBegin; i < processEnd; i++) - { - state.Explore(ParsingTable::TokenFinish, futures[i], futures); - for (vint token = ParsingTable::UserTokenStart; token < state.GetTable()->GetTokenCount(); token++) - { - state.Explore(token, futures[i], futures); - } - } - // copy all futures that consumed a token to consumedTokenFutures - if (futures.Count() > processEnd) - { - CopyFrom( - consumedTokenFutures, - From(futures) - .Skip(processEnd) - .Take(futures.Count() - processEnd), - true - ); - futures.RemoveRange(processEnd, futures.Count() - processEnd); - } - - // explore left recursive reduce and normal reduce - state.ExploreLeftRecursiveReduce(futures, processBegin, processEnd - processBegin, futures); - state.ExploreNormalReduce(futures, processBegin, processEnd - processBegin, futures); - - // if a token is consumed, then for those reduce futures, explore them until a token is consumed, and discard all failed futures - processBegin = processEnd; - processEnd = futures.Count(); - } - - if (consumedTokenFutures.Count() == 0) - { - // failed to get any future that consumed a token - goto ERROR_RECOVERY_FAILED; - } - else - { - // try to see if the target token is reached - List recoveryFutures; - FOREACH(ParsingState::Future*, future, consumedTokenFutures) - { - if (future->selectedToken == currentTokenIndex) - { - // because this is reached by error recoverying, so all futures in availableFutures should have previous futures - recoveryFutures.Add(future->previous); - } - } - - if (recoveryFutures.Count()>0) - { - // finally reached the expected currentTokenIndex - // move these previous futures to the end - // then the original parser algorith, will use these previous futures to reach the currentTokenIndex in the next step - FOREACH(ParsingState::Future*, future, recoveryFutures) - { - futures.Remove(future); - futures.Add(future); - } - begin = futures.Count() - recoveryFutures.Count(); - end = futures.Count(); - - // delete all futures in consumedTokenFutures - FOREACH(ParsingState::Future*, future, consumedTokenFutures) - { - delete future; - } - goto ERROR_RECOVERY_SUCCEEDED; - } - else - { - // put all futures that consumed a token from consumedTokenFutures back to future list - begin = futures.Count(); - CopyFrom(futures, consumedTokenFutures, true); - end = futures.Count(); - } - } - } - // if the maxInsertedTokenCount is exceeded, then we get here - ERROR_RECOVERY_FAILED: - begin = end = futures.Count(); - return; - ERROR_RECOVERY_SUCCEEDED: - return; - } - - ParsingAutoRecoverAmbiguousParser::ParsingAutoRecoverAmbiguousParser(Ptr _table, vint _maxInsertedTokenCount) - :ParsingAmbiguousParser(_table) - , maxInsertedTokenCount(_maxInsertedTokenCount == -1 ? 4 : _maxInsertedTokenCount) - { - } - - ParsingAutoRecoverAmbiguousParser::~ParsingAutoRecoverAmbiguousParser() - { - } - -/*********************************************************************** -Helper Functions -***********************************************************************/ - - Ptr CreateStrictParser(Ptr table) - { - if(table) - { - if(table->GetAmbiguity()) - { - return new ParsingAmbiguousParser(table); - } - else - { - return new ParsingStrictParser(table); - } - } - else - { - return 0; - } - } - - Ptr CreateAutoRecoverParser(Ptr table) - { - if(table) - { - if(table->GetAmbiguity()) - { - return new ParsingAutoRecoverAmbiguousParser(table); - } - else - { - return new ParsingAutoRecoverParser(table); - } - } - else - { - return 0; - } - } - - Ptr CreateBootstrapStrictParser() - { - List> errors; - Ptr definition=CreateParserDefinition(); - Ptr table=GenerateTable(definition, false, errors); - return CreateStrictParser(table); - } - - Ptr CreateBootstrapAutoRecoverParser() - { - List> errors; - Ptr definition=CreateParserDefinition(); - Ptr table=GenerateTable(definition, false, errors); - return CreateAutoRecoverParser(table); - } - } - } -} - -/*********************************************************************** -Reflection -***********************************************************************/ - -#ifndef VCZH_DEBUG_NO_REFLECTION - -namespace vl -{ - namespace reflection - { - namespace description - { - using namespace parsing; - - PARSINGREFLECTION_TYPELIST(IMPL_VL_TYPE_INFO) - -/*********************************************************************** -Type Declaration -***********************************************************************/ - -#define _ , - - BEGIN_STRUCT_MEMBER(ParsingTextPos) - STRUCT_MEMBER(index) - STRUCT_MEMBER(row) - STRUCT_MEMBER(column) - END_STRUCT_MEMBER(ParsingTextPos) - - BEGIN_STRUCT_MEMBER(ParsingTextRange) - STRUCT_MEMBER(start) - STRUCT_MEMBER(end) - END_STRUCT_MEMBER(ParsingTextRange) - - BEGIN_CLASS_MEMBER(ParsingTreeNode) - CLASS_MEMBER_PROPERTY_FAST(CodeRange) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Parent) - CLASS_MEMBER_PROPERTY_READONLY_FAST(SubNodes) - - CLASS_MEMBER_METHOD(Clone, NO_PARAMETER) - CLASS_MEMBER_METHOD(InitializeQueryCache, NO_PARAMETER) - CLASS_MEMBER_METHOD(ClearQueryCache, NO_PARAMETER) - CLASS_MEMBER_METHOD_OVERLOAD(FindSubNode, {L"position"}, ParsingTreeNode*(ParsingTreeNode::*)(const ParsingTextPos&)) - CLASS_MEMBER_METHOD_OVERLOAD(FindSubNode, {L"range"}, ParsingTreeNode*(ParsingTreeNode::*)(const ParsingTextRange&)) - CLASS_MEMBER_METHOD_OVERLOAD(FindDeepestNode, {L"position"}, ParsingTreeNode*(ParsingTreeNode::*)(const ParsingTextPos&)) - CLASS_MEMBER_METHOD_OVERLOAD(FindDeepestNode, {L"range"}, ParsingTreeNode*(ParsingTreeNode::*)(const ParsingTextRange&)) - END_CLASS_MEMBER(ParsingTreeNode) - - BEGIN_CLASS_MEMBER(ParsingTreeToken) - CLASS_MEMBER_CONSTRUCTOR(Ptr(const WString&, vint), {L"value" _ L"tokenIndex"}) - - CLASS_MEMBER_PROPERTY_FAST(TokenIndex) - CLASS_MEMBER_PROPERTY_FAST(Value) - END_CLASS_MEMBER(ParsingTreeToken) - - BEGIN_CLASS_MEMBER(ParsingTreeObject) - CLASS_MEMBER_CONSTRUCTOR(Ptr(const WString&), {L"type"}) - - CLASS_MEMBER_PROPERTY_FAST(Type) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Members) - CLASS_MEMBER_PROPERTY_READONLY_FAST(MemberNames) - CLASS_MEMBER_PROPERTY_READONLY_FAST(CreatorRules) - - CLASS_MEMBER_METHOD(GetMember, {L"name"}) - CLASS_MEMBER_METHOD(SetMember, {L"name" _ L"node"}) - END_CLASS_MEMBER(ParsingTreeObject) - - BEGIN_CLASS_MEMBER(ParsingTreeArray) - CLASS_MEMBER_CONSTRUCTOR(Ptr(const WString&), {L"elementType"}) - - CLASS_MEMBER_PROPERTY_FAST(ElementType) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Items) - - CLASS_MEMBER_METHOD(GetItem, {L"index"}) - CLASS_MEMBER_METHOD(SetItem, {L"index" _ L"node"}) - CLASS_MEMBER_METHOD(AddItem, {L"node"}) - CLASS_MEMBER_METHOD(InsertItem, {L"index" _ L"node"}) - CLASS_MEMBER_METHOD_OVERLOAD(RemoveItem, {L"index"}, bool(ParsingTreeArray::*)(vint)) - CLASS_MEMBER_METHOD_OVERLOAD(RemoveItem, {L"node"}, bool(ParsingTreeArray::*)(ParsingTreeNode*)) - CLASS_MEMBER_METHOD(IndexOfItem, {L"node"}) - CLASS_MEMBER_METHOD(ContainsItem, {L"node"}) - CLASS_MEMBER_METHOD(Clone, NO_PARAMETER) - - CLASS_MEMBER_METHOD_RENAME(GetCount, Count, NO_PARAMETER) - CLASS_MEMBER_PROPERTY_READONLY(Count, GetCount) - END_CLASS_MEMBER(ParsingTreeArray) - - BEGIN_CLASS_MEMBER(ParsingTreeCustomBase) - CLASS_MEMBER_FIELD(codeRange) - CLASS_MEMBER_FIELD(creatorRules) - END_CLASS_MEMBER(ParsingTreeCustomBase) - - BEGIN_CLASS_MEMBER(ParsingToken) - CLASS_MEMBER_BASE(ParsingTreeCustomBase) - - CLASS_MEMBER_FIELD(tokenIndex) - CLASS_MEMBER_FIELD(value) - END_CLASS_MEMBER(ParsingToken) - - BEGIN_CLASS_MEMBER(ParsingError) - CLASS_MEMBER_CONSTRUCTOR(Ptr(), NO_PARAMETER) - CLASS_MEMBER_CONSTRUCTOR(Ptr(const WString&), {L"errorMessage"}) - CLASS_MEMBER_CONSTRUCTOR(Ptr(ParsingTreeCustomBase*, const WString&), {L"parsingTree" _ L"errorMessage"}) - - CLASS_MEMBER_FIELD(codeRange) - CLASS_MEMBER_FIELD(parsingTree) - CLASS_MEMBER_FIELD(errorMessage) - END_CLASS_MEMBER(ParsingError) -#undef _ - } - } -} - -#endif - -namespace vl -{ - namespace reflection - { - namespace description - { - -/*********************************************************************** -Type Loader -***********************************************************************/ - -#ifndef VCZH_DEBUG_NO_REFLECTION - class ParsingTypeLoader : public Object, public ITypeLoader - { - public: - void Load(ITypeManager* manager) - { - PARSINGREFLECTION_TYPELIST(ADD_TYPE_INFO) - } - - void Unload(ITypeManager* manager) - { - } - }; -#endif - - bool LoadParsingTypes() - { -#ifndef VCZH_DEBUG_NO_REFLECTION - ITypeManager* manager=GetGlobalTypeManager(); - if(manager) - { - Ptr loader=new ParsingTypeLoader; - return manager->AddTypeLoader(loader); - } -#endif - return false; - } - } - } -} - -/*********************************************************************** -.\PARSING\PARSINGANALYZER.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - using namespace collections; - using namespace definitions; - - namespace analyzing - { - -/*********************************************************************** -ParsingSymbol -***********************************************************************/ - - bool ParsingSymbol::AddSubSymbol(ParsingSymbol* subSymbol) - { - if(subSymbol->GetParentSymbol()) return false; - if(subSymbolMap.Keys().IndexOf(subSymbol->GetName())!=-1) return false; - switch(type) - { - case Global: - switch(subSymbol->GetType()) - { - case EnumType: break; - case ClassType: break; - case TokenDef: break; - case RuleDef: break; - default: return false; - } - break; - case EnumType: - switch(subSymbol->GetType()) - { - case EnumItem: break; - default: return false; - } - break; - case ClassType: - switch(subSymbol->GetType()) - { - case EnumType: - case ClassType: - case ClassField: break; - default: return false; - } - break; - default: return false; - } - - subSymbol->parentSymbol=this; - subSymbolList.Add(subSymbol); - subSymbolMap.Add(subSymbol->GetName(), subSymbol); - return true; - } - - ParsingSymbol::ParsingSymbol(ParsingSymbolManager* _manager, SymbolType _type, const WString& _name, ParsingSymbol* _descriptorSymbol, const WString& _descriptorString) - :manager(_manager) - ,type(_type) - ,name(_name) - ,descriptorSymbol(_descriptorSymbol) - ,descriptorString(_descriptorString) - ,parentSymbol(0) - ,arrayTypeSymbol(0) - { - } - - ParsingSymbol::~ParsingSymbol() - { - } - - ParsingSymbolManager* ParsingSymbol::GetManager() - { - return manager; - } - - ParsingSymbol::SymbolType ParsingSymbol::GetType() - { - return type; - } - - const WString& ParsingSymbol::GetName() - { - return name; - } - - vint ParsingSymbol::GetSubSymbolCount() - { - return subSymbolList.Count(); - } - - ParsingSymbol* ParsingSymbol::GetSubSymbol(vint index) - { - if(0<=index && indexGetSubSymbolByName(name); - if(subSymbol) - { - return subSymbol; - } - else - { - scope=scope->GetDescriptorSymbol(); - } - } - } - return 0; - } - - ParsingSymbol* ParsingSymbol::SearchCommonBaseClass(ParsingSymbol* classType) - { - if(type==ParsingSymbol::ClassType && classType->GetType()==ParsingSymbol::ClassType) - { - vint aCount=0; - vint bCount=0; - ParsingSymbol* a=this; - ParsingSymbol* b=classType; - while(a || b) - { - if(a) - { - aCount++; - a=a->GetDescriptorSymbol(); - } - if(b) - { - bCount++; - b=b->GetDescriptorSymbol(); - } - } - - a=this; - b=classType; - vint min=aCountmin;i--) - { - a=a->GetDescriptorSymbol(); - } - for(vint i=bCount;i>min;i--) - { - b=b->GetDescriptorSymbol(); - } - - while(a!=b) - { - a=a->GetDescriptorSymbol(); - b=b->GetDescriptorSymbol(); - } - return a; - } - return 0; - } - -/*********************************************************************** -ParsingSymbolManager -***********************************************************************/ - - bool ParsingSymbolManager::TryAddSubSymbol(Ptr subSymbol, ParsingSymbol* parentSymbol) - { - if(parentSymbol->AddSubSymbol(subSymbol.Obj())) - { - createdSymbols.Add(subSymbol); - return true; - } - return false; - } - - ParsingSymbolManager::ParsingSymbolManager() - { - globalSymbol=new ParsingSymbol(this, ParsingSymbol::Global, L"", 0, L""); - tokenTypeSymbol=new ParsingSymbol(this, ParsingSymbol::TokenType, L"token", 0, L""); - createdSymbols.Add(globalSymbol); - createdSymbols.Add(tokenTypeSymbol); - } - - ParsingSymbolManager::~ParsingSymbolManager() - { - } - - ParsingSymbol* ParsingSymbolManager::GetGlobal() - { - return globalSymbol; - } - - ParsingSymbol* ParsingSymbolManager::GetTokenType() - { - return tokenTypeSymbol; - } - - ParsingSymbol* ParsingSymbolManager::GetArrayType(ParsingSymbol* elementType) - { - if(elementType->IsType()) - { - if(!elementType->arrayTypeSymbol) - { - elementType->arrayTypeSymbol=new ParsingSymbol(this, ParsingSymbol::ArrayType, L"", elementType, L""); - createdSymbols.Add(elementType->arrayTypeSymbol); - } - return elementType->arrayTypeSymbol; - } - else - { - return 0; - } - } - - ParsingSymbol* ParsingSymbolManager::AddClass(definitions::ParsingDefinitionClassDefinition* classDef, ParsingSymbol* baseType, ParsingSymbol* parentType) - { - if((!baseType || baseType->GetType()==ParsingSymbol::ClassType) && (!parentType || parentType->IsType())) - { - ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::ClassType, classDef->name, baseType, L""); - if(TryAddSubSymbol(symbol, parentType?parentType:globalSymbol)) - { - symbolClassDefinitionCache.Add(symbol, classDef); - classDefinitionSymbolCache.Add(classDef, symbol); - return symbol; - } - } - return 0; - } - - ParsingSymbol* ParsingSymbolManager::AddField(const WString& name, ParsingSymbol* classType, ParsingSymbol* fieldType) - { - if(classType && classType->GetType()==ParsingSymbol::ClassType && fieldType && fieldType->IsType()) - { - ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::ClassField, name, fieldType, L""); - if(TryAddSubSymbol(symbol, classType)) - { - return symbol; - } - } - return 0; - } - - ParsingSymbol* ParsingSymbolManager::AddEnum(const WString& name, ParsingSymbol* parentType) - { - if(!parentType || parentType->GetType()==ParsingSymbol::ClassType) - { - ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::EnumType, name, 0, L""); - if(TryAddSubSymbol(symbol, parentType?parentType:globalSymbol)) - { - return symbol; - } - } - return 0; - } - - ParsingSymbol* ParsingSymbolManager::AddEnumItem(const WString& name, ParsingSymbol* enumType) - { - if(enumType && enumType->GetType()==ParsingSymbol::EnumType) - { - ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::EnumItem, name, enumType, L""); - if(TryAddSubSymbol(symbol, enumType)) - { - return symbol; - } - } - return 0; - } - - ParsingSymbol* ParsingSymbolManager::AddTokenDefinition(const WString& name, const WString& regex) - { - ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::TokenDef, name, tokenTypeSymbol, regex); - if(TryAddSubSymbol(symbol, globalSymbol)) - { - return symbol; - } - return 0; - } - - ParsingSymbol* ParsingSymbolManager::AddRuleDefinition(const WString& name, ParsingSymbol* ruleType) - { - if(ruleType && ruleType->IsType()) - { - ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::RuleDef, name, ruleType, L""); - if(TryAddSubSymbol(symbol, globalSymbol)) - { - return symbol; - } - } - return 0; - } - - ParsingSymbolManager::ClassDefinition* ParsingSymbolManager::CacheGetClassDefinition(ParsingSymbol* type) - { - vint index=symbolClassDefinitionCache.Keys().IndexOf(type); - return index==-1?0:symbolClassDefinitionCache.Values().Get(index); - } - - ParsingSymbol* ParsingSymbolManager::CacheGetClassType(ClassDefinition* type) - { - vint index=classDefinitionSymbolCache.Keys().IndexOf(type); - return index==-1?0:classDefinitionSymbolCache.Values().Get(index); - } - - ParsingSymbol* ParsingSymbolManager::CacheGetType(definitions::ParsingDefinitionType* type, ParsingSymbol* scope) - { - DefinitionTypeScopePair key(type, scope); - vint index=definitionTypeSymbolCache.Keys().IndexOf(key); - return index==-1?0:definitionTypeSymbolCache.Values().Get(index); - } - - bool ParsingSymbolManager::CacheSetType(definitions::ParsingDefinitionType* type, ParsingSymbol* scope, ParsingSymbol* symbol) - { - DefinitionTypeScopePair key(type, scope); - vint index=definitionTypeSymbolCache.Keys().IndexOf(key); - if(index==-1) - { - definitionTypeSymbolCache.Add(key, symbol); - return true; - } - else - { - return false; - } - } - - ParsingSymbol* ParsingSymbolManager::CacheGetSymbol(definitions::ParsingDefinitionGrammar* grammar) - { - vint index=definitionGrammarSymbolCache.Keys().IndexOf(grammar); - return index==-1?0:definitionGrammarSymbolCache.Values().Get(index); - } - - bool ParsingSymbolManager::CacheSetSymbol(definitions::ParsingDefinitionGrammar* grammar, ParsingSymbol* symbol) - { - vint index=definitionGrammarSymbolCache.Keys().IndexOf(grammar); - if(index==-1) - { - definitionGrammarSymbolCache.Add(grammar, symbol); - return true; - } - else - { - return false; - } - } - - ParsingSymbol* ParsingSymbolManager::CacheGetType(definitions::ParsingDefinitionGrammar* grammar) - { - vint index=definitionGrammarTypeCache.Keys().IndexOf(grammar); - return index==-1?0:definitionGrammarTypeCache.Values().Get(index); - } - - bool ParsingSymbolManager::CacheSetType(definitions::ParsingDefinitionGrammar* grammar, ParsingSymbol* type) - { - vint index=definitionGrammarTypeCache.Keys().IndexOf(grammar); - if(index==-1) - { - definitionGrammarTypeCache.Add(grammar, type); - return true; - } - else - { - return false; - } - } - -/*********************************************************************** -FindType -***********************************************************************/ - - WString GetTypeFullName(ParsingSymbol* type) - { - if(type->GetType()==ParsingSymbol::ArrayType) - { - return GetTypeFullName(type->GetDescriptorSymbol())+L"[]"; - } - else - { - WString name=type->GetName(); - type=type->GetParentSymbol(); - while(type && type!=type->GetManager()->GetGlobal()) - { - name=type->GetName()+L"."+name; - type=type->GetParentSymbol(); - } - return name; - } - } - -/*********************************************************************** -FindType -***********************************************************************/ - - class FindTypeVisitor : public Object, public ParsingDefinitionType::IVisitor - { - public: - ParsingSymbolManager* manager; - ParsingSymbol* scope; - List>& errors; - ParsingSymbol* result; - - FindTypeVisitor(ParsingSymbolManager* _manager, ParsingSymbol* _scope, List>& _errors) - :manager(_manager) - ,scope(_scope) - ,errors(_errors) - ,result(0) - { - } - - void Visit(ParsingDefinitionPrimitiveType* node)override - { - ParsingSymbol* currentScope=scope; - while(currentScope) - { - ParsingSymbol* type=currentScope->GetSubSymbolByName(node->name); - if(type) - { - if(type->IsType()) - { - result=type; - } - else - { - errors.Add(new ParsingError(node, L"\""+node->name+L"\" in current scope is not a type.")); - } - return; - } - currentScope=currentScope->GetParentSymbol(); - } - errors.Add(new ParsingError(node, L"Cannot not find \""+node->name+L"\" in current scope.")); - } - - void Visit(ParsingDefinitionTokenType* node)override - { - result=manager->GetTokenType(); - } - - void Visit(ParsingDefinitionSubType* node)override - { - ParsingSymbol* type=FindType(node->parentType.Obj(), manager, scope, errors); - if(type) - { - ParsingSymbol* subType=type->SearchClassSubSymbol(node->subTypeName); - if(!subType) - { - errors.Add(new ParsingError(node, L"\""+GetTypeFullName(type)+L"\" does not has a sub type called \""+node->subTypeName+L"\".")); - } - else if(subType->IsType()) - { - result=subType; - } - else - { - errors.Add(new ParsingError(node, L"\""+GetTypeFullName(type)+L"\" contains a sub definition called \""+node->subTypeName+L"\" but this is not a type.")); - } - } - } - - void Visit(ParsingDefinitionArrayType* node)override - { - ParsingSymbol* type=FindType(node->elementType.Obj(), manager, scope, errors); - if(type) - { - result=manager->GetArrayType(type); - } - } - }; - - ParsingSymbol* FindType(definitions::ParsingDefinitionType* type, ParsingSymbolManager* manager, ParsingSymbol* scope, collections::List>& errors) - { - ParsingSymbol* result=manager->CacheGetType(type, scope); - if(!result) - { - FindTypeVisitor visitor(manager, (scope?scope:manager->GetGlobal()), errors); - type->Accept(&visitor); - result=visitor.result; - manager->CacheSetType(type, scope, result); - } - return result; - } - -/*********************************************************************** -PrepareSymbols -***********************************************************************/ - - class PrepareSymbolsTypeDefinitionVisitor : public Object, public ParsingDefinitionTypeDefinition::IVisitor - { - public: - ParsingSymbolManager* manager; - ParsingSymbol* scope; - List>& errors; - - PrepareSymbolsTypeDefinitionVisitor(ParsingSymbolManager* _manager, ParsingSymbol* _scope, List>& _errors) - :manager(_manager) - ,scope(_scope) - ,errors(_errors) - { - } - - bool EnsureNameNotExists(ParsingDefinitionTypeDefinition* node, const WString& subjectName) - { - if(scope->SearchClassSubSymbol(node->name)) - { - errors.Add(new ParsingError(node, L"Cannot redefine \""+node->name+L"\" to be "+subjectName+L".")); - return false; - } - else - { - return true; - } - } - - void Visit(ParsingDefinitionClassMemberDefinition* node)override - { - if(EnsureNameNotExists(node, L"a class field")) - { - ParsingSymbol* fieldType=FindType(node->type.Obj(), manager, scope, errors); - if(fieldType) - { - ParsingSymbol* field=manager->AddField(node->name, scope, fieldType); - if(!field) - { - errors.Add(new ParsingError(node, L"A class field cannot be defined here.")); - } - } - } - } - - void Visit(ParsingDefinitionClassDefinition* node)override - { - if(EnsureNameNotExists(node, L"a class type")) - { - ParsingSymbol* baseType=0; - if(node->parentType) - { - baseType=FindType(node->parentType.Obj(), manager, scope, errors); - } - ParsingSymbol* classType=manager->AddClass(node, baseType, (scope->GetType()==ParsingSymbol::Global?0:scope)); - if(classType) - { - PrepareSymbolsTypeDefinitionVisitor visitor(manager, classType, errors); - FOREACH(Ptr, subType, node->subTypes) - { - subType->Accept(&visitor); - } - FOREACH(Ptr, member, node->members) - { - member->Accept(&visitor); - } - } - else - { - errors.Add(new ParsingError(node, L"A class type cannot be defined here.")); - } - } - } - - void Visit(ParsingDefinitionEnumMemberDefinition* node)override - { - if(EnsureNameNotExists(node, L"an enum item")) - { - ParsingSymbol* enumItem=manager->AddEnumItem(node->name, scope); - if(!enumItem) - { - errors.Add(new ParsingError(node, L"An enum item cannot be defined here.")); - } - } - } - - void Visit(ParsingDefinitionEnumDefinition* node)override - { - if(EnsureNameNotExists(node, L"an enum type")) - { - ParsingSymbol* enumType=manager->AddEnum(node->name, (scope->GetType()==ParsingSymbol::Global?0:scope)); - if(enumType) - { - PrepareSymbolsTypeDefinitionVisitor visitor(manager, enumType, errors); - FOREACH(Ptr, member, node->members) - { - member->Accept(&visitor); - } - } - else - { - errors.Add(new ParsingError(node, L"An enum type cannot be defined here.")); - } - } - } - }; - - void PrepareSymbols(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors) - { - { - PrepareSymbolsTypeDefinitionVisitor visitor(manager, manager->GetGlobal(), errors); - FOREACH(Ptr, typeDefinition, definition->types) - { - typeDefinition->Accept(&visitor); - } - } - - FOREACH(Ptr, token, definition->tokens) - { - if(manager->GetGlobal()->GetSubSymbolByName(token->name)) - { - errors.Add(new ParsingError(token.Obj(), L"Cannot redefine \""+token->name+L"\" to be a token definition.")); - } - else - { - manager->AddTokenDefinition(token->name, token->regex); - try - { - regex_internal::ParseRegexExpression(token->regex); - } - catch(const ParsingException& ex) - { - errors.Add(new ParsingError(token.Obj(), L"Wrong token definition for \""+token->name+L"\": "+ex.Message())); - } - } - } - - FOREACH(Ptr, rule, definition->rules) - { - if(manager->GetGlobal()->GetSubSymbolByName(rule->name)) - { - errors.Add(new ParsingError(rule.Obj(), L"Cannot redefine \""+rule->name+L"\" to be a rule definition.")); - } - else - { - ParsingSymbol* type=FindType(rule->type.Obj(), manager, 0, errors); - if(type) - { - if(type->GetType()!=ParsingSymbol::ClassType) - { - errors.Add(new ParsingError(rule.Obj(), L"\""+GetTypeFullName(type)+L"\" cannot be a type of a rule because this is not a class type.")); - } - manager->AddRuleDefinition(rule->name, type); - } - } - } - } - -/*********************************************************************** -ValidateRuleStructure -***********************************************************************/ - - class ValidateRuleStructureVisitor : public Object, public ParsingDefinitionGrammar::IVisitor - { - public: - Ptr definition; - ParsingSymbolManager* manager; - ParsingDefinitionRuleDefinition* rule; - List>& errors; - vint loopCount; - - ValidateRuleStructureVisitor(Ptr _definition, ParsingSymbolManager* _manager, ParsingDefinitionRuleDefinition* _rule, List>& _errors) - :definition(_definition) - ,manager(_manager) - ,errors(_errors) - ,rule(_rule) - ,loopCount(0) - { - } - - void CheckCreationType(ParsingDefinitionGrammar* node, ParsingSymbol* nodeType) - { - if(nodeType->GetType()==ParsingSymbol::ClassType) - { - ParsingSymbol* ruleType=manager->GetGlobal()->GetSubSymbolByName(rule->name)->GetDescriptorSymbol(); - ParsingSymbol* currentType=nodeType; - while(currentType && currentType!=ruleType) - { - currentType=currentType->GetDescriptorSymbol(); - } - if(!currentType) - { - errors.Add(new ParsingError(node, L"Cannot create type \""+GetTypeFullName(nodeType)+L"\" in a rule of type \""+GetTypeFullName(ruleType)+L"\" because there are no implicit conversions from the created type to the rule type.")); - } - } - else - { - errors.Add(new ParsingError(node, L"\""+GetTypeFullName(nodeType)+L"\" cannot be created because this is not a class type.")); - } - } - - void Visit(ParsingDefinitionPrimitiveGrammar* node)override - { - ParsingSymbol* symbol=manager->GetGlobal()->GetSubSymbolByName(node->name); - if(!symbol) - { - errors.Add(new ParsingError(node, L"Cannot find a token or a rule with name \""+node->name+L"\".")); - } - else switch(symbol->GetType()) - { - case ParsingSymbol::TokenDef: - { - bool discard=false; - FOREACH(Ptr, token, definition->tokens) - { - if(token->name==symbol->GetName()) - { - discard=token->discard; - break; - } - } - if(discard) - { - errors.Add(new ParsingError(node, L"Cannot use discard token \""+node->name+L"\" as input.")); - break; - } - } - case ParsingSymbol::RuleDef: - { - ParsingSymbol* symbolType=symbol->GetDescriptorSymbol(); - manager->CacheSetSymbol(node, symbol); - manager->CacheSetType(node, symbolType); - } - break; - default: - errors.Add(new ParsingError(node, L"\""+node->name+L"\" is not a token definition or rule definition.")); - } - } - - void Visit(ParsingDefinitionTextGrammar* node)override - { - WString regex=regex_internal::EscapeTextForRegex(node->text); - for(vint i=0;iGetGlobal()->GetSubSymbolCount();i++) - { - ParsingSymbol* symbol=manager->GetGlobal()->GetSubSymbol(i); - if(symbol->GetType()==ParsingSymbol::TokenDef) - { - WString normalizedRegex=regex_internal::NormalizeEscapedTextForRegex(symbol->GetDescriptorString()); - if(normalizedRegex==regex) - { - manager->CacheSetSymbol(node, symbol); - manager->CacheSetType(node, manager->GetTokenType()); - return; - } - } - } - errors.Add(new ParsingError(node, L"Cannot find a token whose definition is exactly \""+regex+L"\".")); - } - - void Visit(ParsingDefinitionSequenceGrammar* node)override - { - node->first->Accept(this); - node->second->Accept(this); - } - - void Visit(ParsingDefinitionAlternativeGrammar* node)override - { - node->first->Accept(this); - node->second->Accept(this); - } - - void Visit(ParsingDefinitionLoopGrammar* node)override - { - loopCount++; - node->grammar->Accept(this); - loopCount--; - } - - void Visit(ParsingDefinitionOptionalGrammar* node)override - { - node->grammar->Accept(this); - } - - void Visit(ParsingDefinitionCreateGrammar* node)override - { - if(loopCount>0) - { - errors.Add(new ParsingError(node, L"Parsing tree node creation (the \"as\" operator) is not allowed inside loops.")); - } - if(ParsingSymbol* nodeType=FindType(node->type.Obj(), manager, 0, errors)) - { - CheckCreationType(node, nodeType); - } - node->grammar->Accept(this); - } - - void Visit(ParsingDefinitionAssignGrammar* node)override - { - if(!node->grammar.Cast() && !node->grammar.Cast()) - { - errors.Add(new ParsingError(node, L"Only parsing tree node returned from a rule or a token can be assigned to a class field.")); - } - node->grammar->Accept(this); - } - - void Visit(ParsingDefinitionUseGrammar* node)override - { - if(loopCount>0) - { - errors.Add(new ParsingError(node, L"Parsing tree node reusing (the \"!\" operator) is not allowed inside loops.")); - } - if(!node->grammar.Cast()) - { - errors.Add(new ParsingError(node, L"Only parsing tree node returned from a rule can be reused.")); - } - else if(ParsingSymbol* symbol=manager->CacheGetSymbol(node->grammar.Obj())) - { - if(symbol->GetType()!=ParsingSymbol::RuleDef) - { - errors.Add(new ParsingError(node, L"Only parsing tree node returned from a rule can be reused.")); - } - } - if(ParsingSymbol* nodeType=manager->CacheGetType(node->grammar.Obj())) - { - CheckCreationType(node, nodeType); - } - node->grammar->Accept(this); - } - - void Visit(ParsingDefinitionSetterGrammar* node)override - { - node->grammar->Accept(this); - } - }; - - void ValidateRuleStructure(Ptr definition, Ptr rule, ParsingSymbolManager* manager, collections::List>& errors) - { - FOREACH(Ptr, grammar, rule->grammars) - { - ValidateRuleStructureVisitor visitor(definition, manager, rule.Obj(), errors); - grammar->Accept(&visitor); - } - } - -/*********************************************************************** -ResolveRuleSymbols -***********************************************************************/ - - struct GrammarPathFragment - { - // primitive, text -> transition - // loop, optional, create, use assign, setter -> epsilon - GrammarPathFragment* previousFragment; - ParsingDefinitionGrammar* grammar; - bool epsilon; - ParsingSymbol* createdType; - - GrammarPathFragment() - :previousFragment(0) - ,grammar(0) - ,epsilon(false) - ,createdType(0) - { - } - }; - - struct GrammarPath - { - List> fragments; - ParsingSymbol* pathType; - - GrammarPath() - :pathType(0) - { - } - - WString ToString() - { - WString result; - FOREACH(Ptr, fragment, fragments) - { - if(!fragment->epsilon) - { - if(result!=L"") result+=L" "; - result+=GrammarToString(fragment->grammar); - } - } - return result; - } - }; - - struct GrammarPathContainer - { - List> paths; - }; - - class EnumerateGrammarPathVisitor : public Object, public ParsingDefinitionGrammar::IVisitor - { - public: - ParsingSymbolManager* manager; - ParsingDefinitionRuleDefinition* rule; - - List> createdFragments; - List currentFragmentEnds; - - EnumerateGrammarPathVisitor(ParsingSymbolManager* _manager, ParsingDefinitionRuleDefinition* _rule) - :manager(_manager) - ,rule(_rule) - { - } - - EnumerateGrammarPathVisitor(const EnumerateGrammarPathVisitor& visitor) - :manager(visitor.manager) - ,rule(visitor.rule) - { - CopyFrom(currentFragmentEnds, visitor.currentFragmentEnds); - } - - void Join(const EnumerateGrammarPathVisitor& visitor) - { - CopyFrom(createdFragments, visitor.createdFragments, true); - CopyFrom(currentFragmentEnds, visitor.currentFragmentEnds, true); - } - - void AddFragment(ParsingDefinitionGrammar* node, bool epsilon, ParsingSymbol* createdType) - { - if(currentFragmentEnds.Count()==0) - { - GrammarPathFragment* fragment=new GrammarPathFragment; - fragment->grammar=node; - fragment->epsilon=epsilon; - fragment->createdType=createdType; - createdFragments.Add(fragment); - currentFragmentEnds.Add(fragment); - } - else for(vint i=0;igrammar=node; - fragment->epsilon=epsilon; - fragment->createdType=createdType; - createdFragments.Add(fragment); - fragment->previousFragment=currentFragmentEnds[i]; - currentFragmentEnds[i]=fragment; - } - } - - void BuildPath(List>& paths) - { - FOREACH(GrammarPathFragment*, fragment, currentFragmentEnds) - { - Ptr path=new GrammarPath; - paths.Add(path); - - GrammarPathFragment* current=fragment; - while(current) - { - path->fragments.Insert(0, createdFragments[createdFragments.IndexOf(current)]); - current=current->previousFragment; - } - } - } - - void Visit(ParsingDefinitionPrimitiveGrammar* node)override - { - AddFragment(node, false, 0); - } - - void Visit(ParsingDefinitionTextGrammar* node)override - { - AddFragment(node, false, 0); - } - - void Visit(ParsingDefinitionSequenceGrammar* node)override - { - node->first->Accept(this); - node->second->Accept(this); - } - - void Visit(ParsingDefinitionAlternativeGrammar* node)override - { - EnumerateGrammarPathVisitor visitor(*this); - node->second->Accept(&visitor); - node->first->Accept(this); - Join(visitor); - } - - void Visit(ParsingDefinitionLoopGrammar* node)override - { - EnumerateGrammarPathVisitor visitor(*this); - node->grammar->Accept(&visitor); - AddFragment(node, true, 0); - Join(visitor); - } - - void Visit(ParsingDefinitionOptionalGrammar* node)override - { - EnumerateGrammarPathVisitor visitor(*this); - node->grammar->Accept(&visitor); - AddFragment(node, true, 0); - Join(visitor); - } - - void Visit(ParsingDefinitionCreateGrammar* node)override - { - node->grammar->Accept(this); - AddFragment(node, true, manager->CacheGetType(node->type.Obj(), 0)); - } - - void Visit(ParsingDefinitionAssignGrammar* node)override - { - node->grammar->Accept(this); - AddFragment(node, true, 0); - } - - void Visit(ParsingDefinitionUseGrammar* node)override - { - node->grammar->Accept(this); - AddFragment(node, true, manager->CacheGetSymbol(node->grammar.Obj())->GetDescriptorSymbol()); - } - - void Visit(ParsingDefinitionSetterGrammar* node)override - { - node->grammar->Accept(this); - AddFragment(node, true, 0); - } - }; - - class ResolveAssignerGrammarVisitor : public Object, public ParsingDefinitionGrammar::IVisitor - { - public: - typedef Dictionary> GrammarPathMap; - ParsingSymbolManager* manager; - List>& errors; - GrammarPathMap& grammarPaths; - - ResolveAssignerGrammarVisitor(ParsingSymbolManager* _manager, List>& _errors, GrammarPathMap& _grammarPaths) - :manager(_manager) - ,errors(_errors) - ,grammarPaths(_grammarPaths) - { - } - - ParsingSymbol* GetFieldFromCombined(ParsingDefinitionGrammar* node, const WString& fieldName) - { - Ptr paths=grammarPaths[node]; - ParsingSymbol* pathType=paths->paths[0]->pathType; - for(vint i=1;ipaths.Count();i++) - { - pathType=pathType->SearchCommonBaseClass(paths->paths[i]->pathType); - if(!pathType) break; - } - - WString pathNames; - WString typeNames; - for(int i=0;ipaths.Count();i++) - { - if(i>0) - { - pathNames+=L", "; - typeNames+=L", "; - } - pathNames+=L"{"+paths->paths[i]->ToString()+L"}"; - typeNames+=L"\""+GetTypeFullName(paths->paths[i]->pathType)+L"\""; - } - - if(pathType) - { - ParsingSymbol* field=pathType->SearchClassSubSymbol(fieldName); - if(!field) - { - errors.Add(new ParsingError(node, L"There are multiple grammar paths with different created types get through this operation for class field \""+fieldName+L"\", but the common base type \""+GetTypeFullName(pathType)+L"\" of these types doesn't contains the required class field. Types: "+typeNames+L"; Paths: "+pathNames+L".")); - } - else if(field->GetType()!=ParsingSymbol::ClassField) - { - errors.Add(new ParsingError(node, L"There are multiple grammar paths with different created types get through this operation for class field \""+fieldName+L"\", and the common base type \""+GetTypeFullName(pathType)+L"\" of these types contains a symbol called \""+fieldName+L"\", but this is not a class field. Types: "+typeNames+L"; Paths: "+pathNames+L".")); - } - else - { - return field; - } - } - else - { - errors.Add(new ParsingError(node, L"There are multiple grammar paths with different created types get through this operation for class field \""+fieldName+L"\", but these types don't have a common base type. Types: "+typeNames+L"; Paths: "+pathNames+L".")); - } - return 0; - } - - void Visit(ParsingDefinitionPrimitiveGrammar* node)override - { - } - - void Visit(ParsingDefinitionTextGrammar* node)override - { - } - - void Visit(ParsingDefinitionSequenceGrammar* node)override - { - } - - void Visit(ParsingDefinitionAlternativeGrammar* node)override - { - } - - void Visit(ParsingDefinitionLoopGrammar* node)override - { - } - - void Visit(ParsingDefinitionOptionalGrammar* node)override - { - } - - void Visit(ParsingDefinitionCreateGrammar* node)override - { - } - - void Visit(ParsingDefinitionAssignGrammar* node)override - { - if(ParsingSymbol* field=GetFieldFromCombined(node, node->memberName)) - { - manager->CacheSetSymbol(node, field); - manager->CacheSetType(node, field->GetDescriptorSymbol()); - - ParsingSymbol* fieldType=field->GetDescriptorSymbol(); - ParsingSymbol* valueType=manager->CacheGetType(node->grammar.Obj()); - ParsingSymbol* targetFieldType=fieldType; - if(targetFieldType->GetType()==ParsingSymbol::ArrayType) - { - targetFieldType=targetFieldType->GetDescriptorSymbol(); - } - if(targetFieldType!=valueType && valueType->SearchCommonBaseClass(targetFieldType)!=targetFieldType) - { - errors.Add(new ParsingError(node, L"Cannot assign value from grammar {"+GrammarToString(node->grammar.Obj())+L"} of type \""+GetTypeFullName(valueType)+L"\" to the field \""+node->memberName+L"\" of type \""+GetTypeFullName(fieldType)+L"\".")); - } - } - } - - void Visit(ParsingDefinitionUseGrammar* node)override - { - } - - void Visit(ParsingDefinitionSetterGrammar* node)override - { - if(ParsingSymbol* field=GetFieldFromCombined(node, node->memberName)) - { - manager->CacheSetSymbol(node, field); - manager->CacheSetType(node, field->GetDescriptorSymbol()); - - if(field->GetDescriptorSymbol()->GetType()!=ParsingSymbol::EnumType) - { - errors.Add(new ParsingError(node, L"Setter operation (the \"with\" operator) can only specify the value of a class field of an enum type. But \""+GetTypeFullName(field->GetDescriptorSymbol())+L"\" is not a enum type.")); - } - else - { - ParsingSymbol* enumType=field->GetDescriptorSymbol(); - ParsingSymbol* enumItem=enumType->GetSubSymbolByName(node->value); - if(!enumItem) - { - errors.Add(new ParsingError(node, L"Type \""+GetTypeFullName(enumType)+L"\" from field \""+node->memberName+L"\" does not have an enum item called \""+node->value+L"\".")); - } - else if(enumItem->GetType()!=ParsingSymbol::EnumItem) - { - errors.Add(new ParsingError(node, L"Type \""+GetTypeFullName(enumType)+L"\" from field \""+node->memberName+L"\" has a symbol called \""+node->value+L"\", but this is not an enum item.")); - } - } - } - } - }; - - void ResolveRuleSymbols(Ptr rule, ParsingSymbolManager* manager, collections::List>& errors) - { - ParsingSymbol* ruleType=manager->GetGlobal()->GetSubSymbolByName(rule->name)->GetDescriptorSymbol(); - - FOREACH(Ptr, grammar, rule->grammars) - { - List> paths; - { - EnumerateGrammarPathVisitor visitor(manager, rule.Obj()); - grammar->Accept(&visitor); - visitor.BuildPath(paths); - } - - FOREACH(Ptr, path, paths) - { - path->pathType=ruleType; - vint createdTypeCount=0; - vint transitionCount=0; - FOREACH(Ptr, fragment, path->fragments) - { - if(fragment->createdType) - { - createdTypeCount++; - path->pathType=fragment->createdType; - } - if(!fragment->epsilon) - { - transitionCount++; - } - } - - if(createdTypeCount==0) - { - errors.Add(new ParsingError(grammar.Obj(), L"No parsing tree node is created if the following path is chosen: \""+path->ToString()+L"\" in rule \""+rule->name+L"\".")); - } - else if(createdTypeCount>1) - { - errors.Add(new ParsingError(grammar.Obj(), L"Multiple parsing tree nodes are created if the following path is chosen: \""+path->ToString()+L"\" in rule \""+rule->name+L"\".")); - } - if(transitionCount==0) - { - errors.Add(new ParsingError(grammar.Obj(), L"Rule \""+rule->name+L"\" is not allowed to infer to an empty token sequence.")); - } - } - - ResolveAssignerGrammarVisitor::GrammarPathMap grammarPathMap; - FOREACH(Ptr, path, paths) - { - FOREACH(Ptr, fragment, path->fragments) - { - ParsingDefinitionGrammar* grammar=fragment->grammar; - Ptr container; - vint index=grammarPathMap.Keys().IndexOf(grammar); - if(index==-1) - { - container=new GrammarPathContainer; - grammarPathMap.Add(grammar, container); - } - else - { - container=grammarPathMap.Values().Get(index); - } - container->paths.Add(path); - } - } - - ResolveAssignerGrammarVisitor visitor(manager, errors, grammarPathMap); - FOREACH(ParsingDefinitionGrammar*, grammar, grammarPathMap.Keys()) - { - grammar->Accept(&visitor); - } - } - } - -/*********************************************************************** -ResolveSymbols -***********************************************************************/ - - void ResolveTypeSymbols(Ptr type, ParsingSymbolManager* manager, ParsingSymbol* scope, collections::List>& errors) - { - if(Ptr node=type.Cast()) - { - if(node->ambiguousType) - { - ParsingSymbol* ambigiousType=FindType(node->ambiguousType.Obj(), manager, scope, errors); - WString ambiguousTypeText=TypeToString(node->ambiguousType.Obj()); - if(!ambigiousType) - { - errors.Add(new ParsingError(node.Obj(), L"Ambiguous type \""+ambiguousTypeText+L"\" for type \""+node->name+L"\" does not exist.")); - } - else if(ambigiousType->GetType()!=ParsingSymbol::ClassType) - { - errors.Add(new ParsingError(node.Obj(), L"Ambiguous type \""+ambiguousTypeText+L"\" for type \""+node->name+L"\" is not a type.")); - } - else if(ambigiousType->GetDescriptorSymbol()!=manager->GetGlobal()->GetSubSymbolByName(node->name)) - { - errors.Add(new ParsingError(node.Obj(), L"Ambiguous type \""+ambiguousTypeText+L"\" for type \""+node->name+L"\" does not inherit from \""+node->name+L"\".")); - } - else - { - bool correct=false; - if(ambigiousType->GetSubSymbolCount()==1) - { - ParsingSymbol* field=ambigiousType->GetSubSymbol(0); - if(field->GetName()==L"items" && field->GetType()==ParsingSymbol::ClassField) - { - ParsingSymbol* fieldType=field->GetDescriptorSymbol(); - if(fieldType->GetType()==ParsingSymbol::ArrayType && fieldType->GetDescriptorSymbol()==ambigiousType->GetDescriptorSymbol()) - { - correct=true; - } - } - } - if(!correct) - { - errors.Add(new ParsingError(node.Obj(), L"Ambiguous type \""+ambiguousTypeText+L"\" for type \""+node->name+L"\" can only contains one field called \"item\" which should be an array of \""+node->name+L"\".")); - } - } - } - - ParsingSymbol* classType=manager->CacheGetClassType(node.Obj()); - if(classType) - { - FOREACH(Ptr, subType, node->subTypes) - { - ResolveTypeSymbols(subType, manager, classType, errors); - } - } - } - } - - void ResolveSymbols(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors) - { - FOREACH(Ptr, type, definition->types) - { - ResolveTypeSymbols(type, manager, manager->GetGlobal(), errors); - } - - FOREACH(Ptr, rule, definition->rules) - { - vint errorCount=errors.Count(); - ValidateRuleStructure(definition, rule, manager, errors); - if(errors.Count()==errorCount) - { - ResolveRuleSymbols(rule, manager, errors); - } - } - } - -/*********************************************************************** -ValidateDefinition -***********************************************************************/ - - void ValidateDefinition(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors) - { - PrepareSymbols(definition, manager, errors); - if(errors.Count()>0) return; - ResolveSymbols(definition, manager, errors); - } - } - } -} - -/*********************************************************************** -.\PARSING\PARSINGAUTOMATON.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - using namespace collections; - using namespace definitions; - - namespace analyzing - { - -/*********************************************************************** -Action -***********************************************************************/ - - Action::Action() - :actionType(Create) - ,actionSource(0) - ,actionTarget(0) - ,creatorRule(0) - ,shiftReduceSource(0) - ,shiftReduceTarget(0) - { - } - - Action::~Action() - { - } - -/*********************************************************************** -Transition -***********************************************************************/ - - Transition::Transition() - :source(0) - ,target(0) - ,transitionType(Epsilon) - ,stackOperationType(None) - ,transitionSymbol(0) - { - } - - Transition::~Transition() - { - } - - bool Transition::IsEquivalent(Transition* t1, Transition* t2, bool careSourceAndTarget) - { - if(careSourceAndTarget) - { - if(t1->source!=t2->source || t1->target!=t2->target) - { - return false; - } - } - if( t1->actions.Count()!=t2->actions.Count() || - t1->transitionType!=t2->transitionType || - t1->transitionSymbol!=t2->transitionSymbol) - { - return false; - } - for(vint j=0;jactions.Count();j++) - { - Ptr a1=t1->actions[j]; - Ptr a2=t2->actions[j]; - if( a1->actionType!=a2->actionType || - a1->actionSource!=a2->actionSource || - a1->actionTarget!=a2->actionTarget || - a1->shiftReduceSource!=a2->shiftReduceSource ) - { - return false; - } - } - return true; - } - -/*********************************************************************** -State -***********************************************************************/ - - State::State() - :ownerRule(0) - ,ownerRuleSymbol(0) - ,grammarNode(0) - ,stateNode(0) - ,statePosition(BeforeNode) - ,endState(false) - { - } - - State::~State() - { - } - -/*********************************************************************** -RuleInfo -***********************************************************************/ - - RuleInfo::RuleInfo() - :rootRuleStartState(0) - ,rootRuleEndState(0) - ,startState(0) - ,stateNameCount(0) - { - } - - RuleInfo::~RuleInfo() - { - } - -/*********************************************************************** -Automaton -***********************************************************************/ - - Automaton::Automaton(ParsingSymbolManager* _symbolManager) - :symbolManager(_symbolManager) - { - } - - Automaton::~Automaton() - { - } - - void Automaton::AddRuleInfo(definitions::ParsingDefinitionRuleDefinition* rule, Ptr ruleInfo) - { - orderedRulesDefs.Add(rule); - ruleInfos.Add(ruleInfo); - ruleDefToInfoMap.Add(rule, ruleInfo); - } - - State* Automaton::RuleStartState(definitions::ParsingDefinitionRuleDefinition* ownerRule) - { - State* state=new State; - states.Add(state); - - state->ownerRule=ownerRule; - state->ownerRuleSymbol=symbolManager->GetGlobal()->GetSubSymbolByName(ownerRule->name); - state->stateName=ownerRule->name+L".Start"; - state->stateExpression=L"@ <"+ownerRule->name+L">"; - return state; - } - - State* Automaton::RootRuleStartState(definitions::ParsingDefinitionRuleDefinition* ownerRule) - { - State* state=new State; - states.Add(state); - - state->ownerRule=ownerRule; - state->ownerRuleSymbol=symbolManager->GetGlobal()->GetSubSymbolByName(ownerRule->name); - state->stateName=ownerRule->name+L".RootStart"; - state->stateExpression=L"@ $<"+ownerRule->name+L">"; - return state; - } - - State* Automaton::RootRuleEndState(definitions::ParsingDefinitionRuleDefinition* ownerRule) - { - State* state=new State; - states.Add(state); - - state->ownerRule=ownerRule; - state->ownerRuleSymbol=symbolManager->GetGlobal()->GetSubSymbolByName(ownerRule->name); - state->stateName=ownerRule->name+L".RootEnd"; - state->stateExpression=L"$<"+ownerRule->name+L"> @"; - return state; - } - - State* Automaton::StartState(definitions::ParsingDefinitionRuleDefinition* ownerRule, definitions::ParsingDefinitionGrammar* grammarNode, definitions::ParsingDefinitionGrammar* stateNode) - { - State* state=new State; - states.Add(state); - - state->ownerRule=ownerRule; - state->ownerRuleSymbol=symbolManager->GetGlobal()->GetSubSymbolByName(ownerRule->name); - state->grammarNode=grammarNode; - state->stateNode=stateNode; - state->statePosition=State::BeforeNode; - state->stateName=ownerRule->name+L"."+itow(++ruleDefToInfoMap[ownerRule]->stateNameCount); - stateNode=FindAppropriateGrammarState(grammarNode, stateNode, true); - state->stateExpression=L"<"+ownerRule->name+L">: "+GrammarStateToString(grammarNode, stateNode, true); - return state; - } - - State* Automaton::EndState(definitions::ParsingDefinitionRuleDefinition* ownerRule, definitions::ParsingDefinitionGrammar* grammarNode, definitions::ParsingDefinitionGrammar* stateNode) - { - State* state=new State; - states.Add(state); - - state->ownerRule=ownerRule; - state->ownerRuleSymbol=symbolManager->GetGlobal()->GetSubSymbolByName(ownerRule->name); - state->grammarNode=grammarNode; - state->stateNode=stateNode; - state->statePosition=State::AfterNode; - state->stateName=ownerRule->name+L"."+itow(++ruleDefToInfoMap[ownerRule]->stateNameCount); - stateNode=FindAppropriateGrammarState(grammarNode, stateNode, false); - state->stateExpression=L"<"+ownerRule->name+L">: "+GrammarStateToString(grammarNode, stateNode, false); - return state; - } - - State* Automaton::CopyState(State* oldState) - { - State* resultState=0; - if(oldState->statePosition==State::BeforeNode) - { - resultState=StartState(oldState->ownerRule, oldState->grammarNode, oldState->stateNode); - } - else - { - resultState=EndState(oldState->ownerRule, oldState->grammarNode, oldState->stateNode); - } - resultState->endState=oldState->endState; - return resultState; - } - - Transition* Automaton::CreateTransition(State* start, State* end) - { - Transition* transition=new Transition; - transitions.Add(transition); - - start->transitions.Add(transition); - end->inputs.Add(transition); - - transition->source=start; - transition->target=end; - return transition; - } - - Transition* Automaton::TokenBegin(State* start, State* end) - { - Transition* transition=CreateTransition(start, end); - transition->transitionType=Transition::TokenBegin; - return transition; - } - - Transition* Automaton::TokenFinish(State* start, State* end) - { - Transition* transition=CreateTransition(start, end); - transition->transitionType=Transition::TokenFinish; - return transition; - } - - Transition* Automaton::NormalReduce(State* start, State* end) - { - Transition* transition=CreateTransition(start, end); - transition->transitionType=Transition::NormalReduce; - return transition; - } - - Transition* Automaton::LeftRecursiveReduce(State* start, State* end) - { - Transition* transition=CreateTransition(start, end); - transition->transitionType=Transition::LeftRecursiveReduce; - return transition; - } - - Transition* Automaton::Epsilon(State* start, State* end) - { - Transition* transition=CreateTransition(start, end); - transition->transitionType=Transition::Epsilon; - return transition; - } - - Transition* Automaton::Symbol(State* start, State* end, ParsingSymbol* transitionSymbol) - { - Transition* transition=CreateTransition(start, end); - transition->transitionType=Transition::Symbol; - transition->transitionSymbol=transitionSymbol; - return transition; - } - - Transition* Automaton::CopyTransition(State* start, State* end, Transition* oldTransition) - { - Transition* transition=CreateTransition(start, end); - transition->transitionType=oldTransition->transitionType; - transition->stackOperationType=oldTransition->stackOperationType; - transition->transitionSymbol=oldTransition->transitionSymbol; - return transition; - } - - void Automaton::DeleteTransition(Transition* transition) - { - transition->source->transitions.Remove(transition); - transition->target->inputs.Remove(transition); - transitions.Remove(transition); - } - - void Automaton::DeleteState(State* state) - { - while(state->inputs.Count()) - { - DeleteTransition(state->inputs[0]); - } - while(state->transitions.Count()) - { - DeleteTransition(state->transitions[0]); - } - states.Remove(state); - } - } - } -} - -/*********************************************************************** -.\PARSING\PARSINGAUTOMATON_CLOSURE.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - using namespace collections; - using namespace definitions; - - namespace analyzing - { - -/*********************************************************************** -CreateNondeterministicPDAFromEpsilonPDA::closure_searching -***********************************************************************/ - - // closure function for searching reachable states - ClosureItem::SearchResult EpsilonClosure(Transition* transition) - { - return - transition->transitionType!=Transition::Epsilon?ClosureItem::Hit: - //transition->target->endState?ClosureItem::Blocked: - ClosureItem::Continue; - } - - // closure searching function - void SearchClosureInternal(ClosureItem::SearchResult(*closurePredicate)(Transition*), List& transitionPath, Transition* transition, State* state, List& closure) - { - FOREACH(Transition*, singleTransitionPath, transitionPath) - { - if(singleTransitionPath->source==state && closurePredicate(singleTransitionPath)!=ClosureItem::Blocked) - { - Ptr> path=new List; - CopyFrom(*path.Obj(), transitionPath); - closure.Add(ClosureItem(state, path, true)); - return; - } - } - - ClosureItem::SearchResult result=transition?closurePredicate(transition):ClosureItem::Continue; - switch(result) - { - case ClosureItem::Continue: - { - FOREACH(Transition*, newTransition, state->transitions) - { - if(!transitionPath.Contains(newTransition)) - { - transitionPath.Add(newTransition); - SearchClosureInternal(closurePredicate, transitionPath, newTransition, newTransition->target, closure); - transitionPath.RemoveAt(transitionPath.Count()-1); - } - } - } - break; - case ClosureItem::Hit: - { - Ptr> path=new List; - CopyFrom(*path.Obj(), transitionPath); - closure.Add(ClosureItem(state, path, false)); - } - break; - default:; - } - } - - void SearchClosure(ClosureItem::SearchResult(*closurePredicate)(Transition*), State* startState, List& closure) - { - List transitionPath; - SearchClosureInternal(closurePredicate, transitionPath, 0, startState, closure); - } - - // map old state to new state and track all states that are not visited yet - State* GetMappedState(Ptr newAutomaton, State* oldState, List& scanningStates, Dictionary& oldNewStateMap) - { - State* newState=0; - vint mapIndex=oldNewStateMap.Keys().IndexOf(oldState); - if(mapIndex==-1) - { - newState=newAutomaton->CopyState(oldState); - oldNewStateMap.Add(oldState, newState); - } - else - { - newState=oldNewStateMap.Values().Get(mapIndex); - } - if(!scanningStates.Contains(oldState)) - { - scanningStates.Add(oldState); - } - return newState; - } - -/*********************************************************************** -RemoveEpsilonTransitions -***********************************************************************/ - - void RemoveEpsilonTransitions(collections::Dictionary& oldNewStateMap, collections::List& scanningStates, Ptr automaton) - { - vint currentStateIndex=0; - - while(currentStateIndex closure; - SearchClosure(&EpsilonClosure, currentOldState, closure); - FOREACH(ClosureItem, closureItem, closure) - { - Transition* oldTransition=closureItem.transitions->Get(closureItem.transitions->Count()-1); - if(!closureItem.cycle || oldTransition->transitionType!=Transition::Epsilon) - { - // if the oldTransition begins from an end state - if(oldTransition->source->endState && closureItem.transitions->Count()>1) - { - // keep a epsilon transition that without the last "TokenFinish" - State* newEndState=GetMappedState(automaton, oldTransition->source, scanningStates, oldNewStateMap); - Transition* transition=automaton->Epsilon(currentNewState, newEndState); - FOREACH(Transition*, pathTransition, *closureItem.transitions.Obj()) - { - if(pathTransition==oldTransition) break; - CopyFrom(transition->actions, pathTransition->actions, true); - } - } - else - { - // build compacted non-epsilon transition to the target state of the path - State* newEndState=GetMappedState(automaton, oldTransition->target, scanningStates, oldNewStateMap); - Transition* transition=automaton->CopyTransition(currentNewState, newEndState, oldTransition); - FOREACH(Transition*, pathTransition, *closureItem.transitions.Obj()) - { - CopyFrom(transition->actions, pathTransition->actions, true); - } - } - } - } - } - } - } - } -} - -/*********************************************************************** -.\PARSING\PARSINGAUTOMATON_EPDA.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - using namespace collections; - using namespace definitions; - - namespace analyzing - { - -/*********************************************************************** -CreateEpsilonPDAVisitor -***********************************************************************/ - - class CreateEpsilonPDAVisitor : public Object, public ParsingDefinitionGrammar::IVisitor - { - public: - Ptr automaton; - ParsingDefinitionRuleDefinition* rule; - ParsingDefinitionGrammar* ruleGrammar; - State* startState; - State* endState; - Transition* result; - - CreateEpsilonPDAVisitor(Ptr _automaton, ParsingDefinitionRuleDefinition* _rule, ParsingDefinitionGrammar* _ruleGrammar, State* _startState, State* _endState) - :automaton(_automaton) - ,rule(_rule) - ,ruleGrammar(_ruleGrammar) - ,startState(_startState) - ,endState(_endState) - ,result(0) - { - } - - static Transition* Create(ParsingDefinitionGrammar* grammar, Ptr automaton, ParsingDefinitionRuleDefinition* rule, ParsingDefinitionGrammar* ruleGrammar, State* startState, State* endState) - { - CreateEpsilonPDAVisitor visitor(automaton, rule, ruleGrammar, startState, endState); - grammar->Accept(&visitor); - return visitor.result; - } - - Transition* Create(ParsingDefinitionGrammar* grammar, State* startState, State* endState) - { - return Create(grammar, automaton, rule, ruleGrammar, startState, endState); - } - - void Visit(ParsingDefinitionPrimitiveGrammar* node)override - { - result=automaton->Symbol(startState, endState, automaton->symbolManager->CacheGetSymbol(node)); - } - - void Visit(ParsingDefinitionTextGrammar* node)override - { - result=automaton->Symbol(startState, endState, automaton->symbolManager->CacheGetSymbol(node)); - } - - void Visit(ParsingDefinitionSequenceGrammar* node)override - { - State* middleState=automaton->EndState(startState->ownerRule, ruleGrammar, node->first.Obj()); - Create(node->first.Obj(), startState, middleState); - Create(node->second.Obj(), middleState, endState); - } - - void Visit(ParsingDefinitionAlternativeGrammar* node)override - { - Create(node->first.Obj(), startState, endState); - Create(node->second.Obj(), startState, endState); - } - - void Visit(ParsingDefinitionLoopGrammar* node)override - { - State* loopStart=automaton->StartState(startState->ownerRule, ruleGrammar, node->grammar.Obj()); - automaton->Epsilon(startState, loopStart); - automaton->Epsilon(loopStart, endState); - Create(node->grammar.Obj(), loopStart, loopStart); - } - - void Visit(ParsingDefinitionOptionalGrammar* node)override - { - Create(node->grammar.Obj(), startState, endState); - automaton->Epsilon(startState, endState); - } - - void Visit(ParsingDefinitionCreateGrammar* node)override - { - State* middleState=automaton->EndState(startState->ownerRule, ruleGrammar, node->grammar.Obj()); - Create(node->grammar.Obj(), startState, middleState); - Transition* transition=automaton->Epsilon(middleState, endState); - - Ptr action=new Action; - action->actionType=Action::Create; - action->actionSource=automaton->symbolManager->CacheGetType(node->type.Obj(), 0); - action->creatorRule=rule; - transition->actions.Add(action); - } - - void Visit(ParsingDefinitionAssignGrammar* node)override - { - Transition* transition=Create(node->grammar.Obj(), startState, endState); - - Ptr action=new Action; - action->actionType=Action::Assign; - action->actionSource=automaton->symbolManager->CacheGetSymbol(node); - action->creatorRule=rule; - transition->actions.Add(action); - } - - void Visit(ParsingDefinitionUseGrammar* node)override - { - Transition* transition=Create(node->grammar.Obj(), startState, endState); - - Ptr action=new Action; - action->actionType=Action::Using; - action->creatorRule=rule; - transition->actions.Add(action); - } - - void Visit(ParsingDefinitionSetterGrammar* node)override - { - State* middleState=automaton->EndState(startState->ownerRule, ruleGrammar, node->grammar.Obj()); - Create(node->grammar.Obj(), startState, middleState); - Transition* transition=automaton->Epsilon(middleState, endState); - - Ptr action=new Action; - action->actionType=Action::Setter; - action->actionSource=automaton->symbolManager->CacheGetSymbol(node); - action->actionTarget=action->actionSource->GetDescriptorSymbol()->GetSubSymbolByName(node->value); - action->creatorRule=rule; - transition->actions.Add(action); - } - }; - -/*********************************************************************** -CreateRuleEpsilonPDA -***********************************************************************/ - - void CreateRuleEpsilonPDA(Ptr automaton, Ptr rule, ParsingSymbolManager* manager) - { - Ptr ruleInfo=new RuleInfo; - automaton->AddRuleInfo(rule.Obj(), ruleInfo); - - ruleInfo->rootRuleStartState=automaton->RootRuleStartState(rule.Obj()); - ruleInfo->rootRuleEndState=automaton->RootRuleEndState(rule.Obj()); - ruleInfo->startState=automaton->RuleStartState(rule.Obj()); - automaton->TokenBegin(ruleInfo->rootRuleStartState, ruleInfo->startState); - - FOREACH(Ptr, grammar, rule->grammars) - { - State* grammarStartState=automaton->StartState(rule.Obj(), grammar.Obj(), grammar.Obj()); - State* grammarEndState=automaton->EndState(rule.Obj(), grammar.Obj(), grammar.Obj()); - grammarEndState->stateName+=L".End"; - grammarEndState->endState=true; - automaton->Epsilon(ruleInfo->startState, grammarStartState); - automaton->TokenFinish(grammarEndState, ruleInfo->rootRuleEndState); - ruleInfo->endStates.Add(grammarEndState); - CreateEpsilonPDAVisitor::Create(grammar.Obj(), automaton, rule.Obj(), grammar.Obj(), grammarStartState, grammarEndState); - } - } - -/*********************************************************************** -CreateEpsilonPDA -***********************************************************************/ - - Ptr CreateEpsilonPDA(Ptr definition, ParsingSymbolManager* manager) - { - Ptr automaton=new Automaton(manager); - FOREACH(Ptr, rule, definition->rules) - { - CreateRuleEpsilonPDA(automaton, rule, manager); - } - return automaton; - } - } - } -} - -/*********************************************************************** -.\PARSING\PARSINGAUTOMATON_GENERATETABLE.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - using namespace collections; - using namespace definitions; - using namespace tabling; - - namespace analyzing - { - -/*********************************************************************** -GetTypeNameForCreateInstruction -***********************************************************************/ - - WString GetTypeNameForCreateInstruction(ParsingSymbol* type) - { - ParsingSymbol* parent=type->GetParentSymbol(); - if(parent->GetType()==ParsingSymbol::ClassType) - { - return GetTypeNameForCreateInstruction(parent)+L"."+type->GetName(); - } - else - { - return type->GetName(); - } - } - -/*********************************************************************** -CreateLookAhead -***********************************************************************/ - - void CopyStableLookAheads(List>& la, List>& sla, const List>& la2) - { - CopyFrom(sla, From(la) - .Where([&](Ptr lai) - { - return From(la2).All([&](Ptr lai2) - { - return ParsingTable::LookAheadInfo::TestPrefix(lai, lai2)==ParsingTable::LookAheadInfo::NotPrefix; - }); - }), - true); - } - - void RemoveStableLookAheads(List>& la, const List>& sla) - { - for(vint i=la.Count()-1;i>=0;i--) - { - if(sla.Contains(la[i].Obj())) - { - la.RemoveAt(i); - } - } - } - - bool WalkLookAheads(Ptr table, List>& la, vint maxTokenCount) - { - vint count=la.Count(); - for(vint i=0;i lai=la[i]; - if(lai->tokens.Count()==maxTokenCount) - { - return false; - } - ParsingTable::LookAheadInfo::Walk(table, lai, lai->state, la); - } - return true; - } - - void CompactLookAheads(Ptr t, List>& sla) - { - CopyFrom(sla, t->lookAheads, true); - CopyFrom(t->lookAheads, From(sla) - .Where([&](Ptr lai) - { - return From(sla).All([&](Ptr lai2) - { - if(lai==lai2) return true; - ParsingTable::LookAheadInfo::PrefixResult result=ParsingTable::LookAheadInfo::TestPrefix(lai, lai2); - switch(result) - { - case ParsingTable::LookAheadInfo::Prefix: - return false; - case ParsingTable::LookAheadInfo::Equal: - return sla.IndexOf(lai.Obj()) < sla.IndexOf(lai2.Obj()); - default: - return true; - } - }); - })); - } - - bool CreateLookAhead(Ptr table, Ptr t1, Ptr t2, vint maxTokenCount) - { - List> la1, la2, sla1, sla2; - - // calculate 1-token look aheads - ParsingTable::LookAheadInfo::Walk(table, 0, t1->targetState, la1); - ParsingTable::LookAheadInfo::Walk(table, 0, t2->targetState, la2); - - do - { - // pick up all stable look aheads and remove them from the look ahead list - // stable look ahead means, when the look ahead is satisfied, then the transition is picked up with full confidence - // non-stable look ahead means, when the look ahead is satisifed, it only increase confidence, needs further tokens for decision - CopyStableLookAheads(la1, sla1, la2); - CopyStableLookAheads(la2, sla2, la1); - RemoveStableLookAheads(la1, sla1); - RemoveStableLookAheads(la2, sla2); - - // check if there are non-stable look aheads in two transitions points to the same state - // in such situation means that the two transition cannot always be determined using look aheads - FOREACH(Ptr, lai1, la1) - { - FOREACH(Ptr, lai2, la2) - { - if (lai1->state == lai2->state) - { - if (ParsingTable::LookAheadInfo::TestPrefix(lai1, lai2) != ParsingTable::LookAheadInfo::NotPrefix) - { - return false; - } - if (ParsingTable::LookAheadInfo::TestPrefix(lai2, lai1) != ParsingTable::LookAheadInfo::NotPrefix) - { - return false; - } - } - } - } - - // use the non-stable look aheads to walk a token further - if(!WalkLookAheads(table, la1, maxTokenCount) || !WalkLookAheads(table, la2, maxTokenCount)) - { - return false; - } - } - while(la1.Count()>0 || la2.Count()>0); - - CompactLookAheads(t1, sla1); - CompactLookAheads(t2, sla2); - return true; - } - -/*********************************************************************** -CollectAttribute -***********************************************************************/ - - void CollectType(ParsingSymbol* symbol, List& types) - { - if(symbol->GetType()==ParsingSymbol::ClassType) - { - types.Add(symbol); - } - vint count=symbol->GetSubSymbolCount(); - for(vint i=0;iGetSubSymbol(i), types); - } - } - - void CollectAttributeInfo(Ptr att, List>& atts) - { - FOREACH(Ptr, datt, atts) - { - Ptr tatt=new ParsingTable::AttributeInfo(datt->name); - CopyFrom(tatt->arguments, datt->arguments); - att->attributes.Add(tatt); - } - } - - Ptr CreateAttributeInfo(List>& atts) - { - Ptr att=new ParsingTable::AttributeInfoList; - CollectAttributeInfo(att, atts); - return att; - } - -/*********************************************************************** -GenerateTable -***********************************************************************/ - - vint LookAheadConflictPriority(vint tableTokenIndex) - { - switch (tableTokenIndex) - { - case ParsingTable::NormalReduce: - return 0; - case ParsingTable::LeftRecursiveReduce: - return 1; - default: - return 2; - } - } - - void GenerateLookAhead(Ptr table, List& stateIds, vint state, vint token, Ptr t1, Ptr t2, bool enableAmbiguity, collections::List>& errors) - { - if(ParsingTable::TransitionItem::CheckOrder(t1, t2, ParsingTable::TransitionItem::UnknownOrder)==ParsingTable::TransitionItem::UnknownOrder) - { - if(enableAmbiguity || !CreateLookAhead(table, t1, t2, 16)) - { - if (LookAheadConflictPriority(t1->token) != LookAheadConflictPriority(t2->token)) - { - return; - } - WString stateName=itow(state)+L"["+table->GetStateInfo(state).stateName+L"]"; - WString tokenName= - token==ParsingTable::TokenBegin?WString(L"$TokenBegin"): - token==ParsingTable::TokenFinish?WString(L"$TokenFinish"): - token==ParsingTable::NormalReduce?WString(L"$NormalReduce"): - token==ParsingTable::LeftRecursiveReduce?WString(L"$LeftRecursiveReduce"): - table->GetTokenInfo(token).name; - switch (t1->token) - { - case ParsingTable::NormalReduce: - errors.Add(new ParsingError(stateIds[state]->ownerRule, L"Conflict happened with normal reduce in transition of \""+tokenName+L"\" of state \""+stateName+L"\".")); - break; - case ParsingTable::LeftRecursiveReduce: - errors.Add(new ParsingError(stateIds[state]->ownerRule, L"Conflict happened with left recursive reduce in transition of \""+tokenName+L"\" of state \""+stateName+L"\".")); - break; - default: - errors.Add(new ParsingError(stateIds[state]->ownerRule, L"Conflict happened in transition of \""+tokenName+L"\" of state \""+stateName+L"\".")); - break; - } - } - } - } - - Ptr GenerateTableFromPDA(Ptr definition, ParsingSymbolManager* manager, Ptr jointPDA, bool enableAmbiguity, collections::List>& errors) - { - List> atts; - - /*********************************************************************** - find all class types - ***********************************************************************/ - List types; - Dictionary typeAtts; - Dictionary, vint> treeFieldAtts; - - // stable class field order - List orderedChildTypeKeys; - Dictionary>> childTypeValues; - - // find all class types - CollectType(manager->GetGlobal(), types); - FOREACH(ParsingSymbol*, type, types) - { - Ptr typeAtt = new ParsingTable::AttributeInfoList; - ParsingSymbol* parent = type; - while (parent) - { - ParsingDefinitionClassDefinition* classDef = manager->CacheGetClassDefinition(parent); - CollectAttributeInfo(typeAtt, classDef->attributes); - - Ptr> children; - vint index = childTypeValues.Keys().IndexOf(parent); - if (index == -1) - { - children = new List; - orderedChildTypeKeys.Add(parent); - childTypeValues.Add(parent, children); - } - else - { - children = childTypeValues.Values().Get(index); - } - - children->Add(type); - parent = parent->GetDescriptorSymbol(); - } - - if (typeAtt->attributes.Count() > 0) - { - typeAtts.Add(GetTypeFullName(type), atts.Count()); - atts.Add(typeAtt); - } - else - { - typeAtts.Add(GetTypeFullName(type), -1); - } - } - - // find all class fields - FOREACH(ParsingSymbol*, type, orderedChildTypeKeys) - { - List& children = *childTypeValues[type].Obj(); - ParsingDefinitionClassDefinition* classDef = manager->CacheGetClassDefinition(type); - List fieldAtts; - - FOREACH_INDEXER(Ptr, field, index, classDef->members) - { - if (field->attributes.Count() > 0) - { - fieldAtts.Add(atts.Count()); - atts.Add(CreateAttributeInfo(field->attributes)); - } - else - { - fieldAtts.Add(-1); - } - } - - FOREACH(ParsingSymbol*, child, children) - { - WString type = GetTypeFullName(child); - FOREACH_INDEXER(Ptr, field, index, classDef->members) - { - treeFieldAtts.Add(Pair(type, field->name), fieldAtts[index]); - } - } - } - - /*********************************************************************** - find all tokens - ***********************************************************************/ - vint tokenCount = 0; - vint discardTokenCount = 0; - Dictionary tokenIds; - List discardTokens; - - Dictionary tokenAtts; - Dictionary ruleAtts; - - FOREACH(Ptr, token, definition->tokens) - { - if (token->attributes.Count() > 0) - { - tokenAtts.Add(token->name, atts.Count()); - atts.Add(CreateAttributeInfo(token->attributes)); - } - else - { - tokenAtts.Add(token->name, -1); - } - - if (token->discard) - { - discardTokens.Add(token->name); - discardTokenCount++; - } - else - { - ParsingSymbol* tokenSymbol = jointPDA->symbolManager->GetGlobal()->GetSubSymbolByName(token->name); - tokenIds.Add(tokenSymbol, tokenIds.Count() + ParsingTable::UserTokenStart); - tokenCount++; - } - } - - /*********************************************************************** - find all rules - ***********************************************************************/ - FOREACH(Ptr, rule, definition->rules) - { - if (rule->attributes.Count() > 0) - { - ruleAtts.Add(rule->name, atts.Count()); - atts.Add(CreateAttributeInfo(rule->attributes)); - } - else - { - ruleAtts.Add(rule->name, -1); - } - } - - /*********************************************************************** - find all available states - ***********************************************************************/ - List stateIds; - vint availableStateCount = 0; - { - vint currentState = 0; - List scanningStates; - FOREACH(Ptr, ruleInfo, jointPDA->ruleInfos) - { - if (!scanningStates.Contains(ruleInfo->rootRuleStartState)) - { - scanningStates.Add(ruleInfo->rootRuleStartState); - } - - while (currentState < scanningStates.Count()) - { - State* state = scanningStates[currentState++]; - stateIds.Add(state); - - FOREACH(Transition*, transition, state->transitions) - { - if (!scanningStates.Contains(transition->target)) - { - scanningStates.Add(transition->target); - } - } - } - } - availableStateCount = scanningStates.Count(); - } - - // there will be some states that is used in shift and reduce but it is not a reachable state - // so the state table will record all state - FOREACH(Ptr, state, jointPDA->states) - { - if (!stateIds.Contains(state.Obj())) - { - stateIds.Add(state.Obj()); - } - } - vint stateCount = stateIds.Count(); - - Ptr table = new ParsingTable(atts.Count(), typeAtts.Count(), treeFieldAtts.Count(), tokenCount, discardTokenCount, stateCount, definition->rules.Count()); - - /*********************************************************************** - fill attribute infos - ***********************************************************************/ - FOREACH_INDEXER(Ptr, att, index, atts) - { - table->SetAttributeInfo(index, att); - } - - /*********************************************************************** - fill tree type infos - ***********************************************************************/ - typedef Pair TreeTypeAttsPair; - FOREACH_INDEXER(TreeTypeAttsPair, type, index, typeAtts) - { - table->SetTreeTypeInfo(index, ParsingTable::TreeTypeInfo(type.key, type.value)); - } - - /*********************************************************************** - fill tree field infos - ***********************************************************************/ - typedef Pair, vint> TreeFieldAttsPair; - FOREACH_INDEXER(TreeFieldAttsPair, field, index, treeFieldAtts) - { - table->SetTreeFieldInfo(index, ParsingTable::TreeFieldInfo(field.key.key, field.key.value, field.value)); - } - - /*********************************************************************** - fill token infos - ***********************************************************************/ - FOREACH(ParsingSymbol*, symbol, tokenIds.Keys()) - { - ParsingTable::TokenInfo info; - info.name = symbol->GetName(); - info.regex = symbol->GetDescriptorString(); - info.attributeIndex = tokenAtts[info.name]; - - vint id = tokenIds[symbol]; - table->SetTokenInfo(id, info); - } - - FOREACH_INDEXER(WString, name, i, discardTokens) - { - ParsingSymbol* symbol = jointPDA->symbolManager->GetGlobal()->GetSubSymbolByName(name); - - ParsingTable::TokenInfo info; - info.name = symbol->GetName(); - info.regex = symbol->GetDescriptorString(); - info.attributeIndex = tokenAtts[info.name]; - table->SetDiscardTokenInfo(i, info); - } - - /*********************************************************************** - fill rule infos - ***********************************************************************/ - FOREACH_INDEXER(ParsingDefinitionRuleDefinition*, rule, i, jointPDA->orderedRulesDefs) - { - Ptr pdaRuleInfo = jointPDA->ruleDefToInfoMap[rule]; - ParsingTable::RuleInfo info; - info.name = rule->name; - info.type = TypeToString(rule->type.Obj()); - info.rootStartState = stateIds.IndexOf(pdaRuleInfo->rootRuleStartState); - info.attributeIndex = ruleAtts[info.name]; - - if (Ptr classType = rule->type.Cast()) - { - ParsingSymbol* ruleSymbol = manager->GetGlobal()->GetSubSymbolByName(rule->name); - ParsingSymbol* ruleType = ruleSymbol->GetDescriptorSymbol(); - ParsingDefinitionClassDefinition* ruleTypeDef = manager->CacheGetClassDefinition(ruleType); - if (ruleTypeDef && ruleTypeDef->ambiguousType) - { - ParsingSymbol* ambiguousType = manager->CacheGetType(ruleTypeDef->ambiguousType.Obj(), ruleType->GetParentSymbol()); - info.ambiguousType = GetTypeFullName(ambiguousType); - } - } - table->SetRuleInfo(i, info); - } - - /*********************************************************************** - fill state infos - ***********************************************************************/ - FOREACH_INDEXER(State*, state, i, stateIds) - { - ParsingTable::StateInfo info; - info.ruleName = state->ownerRule->name; - info.stateName = state->stateName; - info.stateExpression = state->stateExpression; - table->SetStateInfo(i, info); - } - - /*********************************************************************** - fill transition table - ***********************************************************************/ - FOREACH_INDEXER(State*, state, stateIndex, stateIds) - { - // if this state is not necessary, stop building the table - if (stateIndex >= availableStateCount) break; - - FOREACH(Transition*, transition, state->transitions) - { - vint tokenIndex = -1; - switch (transition->transitionType) - { - case Transition::TokenBegin: - tokenIndex = ParsingTable::TokenBegin; - break; - case Transition::TokenFinish: - tokenIndex = ParsingTable::TokenFinish; - break; - case Transition::NormalReduce: - tokenIndex = ParsingTable::NormalReduce; - break; - case Transition::LeftRecursiveReduce: - tokenIndex = ParsingTable::LeftRecursiveReduce; - break; - case Transition::Symbol: - tokenIndex = tokenIds[transition->transitionSymbol]; - break; - default:; - } - - Ptr bag = table->GetTransitionBag(stateIndex, tokenIndex); - if (!bag) - { - bag = new ParsingTable::TransitionBag; - table->SetTransitionBag(stateIndex, tokenIndex, bag); - } - - Ptr item = new ParsingTable::TransitionItem; - item->token = tokenIndex; - item->targetState = stateIds.IndexOf(transition->target); - bag->transitionItems.Add(item); - - FOREACH(Ptr, action, transition->actions) - { - ParsingTable::Instruction ins; - switch (action->actionType) - { - case Action::Create: - { - ins.instructionType = ParsingTable::Instruction::Create; - ins.nameParameter = GetTypeNameForCreateInstruction(action->actionSource); - } - break; - case Action::Using: - { - ins.instructionType = ParsingTable::Instruction::Using; - } - break; - case Action::Assign: - { - if (action->actionSource->GetDescriptorSymbol()->GetType() == ParsingSymbol::ArrayType) - { - ins.instructionType = ParsingTable::Instruction::Item; - } - else - { - ins.instructionType = ParsingTable::Instruction::Assign; - } - ins.nameParameter = action->actionSource->GetName(); - } - break; - case Action::Setter: - { - ins.instructionType = ParsingTable::Instruction::Setter; - ins.nameParameter = action->actionSource->GetName(); - ins.value = action->actionTarget->GetName(); - } - break; - case Action::Shift: - { - ins.instructionType = ParsingTable::Instruction::Shift; - ins.stateParameter = stateIds.IndexOf(action->shiftReduceSource); - } - break; - case Action::Reduce: - { - ins.instructionType = ParsingTable::Instruction::Reduce; - ins.stateParameter = stateIds.IndexOf(action->shiftReduceSource); - item->stackPattern.Add(ins.stateParameter); - } - break; - case Action::LeftRecursiveReduce: - { - ins.instructionType = ParsingTable::Instruction::LeftRecursiveReduce; - ins.stateParameter = stateIds.IndexOf(action->shiftReduceSource); - } - break; - } - ins.creatorRule = action->creatorRule->name; - item->instructions.Add(ins); - } - } - } - - /*********************************************************************** - check conflict and build look ahead table - ***********************************************************************/ - for (vint i = 0; i < table->GetStateCount(); i++) - { - for (vint j = 0; j < table->GetTokenCount(); j++) - { - Ptr bag = table->GetTransitionBag(i, j); - if (bag) - { - CopyFrom( - bag->transitionItems, - From(bag->transitionItems) - .OrderBy([&](Ptr t1, Ptr t2) - { - // stable transition order - vint i1 = bag->transitionItems.IndexOf(t1.Obj()); - vint i2 = bag->transitionItems.IndexOf(t2.Obj()); - auto defaultOrder = - i1 < i2 ? ParsingTable::TransitionItem::CorrectOrder : - i1 > i2 ? ParsingTable::TransitionItem::WrongOrder : - ParsingTable::TransitionItem::SameOrder - ; - return ParsingTable::TransitionItem::Compare(t1, t2, defaultOrder); - }) - ); - - // build look ahead inside a transition - for (vint k1 = 0; k1 < bag->transitionItems.Count() - 1; k1++) - { - for (vint k2 = k1 + 1; k2 < bag->transitionItems.Count(); k2++) - { - Ptr t1 = bag->transitionItems[k1]; - Ptr t2 = bag->transitionItems[k2]; - GenerateLookAhead(table, stateIds, i, j, t1, t2, enableAmbiguity, errors); - } - } - - // build look ahead between this transition and reduce transitions - for (vint t = ParsingTable::NormalReduce; t <= ParsingTable::LeftRecursiveReduce && t < j; t++) - { - if (Ptr reduceBag = table->GetTransitionBag(i, t)) - { - for (vint k1 = 0; k1 < reduceBag->transitionItems.Count(); k1++) - { - for (vint k2 = 0; k2 < bag->transitionItems.Count(); k2++) - { - Ptr t1 = reduceBag->transitionItems[k1]; - Ptr t2 = bag->transitionItems[k2]; - GenerateLookAhead(table, stateIds, i, j, t1, t2, enableAmbiguity, errors); - } - } - } - } - } - } - } - - /*********************************************************************** - initialize table - ***********************************************************************/ - if (errors.Count() > 0) - { - table->SetAmbiguity(true); - } - table->Initialize(); - return table; - } - - Ptr GenerateTable(Ptr definition, bool enableAmbiguity, collections::List>& errors) - { - errors.Clear(); - ParsingSymbolManager symbolManager; - ValidateDefinition(definition, &symbolManager, errors); - if(errors.Count()==0) - { - Ptr epsilonPDA=CreateEpsilonPDA(definition, &symbolManager); - Ptr nondeterministicPDA=CreateNondeterministicPDAFromEpsilonPDA(epsilonPDA); - Ptr jointPDA=CreateJointPDAFromNondeterministicPDA(nondeterministicPDA); - CompactJointPDA(jointPDA); - MarkLeftRecursiveInJointPDA(jointPDA, errors); - if(errors.Count()==0) - { - Ptr table=GenerateTableFromPDA(definition, &symbolManager, jointPDA, enableAmbiguity, errors); - if(enableAmbiguity || errors.Count()==0) - { - return table; - } - } - } - return 0; - } - } - } -} - -/*********************************************************************** -.\PARSING\PARSINGAUTOMATON_JPDA.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - using namespace collections; - using namespace definitions; - - namespace analyzing - { -/*********************************************************************** -CreateJointPDAFromNondeterministicPDA -***********************************************************************/ - - Ptr CreateJointPDAFromNondeterministicPDA(Ptr nondeterministicPDA) - { - Ptr automaton=new Automaton(nondeterministicPDA->symbolManager); - - // build rule info data - Dictionary ruleMap; - Dictionary oldNewStateMap; - FOREACH(ParsingDefinitionRuleDefinition*, rule, nondeterministicPDA->orderedRulesDefs) - { - // build new rule info - Ptr ruleInfo=nondeterministicPDA->ruleDefToInfoMap[rule]; - Ptr newRuleInfo=new RuleInfo; - automaton->AddRuleInfo(rule, newRuleInfo); - ruleMap.Add(rule->name, rule); - - newRuleInfo->rootRuleStartState=automaton->RootRuleStartState(rule); - newRuleInfo->rootRuleEndState=automaton->RootRuleEndState(rule); - newRuleInfo->startState=automaton->RuleStartState(rule); - - oldNewStateMap.Add(ruleInfo->rootRuleStartState, newRuleInfo->rootRuleStartState); - oldNewStateMap.Add(ruleInfo->rootRuleEndState, newRuleInfo->rootRuleEndState); - oldNewStateMap.Add(ruleInfo->startState, newRuleInfo->startState); - - newRuleInfo->rootRuleStartState->stateExpression=ruleInfo->rootRuleStartState->stateExpression; - newRuleInfo->rootRuleEndState->stateExpression=ruleInfo->rootRuleEndState->stateExpression; - newRuleInfo->startState->stateExpression=ruleInfo->startState->stateExpression; - } - - FOREACH(Ptr, oldState, nondeterministicPDA->states) - { - if((oldState->inputs.Count()>0 || oldState->transitions.Count()>0) && !oldNewStateMap.Keys().Contains(oldState.Obj())) - { - State* newState=automaton->CopyState(oldState.Obj()); - oldNewStateMap.Add(oldState.Obj(), newState); - newState->stateExpression=oldState->stateExpression; - } - } - - // create transitions - FOREACH(ParsingDefinitionRuleDefinition*, rule, nondeterministicPDA->orderedRulesDefs) - { - Ptr ruleInfo=nondeterministicPDA->ruleDefToInfoMap[rule]; - Ptr newRuleInfo=automaton->ruleDefToInfoMap[rule]; - - // complete new rule info - FOREACH(State*, endState, ruleInfo->endStates) - { - newRuleInfo->endStates.Add(oldNewStateMap[endState]); - } - - // create joint transitions according to old automaton - List scanningStates; - vint currentStateIndex=0; - scanningStates.Add(ruleInfo->rootRuleStartState); - - while(currentStateIndextransitions) - { - State* oldSource=oldTransition->source; - State* oldTarget=oldTransition->target; - State* newSource=oldNewStateMap[oldSource]; - State* newTarget=oldNewStateMap[oldTarget]; - - if(!scanningStates.Contains(oldSource)) scanningStates.Add(oldSource); - if(!scanningStates.Contains(oldTarget)) scanningStates.Add(oldTarget); - - if(oldTransition->transitionType==Transition::Symbol && oldTransition->transitionSymbol->GetType()==ParsingSymbol::RuleDef) - { - // if this is a rule transition, create - // source -> ruleStart - // ruleEnd[] -> target - ParsingDefinitionRuleDefinition* rule=ruleMap[oldTransition->transitionSymbol->GetName()]; - Ptr oldRuleInfo=nondeterministicPDA->ruleDefToInfoMap[rule]; - - { - Transition* shiftTransition=automaton->Epsilon(newSource, oldNewStateMap[oldRuleInfo->startState]); - Ptr action=new Action; - action->actionType=Action::Shift; - action->shiftReduceSource=newSource; - action->shiftReduceTarget=newTarget; - action->creatorRule=shiftTransition->source->ownerRule; - shiftTransition->actions.Add(action); - } - - FOREACH(State*, oldEndState, oldRuleInfo->endStates) - { - Transition* reduceTransition=automaton->NormalReduce(oldNewStateMap[oldEndState], newTarget); - Ptr action=new Action; - action->actionType=Action::Reduce; - action->shiftReduceSource=newSource; - action->shiftReduceTarget=newTarget; - action->creatorRule=reduceTransition->source->ownerRule; - reduceTransition->actions.Add(action); - CopyFrom(reduceTransition->actions, oldTransition->actions, true); - } - } - else - { - // if not, just copy - Transition* newTransition=automaton->CopyTransition(newSource, newTarget, oldTransition); - CopyFrom(newTransition->actions, oldTransition->actions); - } - } - } - } - return automaton; - } - -/*********************************************************************** -CompactJointPDA -***********************************************************************/ - - // closure function for searching shift-reduce-compact transition - ClosureItem::SearchResult ShiftReduceCompactClosure(Transition* transition) - { - return - transition->stackOperationType!=Transition::None?ClosureItem::Blocked: - transition->transitionType!=Transition::Epsilon?ClosureItem::Hit: - ClosureItem::Continue; - } - - void CompactJointPDA(Ptr jointPDA) - { - FOREACH(Ptr, state, jointPDA->states) - { - State* currentState=state.Obj(); - - // search for epsilon closure - List closure; - SearchClosure(&ShiftReduceCompactClosure, currentState, closure); - - FOREACH(ClosureItem, closureItem, closure) - { - Transition* lastTransition=closureItem.transitions->Get(closureItem.transitions->Count()-1); - Transition::StackOperationType stackOperationType=Transition::None; - Transition::TransitionType transitionType=lastTransition->transitionType; - - if(closureItem.cycle && lastTransition->transitionType==Transition::Epsilon) - { - bool containsShift=false; - bool containsReduce=false; - FOREACH(Transition*, pathTransition, *closureItem.transitions.Obj()) - { - FOREACH(Ptr, action, pathTransition->actions) - { - if(action->actionType==Action::Shift) containsShift=true; - if(action->actionType==Action::Reduce) containsReduce=true; - } - } - if(containsShift && !containsReduce) - { - // a left recursive compacted shift transition is found - // if the left recursive state is not the current state - // that means this transition path fall into other left recursive state - // e.g. - // Term = Factor | Term (here is a left recursion) * Factor - // Exp = Term (this rule symbol transition will fall into Term's left recursive state) ... - // if such a case happened, this transition path will be simply discarded - if(closureItem.state==currentState) - { - stackOperationType=Transition::LeftRecursive; - } - } - else if(!containsShift && containsReduce) - { - // a right recursive compacted reduce transition is found - // if this state will receive $TokenFinish, then the stack pattern number can be infinite - // e.g. for right recursive expression "a b c" == "(a (b c))" - // when trying to do a transition by $TokenFinish - // "a b" should reduce once - // "a b c" should reduce twice - // because that a reduce is not considered a virtual token, so this is not going to be happened - } - } - else if(closureItem.transitions->Count()>1) - { - // in joint PDA, only shift and reduce transitions are epsilon transition - // if there are more than one transition in a path, then there should be shift or reduce transitions in the path - stackOperationType=Transition::ShiftReduceCompacted; - } - - if(stackOperationType!=Transition::None) - { - // build shift-reduce-compacted transition to the target state of the path - Transition* transition=jointPDA->CopyTransition(currentState, lastTransition->target, lastTransition); - transition->transitionType=transitionType; - transition->stackOperationType=stackOperationType; - - // there will be , or - // but there will not be something like - // so we can append stackPattern safely - FOREACH(Transition*, pathTransition, *closureItem.transitions.Obj()) - { - CopyFrom(transition->actions, pathTransition->actions, true); - } - } - } - } - - // delete unnecessary transactions - for(vint i=jointPDA->transitions.Count()-1;i>=0;i--) - { - Transition* transition=jointPDA->transitions[i].Obj(); - if(transition->stackOperationType==Transition::None && transition->transitionType==Transition::Epsilon) - { - jointPDA->DeleteTransition(transition); - } - } - } - -/*********************************************************************** -MarkLeftRecursiveInJointPDA -***********************************************************************/ - - void MarkLeftRecursiveInJointPDA(Ptr jointPDA, collections::List>& errors) - { - vint errorCount=errors.Count(); - // record all left recursive shifts and delete all left recursive epsilon transition - SortedList> leftRecursiveShifts; - FOREACH(Ptr, state, jointPDA->states) - { - for(vint i=state->transitions.Count()-1;i>=0;i--) - { - Transition* transition=state->transitions[i]; - if(transition->stackOperationType==Transition::LeftRecursive) - { - Ptr shiftAction; - FOREACH(Ptr, action, transition->actions) - { - if(action->actionType==Action::Shift) - { - if(shiftAction) - { - errors.Add(new ParsingError(state->ownerRule, L"Indirect left recursive transition in rule \""+state->ownerRule->name+L"\" is not allowed.")); - goto FOUND_INDIRECT_LEFT_RECURSIVE_TRANSITION; - } - else - { - shiftAction=action; - } - } - } - if(shiftAction) - { - leftRecursiveShifts.Add(Pair(shiftAction->shiftReduceSource, shiftAction->shiftReduceTarget)); - } - FOUND_INDIRECT_LEFT_RECURSIVE_TRANSITION: - jointPDA->DeleteTransition(transition); - } - } - } - if(errorCount!=errors.Count()) - { - return; - } - - // change all reduce actions whose (shiftReduceSource, shiftReduceTarget) is recorded in leftRecursiveShifts to left-recursive-reduce - // when a reduce is converted to a left-recursive-reduce, the corresponding state in stackPattern should be removed - // so this will keep count(Reduce) == count(stackPattern) - FOREACH(Ptr, state, jointPDA->states) - { - FOREACH(Transition*, transition, state->transitions) - { - for(vint i=transition->actions.Count()-1;i>=0;i--) - { - Ptr action=transition->actions[i]; - if(action->actionType==Action::Reduce) - { - Pair shift(action->shiftReduceSource, action->shiftReduceTarget); - if(leftRecursiveShifts.Contains(shift)) - { - // check if this is a normal reduce transition, and change it to a left recursive reduce transition. - if (transition->transitionType == Transition::NormalReduce) - { - transition->transitionType = Transition::LeftRecursiveReduce; - // need to create a new action because in the previous phrases, these action object are shared and treated as read only - Ptr newAction=new Action; - newAction->actionType=Action::LeftRecursiveReduce; - newAction->actionSource=action->actionSource; - newAction->actionTarget=action->actionTarget; - newAction->creatorRule=action->creatorRule; - newAction->shiftReduceSource=action->shiftReduceSource; - newAction->shiftReduceTarget=action->shiftReduceTarget; - newAction->creatorRule=shift.key->ownerRule; - transition->actions[i]=newAction; - } - else - { - errors.Add(new ParsingError(state->ownerRule, L"Left recursive reduce action in non-normal-reduce found in rule \""+state->ownerRule->name+L"\" is not allowed.")); - } - } - } - } - } - } - - // delete complicated transitions - FOREACH(Ptr, state, jointPDA->states) - { - while(true) - { - bool deleted=false; - FOREACH(Transition*, t1, state->transitions) - FOREACH(Transition*, t2, state->transitions) - if(t1!=t2) - { - if(Transition::IsEquivalent(t1, t2, true)) - { - jointPDA->DeleteTransition(t2); - deleted=true; - goto TRANSITION_DELETED; - } - } - TRANSITION_DELETED: - if(!deleted) break; - } - } - } - } - } -} - -/*********************************************************************** -.\PARSING\PARSINGAUTOMATON_MERGESTATES.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - using namespace collections; - using namespace definitions; - - namespace analyzing - { - -/*********************************************************************** -DeleteUnnecessaryStates -***********************************************************************/ - - void DeleteUnnecessaryStates(Ptr automaton, Ptr ruleInfo, List& newStates) - { - // delete all states that are not reachable to the end state - while(true) - { - // find a non-end state without out transitions - vint deleteCount=0; - for(vint i=newStates.Count()-1;i>=0;i--) - { - State* newState=newStates[i]; - if(newState->transitions.Count()==0) - { - if(newState!=ruleInfo->rootRuleEndState && !newState->endState) - { - automaton->DeleteState(newState); - newStates.RemoveAt(i); - } - } - } - if(deleteCount==0) - { - break; - } - } - } - -/*********************************************************************** -IsMergableCandidate -***********************************************************************/ - - bool IsMergableCandidate(State* state, Ptr ruleInfo) - { - if(state==ruleInfo->rootRuleStartState || state==ruleInfo->rootRuleEndState || state==ruleInfo->startState) - { - return false; - } - return true; - } - -/*********************************************************************** -RearrangeState -***********************************************************************/ - -#define COMPARE_SYMBOL(S1, S2)\ - if (S1 && S2)\ - {\ - if (S1->GetType() < S2->GetType()) return -1;\ - if (S1->GetType() > S2->GetType()) return 1;\ - if (S1->GetName() < S2->GetName()) return -1;\ - if (S1->GetName() > S2->GetName()) return 1;\ - }\ - else if (S1)\ - {\ - return 1;\ - }\ - else if (S2)\ - {\ - return -1;\ - }\ - - vint CompareTransitionForRearranging(Transition* t1, Transition* t2) - { - if (t1->transitionType < t2->transitionType) return -1; - if (t1->transitionType > t2->transitionType) return 1; - COMPARE_SYMBOL(t1->transitionSymbol, t2->transitionSymbol); - return 0; - } - - vint CompareActionForRearranging(Ptr a1, Ptr a2) - { - if(a1->actionTypeactionType) return -1; - if(a1->actionType>a2->actionType) return 1; - COMPARE_SYMBOL(a1->actionSource, a2->actionSource); - COMPARE_SYMBOL(a1->actionTarget, a2->actionTarget); - return 0; - } - -#undef COMPARE_SYMBOL - - void RearrangeState(State* state, SortedList& stateContentSorted) - { - if(!stateContentSorted.Contains(state)) - { - FOREACH(Transition*, transition, state->transitions) - { - CopyFrom(transition->actions, From(transition->actions).OrderBy(&CompareActionForRearranging)); - } - CopyFrom(state->transitions, From(state->transitions).OrderBy(&CompareTransitionForRearranging)); - stateContentSorted.Add(state); - } - } - -/*********************************************************************** -MoveActionsForMergingState -***********************************************************************/ - - void MoveActionsForMergingState(Transition* transition) - { - // collect all movable actions - List> movableActions; - for(vint i=transition->actions.Count()-1;i>=0;i--) - { - switch(transition->actions[i]->actionType) - { - // Using and Assign actions are not movable - case Action::Using: - case Action::Assign: - break; - default: - movableActions.Add(transition->actions[i]); - transition->actions.RemoveAt(i); - } - } - - // copy all movable actions - FOREACH(Transition*, t, transition->source->inputs) - { - CopyFrom(t->actions, movableActions, true); - } - } - -/*********************************************************************** -IsMergableBecause(Transitions|Input) -***********************************************************************/ - - bool IsMergableBecauseTransitions(State* state1, State* state2) - { - if(state1->transitions.Count()!=state2->transitions.Count()) return false; - if(state1->transitions.Count()==1 && state2->transitions.Count()==1) - { - Transition* t1=state1->transitions[0]; - Transition* t2=state2->transitions[0]; - if(CompareTransitionForRearranging(t1, t2)==0 && !Transition::IsEquivalent(t1, t2, false) && t1->target==t2->target) - { - MoveActionsForMergingState(t1); - MoveActionsForMergingState(t2); - } - } - for(vint i=0;itransitions.Count();i++) - { - Transition* t1=state1->transitions[i]; - Transition* t2=state2->transitions[i]; - if(!Transition::IsEquivalent(t1, t2, false) || t1->target!=t2->target) - { - return false; - } - } - return true; - } - - bool IsMergableBecauseInputs(State* state1, State* state2) - { - if(state1->inputs.Count()!=state2->inputs.Count()) return false; - for(vint i=0;iinputs.Count();i++) - { - Transition* t1=state1->inputs[i]; - Transition* t2=state2->inputs[i]; - if(!Transition::IsEquivalent(t1, t2, false) || t1->source!=t2->source) - { - return false; - } - } - return true; - } - -/*********************************************************************** -MergeState2ToState1Because(Transitions|Input) -***********************************************************************/ - - void MergeState2ToState1BecauseTransitions(Ptr automaton, State* state1, State* state2) - { - // modify state1's expression - state1->stateExpression+=L"\r\n"+state2->stateExpression; - - // retarget state2's input to state1 - for(vint i=state2->inputs.Count()-1;i>=0;i--) - { - Transition* t2=state2->inputs[i]; - bool add=true; - FOREACH(Transition*, t1, state1->inputs) - { - if(Transition::IsEquivalent(t1, t2, false) && t1->source==t2->source) - { - add=false; - break; - } - } - if(add) - { - state1->inputs.Add(t2); - t2->target=state1; - state2->inputs.RemoveAt(i); - } - } - - automaton->DeleteState(state2); - } - - void MergeState2ToState1BecauseInputs(Ptr automaton, State* state1, State* state2) - { - // modify state1's expression - state1->stateExpression+=L"\r\n"+state2->stateExpression; - - // retarget state2's input to state1 - for(vint i=state2->transitions.Count()-1;i>=0;i--) - { - Transition* t2=state2->transitions[i]; - bool add=true; - FOREACH(Transition*, t1, state1->transitions) - { - if(Transition::IsEquivalent(t1, t2, false) && t1->target==t2->target) - { - add=false; - break; - } - } - if(add) - { - state1->transitions.Add(t2); - t2->source=state1; - state2->transitions.RemoveAt(i); - } - } - - automaton->DeleteState(state2); - } - -/*********************************************************************** -MergeStates -***********************************************************************/ - - void MergeStates(Ptr automaton, Ptr ruleInfo, List& newStates) - { - SortedList stateContentSorted; - while(true) - { - for(vint i=0;i CreateNondeterministicPDAFromEpsilonPDA(Ptr epsilonPDA) - { - Ptr automaton=new Automaton(epsilonPDA->symbolManager); - FOREACH(ParsingDefinitionRuleDefinition*, rule, epsilonPDA->orderedRulesDefs) - { - // build new rule info - Ptr ruleInfo=epsilonPDA->ruleDefToInfoMap[rule]; - Ptr newRuleInfo=new RuleInfo; - automaton->AddRuleInfo(rule, newRuleInfo); - - newRuleInfo->rootRuleStartState=automaton->RootRuleStartState(rule); - newRuleInfo->rootRuleEndState=automaton->RootRuleEndState(rule); - newRuleInfo->startState=automaton->RuleStartState(rule); - - // build state mapping and state visiting tracking - Dictionary oldNewStateMap; - List scanningStates; - vint currentStateIndex=0; - oldNewStateMap.Add(ruleInfo->rootRuleStartState, newRuleInfo->rootRuleStartState); - oldNewStateMap.Add(ruleInfo->rootRuleEndState, newRuleInfo->rootRuleEndState); - oldNewStateMap.Add(ruleInfo->startState, newRuleInfo->startState); - // begin with a root rule state state - scanningStates.Add(ruleInfo->rootRuleStartState); - // remove epsilon transitions - RemoveEpsilonTransitions(oldNewStateMap, scanningStates, automaton); - - // stable state orders - List newStates; - CopyFrom( - newStates, - From(epsilonPDA->states) - .Where([&](Ptr s) {return oldNewStateMap.Keys().Contains(s.Obj()); }) - .Select([&](Ptr s) { return oldNewStateMap[s.Obj()]; }) - ); - DeleteUnnecessaryStates(automaton, newRuleInfo, newStates); - MergeStates(automaton, newRuleInfo, newStates); - - // there should be at east one and only one transition that is TokenBegin from rootRuleStartState - // update the startState because the startState may be deleted - newRuleInfo->startState=newRuleInfo->rootRuleStartState->transitions[0]->target; - - // record end states - FOREACH(State*, state, newStates) - { - if(state->endState) - { - newRuleInfo->endStates.Add(state); - } - } - } - return automaton; - } - } - } -} - -/*********************************************************************** -.\PARSING\PARSINGDEFINITIONS.CPP -***********************************************************************/ - -namespace vl -{ - using namespace collections; - - namespace parsing - { - namespace definitions - { - -/*********************************************************************** -ParsingDefinitionType(Visitor) -***********************************************************************/ - - void ParsingDefinitionPrimitiveType::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionTokenType::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionSubType::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionArrayType::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - -/*********************************************************************** -ParsingDefinitionTypeDefinition(Visitor) -***********************************************************************/ - - void ParsingDefinitionClassMemberDefinition::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionClassDefinition::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionEnumMemberDefinition::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionEnumDefinition::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - -/*********************************************************************** -ParsingDefinitionGrammar(Visitor) -***********************************************************************/ - - void ParsingDefinitionPrimitiveGrammar::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionTextGrammar::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionSequenceGrammar::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionAlternativeGrammar::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionLoopGrammar::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionOptionalGrammar::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionCreateGrammar::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionAssignGrammar::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionUseGrammar::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - void ParsingDefinitionSetterGrammar::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - -/*********************************************************************** -ParsingDefinitionTypeWriter -***********************************************************************/ - - ParsingDefinitionAttributeWriter::ParsingDefinitionAttributeWriter(const WString& name) - { - attribute=new ParsingDefinitionAttribute; - attribute->name=name; - } - - ParsingDefinitionAttributeWriter::ParsingDefinitionAttributeWriter(const ParsingDefinitionAttributeWriter& attributeWriter) - { - attribute=attributeWriter.attribute; - } - - ParsingDefinitionAttributeWriter& ParsingDefinitionAttributeWriter::Argument(const WString& argument) - { - attribute->arguments.Add(argument); - return *this; - } - - Ptr ParsingDefinitionAttributeWriter::Attribute()const - { - return attribute; - } - - ParsingDefinitionAttributeWriter Attribute(const WString& name) - { - return ParsingDefinitionAttributeWriter(name); - } - -/*********************************************************************** -ParsingDefinitionTypeWriter -***********************************************************************/ - - ParsingDefinitionTypeWriter::ParsingDefinitionTypeWriter(Ptr internalType) - { - type=internalType; - } - - ParsingDefinitionTypeWriter::ParsingDefinitionTypeWriter(const ParsingDefinitionTypeWriter& typeWriter) - { - type=typeWriter.type; - } - - ParsingDefinitionTypeWriter::ParsingDefinitionTypeWriter(const WString& name) - { - Ptr primitiveType=new ParsingDefinitionPrimitiveType; - primitiveType->name=name; - type=primitiveType; - } - - ParsingDefinitionTypeWriter ParsingDefinitionTypeWriter::Sub(const WString& subTypeName)const - { - Ptr subType=new ParsingDefinitionSubType; - subType->parentType=type; - subType->subTypeName=subTypeName; - return ParsingDefinitionTypeWriter(subType); - } - - ParsingDefinitionTypeWriter ParsingDefinitionTypeWriter::Array()const - { - Ptr arrayType=new ParsingDefinitionArrayType; - arrayType->elementType=type; - return ParsingDefinitionTypeWriter(arrayType); - } - - Ptr ParsingDefinitionTypeWriter::Type()const - { - return type; - } - - ParsingDefinitionTypeWriter Type(const WString& name) - { - return ParsingDefinitionTypeWriter(name); - } - - ParsingDefinitionTypeWriter TokenType() - { - Ptr type=new ParsingDefinitionTokenType; - return ParsingDefinitionTypeWriter(type); - } - -/*********************************************************************** -ParsingDefinitionClassDefinitionWriter -***********************************************************************/ - - ParsingDefinitionClassDefinitionWriter::ParsingDefinitionClassDefinitionWriter(const WString& name) - { - definition=new ParsingDefinitionClassDefinition; - definition->name=name; - currentDefinition=definition; - } - - ParsingDefinitionClassDefinitionWriter::ParsingDefinitionClassDefinitionWriter(const WString& name, const ParsingDefinitionTypeWriter& parentType) - { - definition=new ParsingDefinitionClassDefinition; - definition->name=name; - definition->parentType=parentType.Type(); - currentDefinition=definition; - } - - ParsingDefinitionClassDefinitionWriter& ParsingDefinitionClassDefinitionWriter::AmbiguousType(const ParsingDefinitionTypeWriter& ambiguousType) - { - definition->ambiguousType=ambiguousType.Type(); - return *this; - } - - ParsingDefinitionClassDefinitionWriter& ParsingDefinitionClassDefinitionWriter::Member(const WString& name, const ParsingDefinitionTypeWriter& type, const WString& unescapingFunction) - { - Ptr member=new ParsingDefinitionClassMemberDefinition; - member->name=name; - member->type=type.Type(); - member->unescapingFunction=unescapingFunction; - definition->members.Add(member); - currentDefinition=member; - return *this; - } - - ParsingDefinitionClassDefinitionWriter& ParsingDefinitionClassDefinitionWriter::SubType(const ParsingDefinitionTypeDefinitionWriter& type) - { - definition->subTypes.Add(type.Definition()); - return *this; - } - - ParsingDefinitionClassDefinitionWriter& ParsingDefinitionClassDefinitionWriter::Attribute(const ParsingDefinitionAttributeWriter& attribute) - { - currentDefinition->attributes.Add(attribute.Attribute()); - return *this; - } - - Ptr ParsingDefinitionClassDefinitionWriter::Definition()const - { - return definition; - } - - ParsingDefinitionClassDefinitionWriter Class(const WString& name) - { - return ParsingDefinitionClassDefinitionWriter(name); - } - - ParsingDefinitionClassDefinitionWriter Class(const WString& name, const ParsingDefinitionTypeWriter& parentType) - { - return ParsingDefinitionClassDefinitionWriter(name, parentType); - } - -/*********************************************************************** -ParsingDefinitionEnumDefinitionWriter -***********************************************************************/ - - ParsingDefinitionEnumDefinitionWriter::ParsingDefinitionEnumDefinitionWriter(const WString& name) - { - definition=new ParsingDefinitionEnumDefinition; - definition->name=name; - currentDefinition=definition; - } - - ParsingDefinitionEnumDefinitionWriter& ParsingDefinitionEnumDefinitionWriter::Member(const WString& name) - { - Ptr member=new ParsingDefinitionEnumMemberDefinition; - member->name=name; - definition->members.Add(member); - currentDefinition=member; - return *this; - } - - ParsingDefinitionEnumDefinitionWriter& ParsingDefinitionEnumDefinitionWriter::Attribute(const ParsingDefinitionAttributeWriter& attribute) - { - currentDefinition->attributes.Add(attribute.Attribute()); - return *this; - } - - Ptr ParsingDefinitionEnumDefinitionWriter::Definition()const - { - return definition; - } - - ParsingDefinitionEnumDefinitionWriter Enum(const WString& name) - { - return ParsingDefinitionEnumDefinitionWriter(name); - } - -/*********************************************************************** -ParsingDefinitionGrammarWriter -***********************************************************************/ - - ParsingDefinitionGrammarWriter::ParsingDefinitionGrammarWriter(Ptr internalGrammar) - { - grammar=internalGrammar; - } - - ParsingDefinitionGrammarWriter::ParsingDefinitionGrammarWriter(const ParsingDefinitionGrammarWriter& grammarWriter) - { - grammar=grammarWriter.grammar; - } - - ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::operator+(const ParsingDefinitionGrammarWriter& next)const - { - Ptr sequence=new ParsingDefinitionSequenceGrammar; - sequence->first=grammar; - sequence->second=next.Grammar(); - return ParsingDefinitionGrammarWriter(sequence); - } - - ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::operator|(const ParsingDefinitionGrammarWriter& next)const - { - Ptr alternative=new ParsingDefinitionAlternativeGrammar; - alternative->first=grammar; - alternative->second=next.Grammar(); - return ParsingDefinitionGrammarWriter(alternative); - } - - ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::operator*()const - { - Ptr loop=new ParsingDefinitionLoopGrammar; - loop->grammar=grammar; - return ParsingDefinitionGrammarWriter(loop); - } - - ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::As(const ParsingDefinitionTypeWriter& type)const - { - Ptr create=new ParsingDefinitionCreateGrammar; - create->grammar=grammar; - create->type=type.Type(); - return ParsingDefinitionGrammarWriter(create); - } - - ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::operator[](const WString& memberName)const - { - Ptr assign=new ParsingDefinitionAssignGrammar; - assign->grammar=grammar; - assign->memberName=memberName; - return ParsingDefinitionGrammarWriter(assign); - } - - ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::operator!()const - { - Ptr use=new ParsingDefinitionUseGrammar; - use->grammar=grammar; - return ParsingDefinitionGrammarWriter(use); - } - - ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::Set(const WString& memberName, const WString& value)const - { - Ptr setter=new ParsingDefinitionSetterGrammar; - setter->grammar=grammar; - setter->memberName=memberName; - setter->value=value; - return ParsingDefinitionGrammarWriter(setter); - } - - Ptr ParsingDefinitionGrammarWriter::Grammar()const - { - return grammar; - } - - ParsingDefinitionGrammarWriter Rule(const WString& name) - { - Ptr grammar=new ParsingDefinitionPrimitiveGrammar; - grammar->name=name; - return ParsingDefinitionGrammarWriter(grammar); - } - - ParsingDefinitionGrammarWriter Text(const WString& text) - { - Ptr grammar=new ParsingDefinitionTextGrammar; - grammar->text=text; - return ParsingDefinitionGrammarWriter(grammar); - } - - ParsingDefinitionGrammarWriter Opt(const ParsingDefinitionGrammarWriter& writer) - { - Ptr grammar=new ParsingDefinitionOptionalGrammar; - grammar->grammar=writer.Grammar(); - return ParsingDefinitionGrammarWriter(grammar); - } - -/*********************************************************************** -ParsingDefinitionTokenDefinitionWriter -***********************************************************************/ - - ParsingDefinitionTokenDefinitionWriter::ParsingDefinitionTokenDefinitionWriter(ParsingDefinitionWriter& _owner, Ptr _token) - :owner(_owner) - ,token(_token) - { - } - - ParsingDefinitionTokenDefinitionWriter& ParsingDefinitionTokenDefinitionWriter::Attribute(const ParsingDefinitionAttributeWriter& attribute) - { - token->attributes.Add(attribute.Attribute()); - return *this; - } - - ParsingDefinitionWriter& ParsingDefinitionTokenDefinitionWriter::EndToken() - { - return owner; - } - -/*********************************************************************** -ParsingDefinitionRuleDefinitionWriter -***********************************************************************/ - - ParsingDefinitionRuleDefinitionWriter::ParsingDefinitionRuleDefinitionWriter(ParsingDefinitionWriter& _owner, Ptr _rule) - :owner(_owner) - ,rule(_rule) - { - } - - ParsingDefinitionRuleDefinitionWriter& ParsingDefinitionRuleDefinitionWriter::Imply(const ParsingDefinitionGrammarWriter& grammar) - { - rule->grammars.Add(grammar.Grammar()); - return *this; - } - - ParsingDefinitionRuleDefinitionWriter& ParsingDefinitionRuleDefinitionWriter::Attribute(const ParsingDefinitionAttributeWriter& attribute) - { - rule->attributes.Add(attribute.Attribute()); - return *this; - } - - ParsingDefinitionWriter& ParsingDefinitionRuleDefinitionWriter::EndRule() - { - return owner; - } - -/*********************************************************************** -ParsingDefinitionWriter -***********************************************************************/ - - ParsingDefinitionWriter::ParsingDefinitionWriter() - { - definition=new ParsingDefinition; - } - - ParsingDefinitionWriter& ParsingDefinitionWriter::Type(const ParsingDefinitionTypeDefinitionWriter& type) - { - definition->types.Add(type.Definition()); - return *this; - } - - ParsingDefinitionWriter& ParsingDefinitionWriter::Token(const WString& name, const WString& regex) - { - return TokenAtt(name, regex).EndToken(); - } - - ParsingDefinitionTokenDefinitionWriter ParsingDefinitionWriter::TokenAtt(const WString& name, const WString& regex) - { - Ptr token=new ParsingDefinitionTokenDefinition; - token->name=name; - token->regex=regex; - token->discard=false; - definition->tokens.Add(token); - return ParsingDefinitionTokenDefinitionWriter(*this, token); - } - - ParsingDefinitionWriter& ParsingDefinitionWriter::Discard(const WString& name, const WString& regex) - { - Ptr token=new ParsingDefinitionTokenDefinition; - token->name=name; - token->regex=regex; - token->discard=true; - definition->tokens.Add(token); - return *this; - } - - ParsingDefinitionRuleDefinitionWriter ParsingDefinitionWriter::Rule(const WString& name, const ParsingDefinitionTypeWriter& type) - { - Ptr rule=new ParsingDefinitionRuleDefinition; - rule->name=name; - rule->type=type.Type(); - definition->rules.Add(rule); - return ParsingDefinitionRuleDefinitionWriter(*this, rule); - } - - Ptr ParsingDefinitionWriter::Definition()const - { - return definition; - } - } - } -} - - -/*********************************************************************** -.\PARSING\PARSINGDEFINITIONS_CREATEPARSERDEFINITION.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - namespace definitions - { - using namespace collections; - -/*********************************************************************** -Bootstrap -***********************************************************************/ - - Ptr CreateParserDefinition() - { - ParsingDefinitionWriter definitionWriter; - - definitionWriter - .Type( - Class(L"AttributeDef") - .Member(L"name", TokenType()) - .Attribute(Attribute(L"Semantic").Argument(L"Attribute")) - .Member(L"arguments", TokenType().Array()) - ) - .Type( - Class(L"DefBase") - .Member(L"attributes", Type(L"AttributeDef").Array()) - ) - //------------------------------------- - .Type( - Class(L"TypeObj") - ) - - .Type( - Class(L"PrimitiveTypeObj", Type(L"TypeObj")) - .Member(L"name", TokenType()) - .Attribute(Attribute(L"Semantic").Argument(L"Type")) - ) - - .Type( - Class(L"TokenTypeObj", Type(L"TypeObj")) - ) - - .Type( - Class(L"SubTypeObj", Type(L"TypeObj")) - .Member(L"parentType", Type(L"TypeObj")) - .Member(L"name", TokenType()) - .Attribute(Attribute(L"Semantic").Argument(L"Type")) - ) - - .Type( - Class(L"ArrayTypeObj", Type(L"TypeObj")) - .Member(L"elementType", Type(L"TypeObj")) - ) - //------------------------------------- - .Type( - Class(L"TypeDef", Type(L"DefBase")) - .Member(L"name", TokenType()) - .Attribute(Attribute(L"Color").Argument(L"Type")) - ) - - .Type( - Class(L"ClassMemberDef", Type(L"DefBase")) - .Member(L"type", Type(L"TypeObj")) - .Member(L"name", TokenType()) - .Member(L"unescapingFunction", TokenType()) - ) - - .Type( - Class(L"ClassTypeDef", Type(L"TypeDef")) - .Member(L"ambiguousType", Type(L"TypeObj")) - .Member(L"parentType", Type(L"TypeObj")) - .Member(L"members", Type(L"ClassMemberDef").Array()) - .Member(L"subTypes", Type(L"TypeDef").Array()) - ) - - .Type( - Class(L"EnumMemberDef", Type(L"DefBase")) - .Member(L"name", TokenType()) - ) - - .Type( - Class(L"EnumTypeDef", Type(L"TypeDef")) - .Member(L"members", Type(L"EnumMemberDef").Array()) - ) - //------------------------------------- - .Type( - Class(L"GrammarDef") - ) - - .Type( - Class(L"PrimitiveGrammarDef", Type(L"GrammarDef")) - .Member(L"name", TokenType()) - .Attribute(Attribute(L"Semantic").Argument(L"Token").Argument(L"Rule")) - ) - - .Type( - Class(L"TextGrammarDef", Type(L"GrammarDef")) - .Member(L"text", TokenType()) - .Attribute(Attribute(L"Semantic").Argument(L"Literal")) - ) - - .Type( - Class(L"SequenceGrammarDef", Type(L"GrammarDef")) - .Member(L"first", Type(L"GrammarDef")) - .Member(L"second", Type(L"GrammarDef")) - ) - - .Type( - Class(L"AlternativeGrammarDef", Type(L"GrammarDef")) - .Member(L"first", Type(L"GrammarDef")) - .Member(L"second", Type(L"GrammarDef")) - ) - - .Type( - Class(L"LoopGrammarDef", Type(L"GrammarDef")) - .Member(L"grammar", Type(L"GrammarDef")) - ) - - .Type( - Class(L"OptionalGrammarDef", Type(L"GrammarDef")) - .Member(L"grammar", Type(L"GrammarDef")) - ) - - .Type( - Class(L"CreateGrammarDef", Type(L"GrammarDef")) - .Member(L"grammar", Type(L"GrammarDef")) - .Member(L"type", Type(L"TypeObj")) - ) - - .Type( - Class(L"AssignGrammarDef", Type(L"GrammarDef")) - .Member(L"grammar", Type(L"GrammarDef")) - .Member(L"memberName", TokenType()) - .Attribute(Attribute(L"Semantic").Argument(L"Field")) - ) - - .Type( - Class(L"UseGrammarDef", Type(L"GrammarDef")) - .Member(L"grammar", Type(L"GrammarDef")) - ) - - .Type( - Class(L"SetterGrammarDef", Type(L"GrammarDef")) - .Member(L"grammar", Type(L"GrammarDef")) - .Member(L"memberName", TokenType()) - .Attribute(Attribute(L"Semantic").Argument(L"Field")) - .Member(L"value", TokenType()) - .Attribute(Attribute(L"Semantic").Argument(L"EnumValue")) - ) - //------------------------------------- - .Type( - Class(L"TokenDef", Type(L"DefBase")) - .SubType( - Enum(L"DiscardOption") - .Member(L"DiscardToken") - .Member(L"KeepToken") - ) - .Member(L"name", TokenType()) - .Attribute(Attribute(L"Color").Argument(L"Token")) - .Member(L"regex", TokenType()) - .Member(L"discard", Type(L"DiscardOption")) - ) - - .Type( - Class(L"RuleDef", Type(L"DefBase")) - .Member(L"name", TokenType()) - .Attribute(Attribute(L"Color").Argument(L"Rule")) - .Member(L"type", Type(L"TypeObj")) - .Member(L"grammars", Type(L"GrammarDef").Array()) - ) - - .Type( - Class(L"ParserDef") - .Member(L"definitions", Type(L"DefBase").Array()) - ) - //------------------------------------- - .TokenAtt(L"CLASS", L"class") - .Attribute(Attribute(L"Color").Argument(L"Keyword")) - .Attribute(Attribute(L"Candidate")) - .EndToken() - .TokenAtt(L"AMBIGUOUS", L"ambiguous") - .Attribute(Attribute(L"Color").Argument(L"Keyword")) - .Attribute(Attribute(L"Candidate")) - .EndToken() - .TokenAtt(L"ENUM", L"enum") - .Attribute(Attribute(L"Color").Argument(L"Keyword")) - .Attribute(Attribute(L"Candidate")) - .EndToken() - .TokenAtt(L"TOKEN", L"token") - .Attribute(Attribute(L"Color").Argument(L"Keyword")) - .Attribute(Attribute(L"Candidate")) - .EndToken() - .TokenAtt(L"DISCARDTOKEN", L"discardtoken") - .Attribute(Attribute(L"Color").Argument(L"Keyword")) - .Attribute(Attribute(L"Candidate")) - .EndToken() - .TokenAtt(L"RULE", L"rule") - .Attribute(Attribute(L"Color").Argument(L"Keyword")) - .Attribute(Attribute(L"Candidate")) - .EndToken() - .TokenAtt(L"AS", L"as") - .Attribute(Attribute(L"Color").Argument(L"Keyword")) - .Attribute(Attribute(L"Candidate")) - .EndToken() - .TokenAtt(L"WITH", L"with") - .Attribute(Attribute(L"Color").Argument(L"Keyword")) - .Attribute(Attribute(L"Candidate")) - .EndToken() - - .Token(L"OPEN", L"/{") - .Token(L"CLOSE", L"/}") - .Token(L"SEMICOLON", L";") - .Token(L"COLON", L":") - .Token(L"COMMA", L",") - .Token(L"DOT", L".") - .Token(L"ASSIGN", L"/=") - .Token(L"USING", L"/!") - .Token(L"OR", L"/|") - .Token(L"OPTOPEN", L"/[") - .Token(L"OPTCLOSE", L"/]") - .Token(L"PREOPEN", L"/(") - .Token(L"PRECLOSE", L"/)") - .TokenAtt(L"ATT", L"@") - .Attribute(Attribute(L"Color").Argument(L"Attribute")) - .EndToken() - - .TokenAtt(L"NAME", L"[a-zA-Z_]/w*") - .Attribute(Attribute(L"Color").Argument(L"Default")) - .Attribute(Attribute(L"ContextColor")) - .Attribute(Attribute(L"AutoComplete")) - .EndToken() - .TokenAtt(L"STRING", L"\"([^\"]|\"\")*\"") - .Attribute(Attribute(L"Color").Argument(L"String")) - .Attribute(Attribute(L"AutoComplete")) - .EndToken() - .Discard(L"SPACE", L"/s+") - .Discard(L"COMMENT", L"////[^\\r\\n]*") - //------------------------------------- - .Rule(L"Attribute", Type(L"AttributeDef")) - .Imply( - (Text(L"@") + Rule(L"NAME")[L"name"] + Text(L"(") + Opt(Rule(L"STRING")[L"arguments"] + *(Text(L",") + Rule(L"STRING")[L"arguments"])) + Text(L")")) - .As(Type(L"AttributeDef")) - ) - .EndRule() - //------------------------------------- - .Rule(L"Type", Type(L"TypeObj")) - .Imply( - (Rule(L"NAME")[L"name"]) - .As(Type(L"PrimitiveTypeObj")) - ) - .Imply( - Text(L"token") - .As(Type(L"TokenTypeObj")) - ) - .Imply( - (Rule(L"Type")[L"parentType"] + Text(L".") + Rule(L"NAME")[L"name"]) - .As(Type(L"SubTypeObj")) - ) - .Imply( - (Rule(L"Type")[L"elementType"] + Text(L"[") + Text(L"]")) - .As(Type(L"ArrayTypeObj")) - ) - .EndRule() - //------------------------------------- - .Rule(L"EnumMember", Type(L"EnumMemberDef")) - .Imply( - ( - Rule(L"NAME")[L"name"] - + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) - + Text(L",") - ) - .As(Type(L"EnumMemberDef")) - ) - .EndRule() - .Rule(L"Enum", Type(L"EnumTypeDef")) - .Imply( - ( - Text(L"enum") + Rule(L"NAME")[L"name"] - + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) - + Text(L"{") - + *(Rule(L"EnumMember")[L"members"]) - + Text(L"}") - ) - .As(Type(L"EnumTypeDef")) - ) - .EndRule() - .Rule(L"ClassMember", Type(L"ClassMemberDef")) - .Imply( - ( - Rule(L"Type")[L"type"] + Rule(L"NAME")[L"name"] - + Opt(Text(L"(") + Rule(L"NAME")[L"unescapingFunction"] + Text(L")")) - + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) - + Text(L";") - ) - .As(Type(L"ClassMemberDef")) - ) - .EndRule() - .Rule(L"Class", Type(L"ClassTypeDef")) - .Imply( - ( - Text(L"class") + Rule(L"NAME")[L"name"] - + Opt(Text(L"ambiguous") + Text(L"(") + Rule(L"Type")[L"ambiguousType"] + Text(L")")) - + Opt(Text(L":") + Rule(L"Type")[L"parentType"]) - + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) - + Text(L"{") - + *(Rule(L"ClassMember")[L"members"] | Rule(L"TypeDecl")[L"subTypes"]) - + Text(L"}") - ) - .As(Type(L"ClassTypeDef")) - ) - .EndRule() - .Rule(L"TypeDecl", Type(L"TypeDef")) - .Imply(!Rule(L"Enum") | !Rule(L"Class")) - .EndRule() - //------------------------------------ - .Rule(L"PrimitiveGrammar", Type(L"GrammarDef")) - .Imply( - (Rule(L"NAME")[L"name"]) - .As(Type(L"PrimitiveGrammarDef")) - ) - .Imply( - (Rule(L"STRING")[L"text"]) - .As(Type(L"TextGrammarDef")) - ) - .Imply( - (Rule(L"PrimitiveGrammar")[L"grammar"] + Text(L":") + Rule(L"NAME")[L"memberName"]) - .As(Type(L"AssignGrammarDef")) - ) - .Imply( - (Text(L"!") + Rule(L"PrimitiveGrammar")[L"grammar"]) - .As(Type(L"UseGrammarDef")) - ) - .Imply( - (Text(L"[") + Rule(L"Grammar")[L"grammar"] + Text(L"]")) - .As(Type(L"OptionalGrammarDef")) - ) - .Imply( - (Text(L"{") + Rule(L"Grammar")[L"grammar"] + Text(L"}")) - .As(Type(L"LoopGrammarDef")) - ) - .Imply( - (Text(L"(") + !Rule(L"Grammar") + Text(L")")) - ) - .EndRule() - - .Rule(L"SequenceGrammar", Type(L"GrammarDef")) - .Imply( - !Rule(L"PrimitiveGrammar") - ) - .Imply( - (Rule(L"SequenceGrammar")[L"first"] + Rule(L"PrimitiveGrammar")[L"second"]) - .As(Type(L"SequenceGrammarDef")) - ) - .EndRule() - - .Rule(L"AlternativeGrammar", Type(L"GrammarDef")) - .Imply( - !Rule(L"SequenceGrammar") - ) - .Imply( - (Rule(L"AlternativeGrammar")[L"first"] + Text(L"|") + Rule(L"SequenceGrammar")[L"second"]) - .As(Type(L"AlternativeGrammarDef")) - ) - .EndRule() - - .Rule(L"Grammar", Type(L"GrammarDef")) - .Imply( - !Rule(L"AlternativeGrammar") - ) - .Imply( - (Rule(L"Grammar")[L"grammar"] + Text(L"as") + Rule(L"Type")[L"type"]) - .As(Type(L"CreateGrammarDef")) - ) - .Imply( - (Rule(L"Grammar")[L"grammar"] + Text(L"with") + Text(L"{") + Rule(L"NAME")[L"memberName"] + Text(L"=") + Rule(L"STRING")[L"value"] + Text(L"}")) - .As(Type(L"SetterGrammarDef")) - ) - .EndRule() - //------------------------------------ - .Rule(L"TokenDecl", Type(L"TokenDef")) - .Imply( - ( - Text(L"token") + Rule(L"NAME")[L"name"] - + Text(L"=") + Rule(L"STRING")[L"regex"] - + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) - + Text(L";") - ) - .As(Type(L"TokenDef")) - .Set(L"discard", L"KeepToken") - ) - .Imply( - (Text(L"discardtoken") + Rule(L"NAME")[L"name"] + Text(L"=") + Rule(L"STRING")[L"regex"] + Text(L";")) - .As(Type(L"TokenDef")) - .Set(L"discard", L"DiscardToken") - ) - .EndRule() - - .Rule(L"RuleDecl", Type(L"RuleDef")) - .Imply( - ( - Text(L"rule") + Rule(L"Type")[L"type"] + Rule(L"NAME")[L"name"] - + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) - + *(Text(L"=") + Rule(L"Grammar")[L"grammars"]) - + Text(L";") - ) - .As(Type(L"RuleDef")) - ) - .EndRule() - //------------------------------------ - .Rule(L"ParserDecl", Type(L"ParserDef")) - .Imply( - ( - *( - Rule(L"TypeDecl")[L"definitions"] | - Rule(L"TokenDecl")[L"definitions"] | - Rule(L"RuleDecl")[L"definitions"] - ) - +( - Rule(L"TypeDecl")[L"definitions"] | - Rule(L"TokenDecl")[L"definitions"] | - Rule(L"RuleDecl")[L"definitions"] - ) - ) - .As(Type(L"ParserDef")) - ) - .EndRule() - ; - - return definitionWriter.Definition(); - } - - WString DeserializeString(const WString& value) - { - if(value.Length()>=2 && value[0]==L'"' && value[value.Length()-1]==L'"') - { - Array chars(value.Length()); - memset(&chars[0], 0, chars.Count()*sizeof(wchar_t)); - const wchar_t* reading=value.Buffer()+1; - wchar_t* writing=&chars[0]; - while(*reading) - { - if(*reading!=L'"') - { - *writing++=*reading++; - } - else if(reading[1]!=L'"') - { - break; - } - else - { - *writing++=L'"'; - reading+=2; - } - } - return &chars[0]; - } - return L""; - } - - WString DeserializeString(Ptr token) - { - const WString& value=token->GetValue(); - return DeserializeString(value); - } - - void SetName(WString& target, Ptr node) - { - Ptr token=node.Cast(); - if(token) - { - target=token->GetValue(); - } - } - - void SetText(WString& target, Ptr node) - { - Ptr token=node.Cast(); - if(token) - { - target=DeserializeString(token); - } - } - - extern Ptr Deserialize(Ptr node); - - template - void SetArray(List>& target, Ptr node) - { - Ptr source=node.Cast(); - if(source) - { - for(vint i=0;iCount();i++) - { - target.Add(Deserialize(source->GetItem(i).Cast()).Cast()); - } - } - } - - void SetArray(List& target, Ptr node) - { - Ptr source=node.Cast(); - if(source) - { - for(vint i=0;iCount();i++) - { - WString name; - SetName(name, source->GetItem(i)); - target.Add(name); - } - } - } - - template - void SetMember(Ptr& target, Ptr node) - { - Ptr source=node.Cast(); - if(source) - { - target=Deserialize(source).Cast(); - } - } - - Ptr Deserialize(Ptr node) - { - if(!node) - { - return 0; - } - else if(node->GetType()==L"AttributeDef") - { - Ptr target=new ParsingDefinitionAttribute; - SetName(target->name, node->GetMember(L"name")); - SetArray(target->arguments, node->GetMember(L"arguments")); - for(vint i=0;iarguments.Count();i++) - { - target->arguments[i]=DeserializeString(target->arguments[i]); - } - return target; - } - else if(node->GetType()==L"PrimitiveTypeObj") - { - Ptr target=new ParsingDefinitionPrimitiveType; - SetName(target->name, node->GetMember(L"name")); - return target; - } - else if(node->GetType()==L"TokenTypeObj") - { - Ptr target=new ParsingDefinitionTokenType; - return target; - } - else if(node->GetType()==L"SubTypeObj") - { - Ptr target=new ParsingDefinitionSubType; - SetMember(target->parentType, node->GetMember(L"parentType")); - SetName(target->subTypeName, node->GetMember(L"name")); - return target; - } - else if(node->GetType()==L"ArrayTypeObj") - { - Ptr target=new ParsingDefinitionArrayType; - SetMember(target->elementType, node->GetMember(L"elementType")); - return target; - } - else if(node->GetType()==L"ClassMemberDef") - { - Ptr target=new ParsingDefinitionClassMemberDefinition; - SetArray(target->attributes, node->GetMember(L"attributes")); - SetMember(target->type, node->GetMember(L"type")); - SetName(target->name, node->GetMember(L"name")); - SetName(target->unescapingFunction, node->GetMember(L"unescapingFunction")); - return target; - } - else if(node->GetType()==L"ClassTypeDef") - { - Ptr target=new ParsingDefinitionClassDefinition; - SetArray(target->attributes, node->GetMember(L"attributes")); - SetMember(target->ambiguousType, node->GetMember(L"ambiguousType")); - SetMember(target->parentType, node->GetMember(L"parentType")); - SetName(target->name, node->GetMember(L"name")); - SetArray(target->members, node->GetMember(L"members")); - SetArray(target->subTypes, node->GetMember(L"subTypes")); - return target; - } - else if(node->GetType()==L"EnumMemberDef") - { - Ptr target=new ParsingDefinitionEnumMemberDefinition; - SetArray(target->attributes, node->GetMember(L"attributes")); - SetName(target->name, node->GetMember(L"name")); - return target; - } - else if(node->GetType()==L"EnumTypeDef") - { - Ptr target=new ParsingDefinitionEnumDefinition; - SetArray(target->attributes, node->GetMember(L"attributes")); - SetName(target->name, node->GetMember(L"name")); - SetArray(target->members, node->GetMember(L"members")); - return target; - } - else if(node->GetType()==L"PrimitiveGrammarDef") - { - Ptr target=new ParsingDefinitionPrimitiveGrammar; - SetName(target->name, node->GetMember(L"name")); - return target; - } - else if(node->GetType()==L"TextGrammarDef") - { - Ptr target=new ParsingDefinitionTextGrammar; - SetText(target->text, node->GetMember(L"text")); - return target; - } - else if(node->GetType()==L"SequenceGrammarDef") - { - Ptr target=new ParsingDefinitionSequenceGrammar; - SetMember(target->first, node->GetMember(L"first")); - SetMember(target->second, node->GetMember(L"second")); - return target; - } - else if(node->GetType()==L"AlternativeGrammarDef") - { - Ptr target=new ParsingDefinitionAlternativeGrammar; - SetMember(target->first, node->GetMember(L"first")); - SetMember(target->second, node->GetMember(L"second")); - return target; - } - else if(node->GetType()==L"LoopGrammarDef") - { - Ptr target=new ParsingDefinitionLoopGrammar; - SetMember(target->grammar, node->GetMember(L"grammar")); - return target; - } - else if(node->GetType()==L"OptionalGrammarDef") - { - Ptr target=new ParsingDefinitionOptionalGrammar; - SetMember(target->grammar, node->GetMember(L"grammar")); - return target; - } - else if(node->GetType()==L"CreateGrammarDef") - { - Ptr target=new ParsingDefinitionCreateGrammar; - SetMember(target->grammar, node->GetMember(L"grammar")); - SetMember(target->type, node->GetMember(L"type")); - return target; - } - else if(node->GetType()==L"AssignGrammarDef") - { - Ptr target=new ParsingDefinitionAssignGrammar; - SetMember(target->grammar, node->GetMember(L"grammar")); - SetName(target->memberName, node->GetMember(L"memberName")); - return target; - } - else if(node->GetType()==L"UseGrammarDef") - { - Ptr target=new ParsingDefinitionUseGrammar; - SetMember(target->grammar, node->GetMember(L"grammar")); - return target; - } - else if(node->GetType()==L"SetterGrammarDef") - { - Ptr target=new ParsingDefinitionSetterGrammar; - SetMember(target->grammar, node->GetMember(L"grammar")); - SetName(target->memberName, node->GetMember(L"memberName")); - SetText(target->value, node->GetMember(L"value")); - return target; - } - else if(node->GetType()==L"TokenDef") - { - Ptr target=new ParsingDefinitionTokenDefinition; - SetArray(target->attributes, node->GetMember(L"attributes")); - SetName(target->name, node->GetMember(L"name")); - SetText(target->regex, node->GetMember(L"regex")); - - Ptr token=node->GetMember(L"discard").Cast(); - target->discard=(token && token->GetValue()==L"DiscardToken"); - return target; - } - else if(node->GetType()==L"RuleDef") - { - Ptr target=new ParsingDefinitionRuleDefinition; - SetArray(target->attributes, node->GetMember(L"attributes")); - SetName(target->name, node->GetMember(L"name")); - SetMember(target->type, node->GetMember(L"type")); - SetArray(target->grammars, node->GetMember(L"grammars")); - return target; - } - else if(node->GetType()==L"ParserDef") - { - Ptr target=new ParsingDefinition; - Ptr defs=node->GetMember(L"definitions").Cast(); - if(defs) - { - vint count=defs->Count(); - for(vint i=0;i def=defs->GetItem(i).Cast(); - Ptr defObject=Deserialize(def); - if(Ptr defType=defObject.Cast()) - { - target->types.Add(defType); - } - else if(Ptr defToken=defObject.Cast()) - { - target->tokens.Add(defToken); - } - else if(Ptr defRule=defObject.Cast()) - { - target->rules.Add(defRule); - } - } - } - return target; - } - else - { - return 0; - } - } - - Ptr DeserializeDefinition(Ptr node) - { - return Deserialize(node.Cast()).Cast(); - } - } - } -} - - -/*********************************************************************** -.\PARSING\PARSINGLOGGING.CPP -***********************************************************************/ - -namespace vl -{ - using namespace stream; - using namespace collections; - - namespace parsing - { - namespace definitions - { - void LogString(const WString& input, TextWriter& writer) - { - writer.WriteChar(L'\"'); - for(int i=0;iattributes.Count();i++) - { - ParsingDefinitionAttribute* att=definition->attributes[i].Obj(); - if(i>0) writer.WriteChar(L','); - writer.WriteString(L" @"); - writer.WriteString(att->name); - writer.WriteChar(L'('); - for(vint j=0;jarguments.Count();j++) - { - if(j>0) writer.WriteString(L", "); - LogString(att->arguments[j], writer); - } - writer.WriteChar(L')'); - } - } - -/*********************************************************************** -Logger (ParsingDefinitionType) -***********************************************************************/ - - class ParsingDefinitionTypeLogger : public Object, public ParsingDefinitionType::IVisitor - { - public: - TextWriter& writer; - - ParsingDefinitionTypeLogger(TextWriter& _writer) - :writer(_writer) - { - } - - static void LogInternal(ParsingDefinitionType* type, TextWriter& writer) - { - ParsingDefinitionTypeLogger visitor(writer); - type->Accept(&visitor); - } - - void Visit(ParsingDefinitionPrimitiveType* node)override - { - writer.WriteString(node->name); - } - - void Visit(ParsingDefinitionTokenType* node)override - { - writer.WriteString(L"token"); - } - - void Visit(ParsingDefinitionSubType* node)override - { - LogInternal(node->parentType.Obj(), writer); - writer.WriteString(L"."); - writer.WriteString(node->subTypeName); - } - - void Visit(ParsingDefinitionArrayType* node)override - { - LogInternal(node->elementType.Obj(), writer); - writer.WriteString(L"[]"); - } - }; - - void Log(ParsingDefinitionType* type, TextWriter& writer) - { - ParsingDefinitionTypeLogger::LogInternal(type, writer); - } - -/*********************************************************************** -Logger (ParsingDefinitionTypeDefinition) -***********************************************************************/ - - class ParsingDefinitionTypeDefinitionLogger : public Object, public ParsingDefinitionTypeDefinition::IVisitor - { - public: - WString prefix; - TextWriter& writer; - - static void LogInternal(ParsingDefinitionTypeDefinition* definition, const WString& prefix, TextWriter& writer) - { - ParsingDefinitionTypeDefinitionLogger visitor(prefix, writer); - definition->Accept(&visitor); - } - - ParsingDefinitionTypeDefinitionLogger(const WString& _prefix, TextWriter& _writer) - :prefix(_prefix) - ,writer(_writer) - { - } - - void Visit(ParsingDefinitionClassMemberDefinition* node)override - { - writer.WriteString(prefix); - Log(node->type.Obj(), writer); - writer.WriteString(L" "); - writer.WriteString(node->name); - if(node->unescapingFunction!=L"") - { - writer.WriteString(L" ("); - writer.WriteString(node->unescapingFunction); - writer.WriteString(L")"); - } - LogAttributeList(node, writer); - writer.WriteLine(L";"); - } - - void Visit(ParsingDefinitionClassDefinition* node)override - { - writer.WriteString(prefix); - writer.WriteString(L"class "); - writer.WriteString(node->name); - if(node->ambiguousType) - { - writer.WriteString(L" ambiguous("); - Log(node->ambiguousType.Obj(), writer); - writer.WriteString(L")"); - } - if(node->parentType) - { - writer.WriteString(L" : "); - Log(node->parentType.Obj(), writer); - } - LogAttributeList(node, writer); - writer.WriteLine(L""); - - writer.WriteString(prefix); - writer.WriteLine(L"{"); - - for(int i=0;isubTypes.Count();i++) - { - LogInternal(node->subTypes[i].Obj(), prefix+L" ", writer); - writer.WriteLine(L""); - } - - for(int i=0;imembers.Count();i++) - { - LogInternal(node->members[i].Obj(), prefix+L" ", writer); - } - - writer.WriteString(prefix); - writer.WriteLine(L"}"); - } - - void Visit(ParsingDefinitionEnumMemberDefinition* node)override - { - writer.WriteString(prefix); - writer.WriteString(node->name); - LogAttributeList(node, writer); - writer.WriteLine(L","); - } - - void Visit(ParsingDefinitionEnumDefinition* node)override - { - writer.WriteString(prefix); - writer.WriteString(L"enum "); - writer.WriteString(node->name); - LogAttributeList(node, writer); - writer.WriteLine(L""); - - writer.WriteString(prefix); - writer.WriteLine(L"{"); - - for(int i=0;imembers.Count();i++) - { - LogInternal(node->members[i].Obj(), prefix+L" ", writer); - } - - writer.WriteString(prefix); - writer.WriteLine(L"}"); - } - }; - - void Log(ParsingDefinitionTypeDefinition* definition, const WString& prefix, TextWriter& writer) - { - ParsingDefinitionTypeDefinitionLogger::LogInternal(definition, prefix, writer); - } - -/*********************************************************************** -Logger (ParsingDefinitionGrammar) -***********************************************************************/ - -#define PRIORITY_NONE 0 -#define PRIORITY_CREATE 1 -#define PRIORITY_SET 1 -#define PRIORITY_ALTERNATIVE 2 -#define PRIORITY_SEQUENCE 3 -#define PRIORITY_USE 4 -#define PRIORITY_ASSIGN 4 - - class ParsingDefinitionGrammarLogger : public Object, public ParsingDefinitionGrammar::IVisitor - { - public: - TextWriter& writer; - int parentPriority; - ParsingDefinitionGrammar* stateNode; - bool beforeNode; - - ParsingDefinitionGrammarLogger(TextWriter& _writer, int _parentPriority, ParsingDefinitionGrammar* _stateNode, bool _beforeNode) - :writer(_writer) - ,parentPriority(_parentPriority) - ,stateNode(_stateNode) - ,beforeNode(_beforeNode) - { - } - - static void LogInternal(ParsingDefinitionGrammar* grammar, int parentPriority, ParsingDefinitionGrammar* stateNode, bool beforeNode, TextWriter& writer) - { - if(grammar==stateNode && beforeNode) - { - writer.WriteString(L"@"); - } - ParsingDefinitionGrammarLogger visitor(writer, parentPriority, stateNode, beforeNode); - grammar->Accept(&visitor); - if(grammar==stateNode && !beforeNode) - { - writer.WriteString(L"@"); - } - } - - void LogInternal(ParsingDefinitionGrammar* grammar, int parentPriority, TextWriter& writer) - { - LogInternal(grammar, parentPriority, stateNode, beforeNode, writer); - } - - void Visit(ParsingDefinitionPrimitiveGrammar* node)override - { - writer.WriteString(node->name); - } - - void Visit(ParsingDefinitionTextGrammar* node)override - { - LogString(node->text, writer); - } - - void Visit(ParsingDefinitionSequenceGrammar* node)override - { - int priority=PRIORITY_SEQUENCE; - if(parentPriority>priority) - { - writer.WriteString(L"( "); - } - LogInternal(node->first.Obj(), priority, writer); - writer.WriteString(L" "); - LogInternal(node->second.Obj(), priority, writer); - if(parentPriority>priority) - { - writer.WriteString(L" )"); - } - } - - void Visit(ParsingDefinitionAlternativeGrammar* node)override - { - int priority=PRIORITY_ALTERNATIVE; - if(parentPriority>priority) - { - writer.WriteString(L"( "); - } - LogInternal(node->first.Obj(), priority, writer); - writer.WriteString(L" | "); - LogInternal(node->second.Obj(), priority, writer); - if(parentPriority>priority) - { - writer.WriteString(L" )"); - } - } - - void Visit(ParsingDefinitionLoopGrammar* node)override - { - writer.WriteString(L"{ "); - LogInternal(node->grammar.Obj(), PRIORITY_NONE, writer); - writer.WriteString(L" }"); - } - - void Visit(ParsingDefinitionOptionalGrammar* node)override - { - writer.WriteString(L"[ "); - LogInternal(node->grammar.Obj(), PRIORITY_NONE, writer); - writer.WriteString(L" ]"); - } - - void Visit(ParsingDefinitionCreateGrammar* node)override - { - int priority=PRIORITY_CREATE; - if(parentPriority>priority) - { - writer.WriteString(L"( "); - } - LogInternal(node->grammar.Obj(), priority, writer); - writer.WriteString(L" as "); - Log(node->type.Obj(), writer); - if(parentPriority>priority) - { - writer.WriteString(L" )"); - } - } - - void Visit(ParsingDefinitionAssignGrammar* node)override - { - int priority=PRIORITY_ASSIGN; - if(parentPriority>priority) - { - writer.WriteString(L"( "); - } - LogInternal(node->grammar.Obj(), priority, writer); - writer.WriteString(L" : "); - writer.WriteString(node->memberName); - if(parentPriority>priority) - { - writer.WriteString(L" )"); - } - } - - void Visit(ParsingDefinitionUseGrammar* node)override - { - int priority=PRIORITY_USE; - if(parentPriority>priority) - { - writer.WriteString(L"( "); - } - writer.WriteString(L"!"); - LogInternal(node->grammar.Obj(), priority, writer); - if(parentPriority>priority) - { - writer.WriteString(L" )"); - } - } - - void Visit(ParsingDefinitionSetterGrammar* node)override - { - int priority=PRIORITY_SET; - if(parentPriority>priority) - { - writer.WriteString(L"( "); - } - LogInternal(node->grammar.Obj(), priority, writer); - writer.WriteString(L" with { "); - writer.WriteString(node->memberName); - writer.WriteString(L" = "); - LogString(node->value, writer); - writer.WriteString(L" }"); - if(parentPriority>priority) - { - writer.WriteString(L" )"); - } - } - }; - - void Log(ParsingDefinitionGrammar* grammar, TextWriter& writer) - { - ParsingDefinitionGrammarLogger::LogInternal(grammar, PRIORITY_NONE, 0, true, writer); - } - - void Log(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode, TextWriter& writer) - { - ParsingDefinitionGrammarLogger::LogInternal(grammar, PRIORITY_NONE, stateNode, beforeNode, writer); - } - -#undef PRIORITY_NONE -#undef PRIORITY_CREATE -#undef PRIORITY_SET -#undef PRIORITY_ALTERNATIVE -#undef PRIORITY_SEQUENCE -#undef PRIORITY_USE -#undef PRIORITY_ASSIGN - -/*********************************************************************** -FindAppropriateGrammarState -***********************************************************************/ - - class FindAppropriateGrammarStateVisitor : public Object, public ParsingDefinitionGrammar::IVisitor - { - public: - ParsingDefinitionGrammar* stateNode; - bool beforeNode; - ParsingDefinitionGrammar* beforeReference; - ParsingDefinitionGrammar* afterReference; - ParsingDefinitionGrammar* result; - - FindAppropriateGrammarStateVisitor(ParsingDefinitionGrammar* _stateNode, bool _beforeNode, ParsingDefinitionGrammar* _beforeReference, ParsingDefinitionGrammar* _afterReference) - :stateNode(_stateNode) - ,beforeNode(_beforeNode) - ,beforeReference(_beforeReference) - ,afterReference(_afterReference) - ,result(0) - { - } - - static ParsingDefinitionGrammar* Find(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode, ParsingDefinitionGrammar* beforeReference, ParsingDefinitionGrammar* afterReference) - { - if(grammar==stateNode) - { - return - beforeNode - ?(beforeReference?beforeReference:stateNode) - :(afterReference?afterReference:stateNode) - ; - } - else - { - FindAppropriateGrammarStateVisitor visitor(stateNode, beforeNode, beforeReference, afterReference); - grammar->Accept(&visitor); - return visitor.result; - } - } - - void Visit(ParsingDefinitionPrimitiveGrammar* node)override - { - } - - void Visit(ParsingDefinitionTextGrammar* node)override - { - } - - void Visit(ParsingDefinitionSequenceGrammar* node)override - { - result=Find(node->first.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), 0); - if(!result) - { - result=Find(node->second.Obj(), stateNode, beforeNode, 0, (afterReference?afterReference:node)); - } - } - - void Visit(ParsingDefinitionAlternativeGrammar* node)override - { - result=Find(node->first.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); - if(!result) - { - result=Find(node->second.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); - } - } - - void Visit(ParsingDefinitionLoopGrammar* node)override - { - result=Find(node->grammar.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); - } - - void Visit(ParsingDefinitionOptionalGrammar* node)override - { - result=Find(node->grammar.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); - } - - void Visit(ParsingDefinitionCreateGrammar* node)override - { - result=Find(node->grammar.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); - } - - void Visit(ParsingDefinitionAssignGrammar* node)override - { - result=Find(node->grammar.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); - } - - void Visit(ParsingDefinitionUseGrammar* node)override - { - result=Find(node->grammar.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); - } - - void Visit(ParsingDefinitionSetterGrammar* node)override - { - result=Find(node->grammar.Obj(), stateNode, beforeNode, beforeReference, afterReference); - } - }; - -/*********************************************************************** -Logger (ParsingDefinitionGrammar) -***********************************************************************/ - - WString TypeToString(ParsingDefinitionType* type) - { - return GenerateToStream([&](StreamWriter& writer) - { - Log(type, writer); - }, 64); - } - - WString GrammarToString(ParsingDefinitionGrammar* grammar) - { - return GrammarStateToString(grammar, 0, true); - } - - WString GrammarStateToString(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode) - { - return GenerateToStream([&](StreamWriter& writer) - { - Log(grammar, stateNode, beforeNode, writer); - }, 64); - } - - ParsingDefinitionGrammar* FindAppropriateGrammarState(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode) - { - return FindAppropriateGrammarStateVisitor::Find(grammar, stateNode, beforeNode, 0, 0); - } - - void Log(Ptr definition, TextWriter& writer) - { - FOREACH(Ptr, type, definition->types) - { - Log(type.Obj(), L"", writer); - writer.WriteLine(L""); - } - - FOREACH(Ptr, token, definition->tokens) - { - if(token->discard) - { - writer.WriteString(L"discardtoken "); - } - else - { - writer.WriteString(L"token "); - } - writer.WriteString(token->name); - writer.WriteString(L" = "); - LogString(token->regex, writer); - LogAttributeList(token.Obj(), writer); - writer.WriteLine(L";"); - } - writer.WriteLine(L""); - - FOREACH(Ptr, rule, definition->rules) - { - writer.WriteString(L"rule "); - Log(rule->type.Obj(), writer); - writer.WriteString(L" "); - writer.WriteString(rule->name); - LogAttributeList(rule.Obj(), writer); - writer.WriteLine(L""); - - FOREACH(Ptr, grammar, rule->grammars) - { - writer.WriteString(L" = "); - Log(grammar.Obj(), writer); - writer.WriteLine(L""); - } - writer.WriteLine(L" ;"); - } - } - } - - namespace analyzing - { -/*********************************************************************** -Logger (Automaton) -***********************************************************************/ - - void LogTransitionSymbol(ParsingSymbol* symbol, stream::TextWriter& writer) - { - if(symbol->GetType()==ParsingSymbol::TokenDef) - { - writer.WriteString(L"["); - writer.WriteString(symbol->GetName()); - - WString regex=symbol->GetDescriptorString(); - if(regex_internal::IsRegexEscapedLiteralString(regex)) - { - writer.WriteString(L" "); - definitions::LogString(regex_internal::UnescapeTextForRegex(regex), writer); - } - writer.WriteString(L"]"); - } - else - { - writer.WriteString(L"<"); - writer.WriteString(symbol->GetName()); - writer.WriteString(L">"); - } - } - - void Log(Ptr automaton, stream::TextWriter& writer) - { - FOREACH(Ptr, ruleInfo, automaton->ruleInfos) - { - writer.WriteString(L"Root Rule Start: "); - writer.WriteLine(ruleInfo->rootRuleStartState->stateName); - - writer.WriteString(L"Root Rule End: "); - writer.WriteLine(ruleInfo->rootRuleEndState->stateName); - - writer.WriteString(L"Rule Start: "); - writer.WriteLine(ruleInfo->startState->stateName); - - FOREACH(State*, endState, ruleInfo->endStates) - { - writer.WriteString(L"Rule End: "); - writer.WriteLine(endState->stateName); - } - - writer.WriteLine(L""); - } - - List states; - FOREACH(Ptr, ruleInfo, automaton->ruleInfos) - { - vint currentState=states.Count(); - states.Add(ruleInfo->rootRuleStartState); - - while(currentStatestateExpression); - if(state->endState) - { - writer.WriteString(L"END STATE "); - } - else - { - writer.WriteString(L"STATE "); - } - writer.WriteLine(state->stateName); - - FOREACH(Transition*, transition, state->transitions) - { - if(!states.Contains(transition->target)) - { - states.Add(transition->target); - } - switch(transition->transitionType) - { - case Transition::Epsilon: - writer.WriteString(L" EPSILON"); - break; - case Transition::TokenBegin: - writer.WriteString(L" TOKEN-BEGIN"); - break; - case Transition::TokenFinish: - writer.WriteString(L" TOKEN-FINISH"); - break; - case Transition::NormalReduce: - writer.WriteString(L" NORMAL-REDUCE"); - break; - case Transition::LeftRecursiveReduce: - writer.WriteString(L" LREC-REDUCE"); - break; - case Transition::Symbol: - { - writer.WriteString(L" "); - if(transition->transitionSymbol) - { - LogTransitionSymbol(transition->transitionSymbol, writer); - } - } - break; - } - switch(transition->stackOperationType) - { - case Transition::None: - writer.WriteString(L" => "); - break; - case Transition::ShiftReduceCompacted: - writer.WriteString(L" [SHIFT-REDUCE-COMPACTED] => "); - break; - case Transition::LeftRecursive: - writer.WriteString(L" [LEFT-RECURSIVE] => "); - break; - } - writer.WriteLine(transition->target->stateName); - - FOREACH(Ptr, action, transition->actions) - { - switch(action->actionType) - { - case Action::Create: - writer.WriteString(L" CREATE "); - break; - case Action::Assign: - writer.WriteString(L" ASSIGN "); - break; - case Action::Using: - writer.WriteString(L" USING "); - break; - case Action::Setter: - writer.WriteString(L" SET "); - break; - case Action::Shift: - writer.WriteString(L" SHIFT "); - break; - case Action::Reduce: - writer.WriteString(L" REDUCE "); - break; - case Action::LeftRecursiveReduce: - writer.WriteString(L" LR-REDUCE "); - break; - } - - if(action->shiftReduceSource && action->shiftReduceTarget) - { - writer.WriteString(L"["); - writer.WriteString(action->shiftReduceSource->stateName); - writer.WriteString(L" => "); - writer.WriteString(action->shiftReduceTarget->stateName); - writer.WriteString(L"] "); - } - - if(action->actionSource) - { - writer.WriteString(action->actionSource->GetName()); - } - if(action->actionTarget) - { - writer.WriteString(L" => "); - writer.WriteString(action->actionTarget->GetName()); - } - writer.WriteLine(L""); - } - } - writer.WriteLine(L""); - } - writer.WriteLine(L"--------------------------------"); - } - } - } - - namespace tabling - { -/*********************************************************************** -Logger (ParsingTable) -***********************************************************************/ - - void LogAttributeList(Ptr table, vint attributeIndex, const WString& prefix, stream::TextWriter& writer) - { - if(attributeIndex!=-1) - { - Ptr atts=table->GetAttributeInfo(attributeIndex); - FOREACH(Ptr, att, atts->attributes) - { - writer.WriteString(prefix); - writer.WriteString(L"@"); - writer.WriteString(att->name); - writer.WriteString(L"("); - for(vint i=0;iarguments.Count();i++) - { - if(i>0) writer.WriteString(L", "); - definitions::LogString(att->arguments[i], writer); - } - writer.WriteLine(L")"); - } - } - } - - void Log(Ptr table, stream::TextWriter& writer) - { - vint rows=table->GetStateCount()+1; - vint columns=table->GetTokenCount()+1; - Array stringTable(rows*columns); - - stringTable[0]=L""; - - for(vint row=0; rowGetStateCount();row++) - { - stringTable[(row+1)*columns]=itow(row)+L": "+table->GetStateInfo(row).stateName; - } - - for(vint column=0;columnGetTokenCount();column++) - { - WString content= - column==ParsingTable::TokenBegin?L"0: $TokenBegin": - column==ParsingTable::TokenFinish?L"1: $TokenFinish": - column==ParsingTable::NormalReduce?L"2: $NormalReduce": - column==ParsingTable::LeftRecursiveReduce?L"3: $LeftRecursiveReduce": - itow(column)+L": "+table->GetTokenInfo(column).name+L"\r\n "+table->GetTokenInfo(column).regex; - stringTable[column+1]=content; - } - - for(vint row=0; rowGetStateCount();row++) - { - for(vint column=0;columnGetTokenCount();column++) - { - Ptr bag=table->GetTransitionBag(row, column); - if(bag) - { - WString content; - FOREACH(Ptr, item, bag->transitionItems) - { - if(content!=L"") content+=L"\r\n"; - content+=itow(item->targetState); - FOREACH_INDEXER(vint, state, index, item->stackPattern) - { - content+=(index==0?L" : ":L", "); - content+=itow(state); - } - content+=L"\r\n"; - - FOREACH(Ptr, lookAhead, item->lookAheads) - { - content+=L" "; - FOREACH_INDEXER(vint, token, index, lookAhead->tokens) - { - content+=(index==0?L"> ":L", "); - content+=itow(token); - } - content+=L"\r\n"; - } - - content+=L" "; - FOREACH(ParsingTable::Instruction, ins, item->instructions) - { - switch(ins.instructionType) - { - case ParsingTable::Instruction::Create: - content+=L"C"; - break; - case ParsingTable::Instruction::Using: - content+=L"U"; - break; - case ParsingTable::Instruction::Assign: - content+=L"A"; - break; - case ParsingTable::Instruction::Item: - content+=L"I"; - break; - case ParsingTable::Instruction::Setter: - content+=L"S"; - break; - case ParsingTable::Instruction::Shift: - content+=L"[+"+itow(ins.stateParameter)+L"]"; - break; - case ParsingTable::Instruction::Reduce: - content+=L"[-"+itow(ins.stateParameter)+L"]"; - break; - case ParsingTable::Instruction::LeftRecursiveReduce: - content+=L"[!"+itow(ins.stateParameter)+L"]"; - break; - } - } - } - stringTable[(row+1)*columns+(column+1)]=content; - } - } - } - - writer.WriteLine(L"Target-State : Stack-Pattern ..."); - writer.WriteLine(L"> Look-Ahead ..."); - writer.WriteLine(L"C: Create"); - writer.WriteLine(L"U: Using"); - writer.WriteLine(L"A: Assign"); - writer.WriteLine(L"I: Item"); - writer.WriteLine(L"S: Setter"); - writer.WriteLine(L"[+s]: Shift[push s]"); - writer.WriteLine(L"[-s]: Reduce[pop s]"); - writer.WriteLine(L"[!s]: Left-Recursive-Reduce[fake s]"); - writer.WriteLine(L""); - - for(vint i=0;iGetRuleCount();i++) - { - const ParsingTable::RuleInfo& ruleInfo=table->GetRuleInfo(i); - writer.WriteString(ruleInfo.name); - writer.WriteChar(L'<'); - writer.WriteString(ruleInfo.type); - if(ruleInfo.ambiguousType!=L"") - { - writer.WriteString(L", "); - writer.WriteString(ruleInfo.ambiguousType); - } - writer.WriteString(L">: "); - writer.WriteString(itow(ruleInfo.rootStartState)); - writer.WriteChar(L'['); - writer.WriteString(table->GetStateInfo(ruleInfo.rootStartState).stateName); - writer.WriteChar(L']'); - writer.WriteLine(L""); - } - - writer.WriteMonospacedEnglishTable(stringTable, rows, columns); - writer.WriteLine(L""); - - writer.WriteLine(L"Metadata(Tokens):"); - for(vint i=0;iGetTokenCount();i++) - { - const ParsingTable::TokenInfo& info=table->GetTokenInfo(i); - writer.WriteString(L" "); - writer.WriteString(info.name); - writer.WriteString(L"="); - writer.WriteLine(info.regex); - LogAttributeList(table, info.attributeIndex, L" ", writer); - } - writer.WriteLine(L""); - - writer.WriteLine(L"Metadata(Rules):"); - for(vint i=0;iGetRuleCount();i++) - { - const ParsingTable::RuleInfo& info=table->GetRuleInfo(i); - writer.WriteString(L" "); - writer.WriteLine(info.name); - LogAttributeList(table, info.attributeIndex, L" ", writer); - } - writer.WriteLine(L""); - - writer.WriteLine(L"Metadata(Classes):"); - for(vint i=0;iGetTreeTypeInfoCount();i++) - { - const ParsingTable::TreeTypeInfo& info=table->GetTreeTypeInfo(i); - writer.WriteString(L" "); - writer.WriteLine(info.type); - LogAttributeList(table, info.attributeIndex, L" ", writer); - } - writer.WriteLine(L""); - - writer.WriteLine(L"Metadata(Class Members):"); - for(vint i=0;iGetTreeFieldInfoCount();i++) - { - const ParsingTable::TreeFieldInfo& info=table->GetTreeFieldInfo(i); - writer.WriteString(L" "); - writer.WriteString(info.type); - writer.WriteString(L"."); - writer.WriteLine(info.field); - LogAttributeList(table, info.attributeIndex, L" ", writer); - } - writer.WriteLine(L""); - } - } - -/*********************************************************************** -Logger (ParsingTreeNode) -***********************************************************************/ - - class LogParsingTreeNodeVisitor : public Object, public ParsingTreeNode::IVisitor - { - protected: - TextWriter& writer; - WString prefix; - WString originalInput; - public: - LogParsingTreeNodeVisitor(TextWriter& _writer, const WString& _originalInput, const WString& _prefix) - :writer(_writer) - ,prefix(_prefix) - ,originalInput(_originalInput) - { - } - - void Write(ParsingTreeNode* node) - { - if(node) - { - node->Accept(this); - } - else - { - writer.WriteString(L"null"); - } - } - - void WriteInput(ParsingTreeNode* node) - { - if(originalInput!=L"") - { - ParsingTextRange range=node->GetCodeRange(); - if(range.start.index!=ParsingTextPos::UnknownValue && range.end.index!=ParsingTextPos::UnknownValue) - { - vint start=range.start.index; - vint length=range.end.index-start+1; - if(length>0) - { - writer.WriteString(L" // ["); - writer.WriteString(originalInput.Sub(start, length)); - writer.WriteString(L"]"); - } - } - } - } - - void Visit(ParsingTreeToken* node) - { - writer.WriteChar(L'['); - writer.WriteString(node->GetValue()); - writer.WriteChar(L']'); - WriteInput(node); - } - - void Visit(ParsingTreeObject* node) - { - WString oldPrefix=prefix; - writer.WriteString(node->GetType()); - writer.WriteString(L" <"); - for(vint i=0;iGetCreatorRules().Count();i++) - { - if(i!=0) writer.WriteString(L", "); - writer.WriteString(node->GetCreatorRules()[i]); - } - writer.WriteString(L"> {"); - WriteInput(node); - writer.WriteLine(L""); - prefix+=L" "; - for(vint i=0;iGetMembers().Count();i++) - { - writer.WriteString(prefix); - writer.WriteString(node->GetMembers().Keys().Get(i)); - writer.WriteString(L" = "); - Write(node->GetMembers().Values().Get(i).Obj()); - writer.WriteLine(L""); - } - prefix=oldPrefix; - writer.WriteString(prefix); - writer.WriteString(L"}"); - } - - void Visit(ParsingTreeArray* node) - { - WString oldPrefix=prefix; - writer.WriteString(node->GetElementType()); - writer.WriteString(L"[] {"); - WriteInput(node); - writer.WriteLine(L""); - prefix+=L" "; - for(vint i=0;iCount();i++) - { - writer.WriteString(prefix); - Write(node->GetItem(i).Obj()); - writer.WriteLine(L","); - } - prefix=oldPrefix; - writer.WriteString(prefix); - writer.WriteString(L"}"); - } - }; - - void Log(ParsingTreeNode* node, const WString& originalInput, stream::TextWriter& writer, const WString& prefix) - { - writer.WriteString(prefix); - LogParsingTreeNodeVisitor visitor(writer, originalInput, prefix); - node->Accept(&visitor); - } - } -} - -/*********************************************************************** -.\PARSING\PARSINGSTATE.CPP -***********************************************************************/ - -#if defined(VCZH_GCC) && defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wnull-dereference" -#endif - -namespace vl -{ - namespace parsing - { - namespace tabling - { - using namespace collections; - using namespace regex; - -/*********************************************************************** -ParsingTokenWalker::LookAheadEnumerator -***********************************************************************/ - - ParsingTokenWalker::LookAheadEnumerator::LookAheadEnumerator(const ParsingTokenWalker* _walker, vint _currentToken) - :walker(_walker) - ,firstToken(_currentToken) - ,currentToken(_currentToken) - ,currentValue(-1) - ,index(-1) - { - } - - ParsingTokenWalker::LookAheadEnumerator::LookAheadEnumerator(const LookAheadEnumerator& _enumerator) - :walker(_enumerator.walker) - ,firstToken(_enumerator.firstToken) - ,currentToken(_enumerator.currentToken) - ,currentValue(_enumerator.currentValue) - ,index(_enumerator.index) - { - } - - IEnumerator* ParsingTokenWalker::LookAheadEnumerator::Clone()const - { - return new LookAheadEnumerator(*this); - } - - const vint& ParsingTokenWalker::LookAheadEnumerator::Current()const - { - return currentValue; - } - - vint ParsingTokenWalker::LookAheadEnumerator::Index()const - { - return index; - } - - bool ParsingTokenWalker::LookAheadEnumerator::Next() - { - vint newToken=walker->GetNextIndex(currentToken); - if(newToken==-3) return false; - currentToken=newToken; - index++; - currentValue=walker->GetTableTokenIndex(currentToken); - return true; - } - - void ParsingTokenWalker::LookAheadEnumerator::Reset() - { - currentToken=firstToken; - currentValue=-1; - index=-1; - } - -/*********************************************************************** -ParsingTokenWalker::TokenLookAhead -***********************************************************************/ - - ParsingTokenWalker::TokenLookAhead::TokenLookAhead(const ParsingTokenWalker* _walker) - :walker(_walker) - { - } - - collections::IEnumerator* ParsingTokenWalker::TokenLookAhead::CreateEnumerator()const - { - return new LookAheadEnumerator(walker, walker->currentToken); - } - -/*********************************************************************** -ParsingTokenWalker::ReduceLookAhead -***********************************************************************/ - - ParsingTokenWalker::ReduceLookAhead::ReduceLookAhead(const ParsingTokenWalker* _walker) - :walker(_walker) - { - } - - collections::IEnumerator* ParsingTokenWalker::ReduceLookAhead::CreateEnumerator()const - { - return new LookAheadEnumerator(walker, walker->currentToken - 1); - } - -/*********************************************************************** -ParsingTokenWalker -***********************************************************************/ - - vint ParsingTokenWalker::GetNextIndex(vint index)const - { - if(index==-2) - { - return -1; - } - else if(-1<=index && indexIsInputToken(tokens[index].token)) - { - break; - } - else - { - index++; - } - } - return index; - } - else - { - return -3; - } - } - - vint ParsingTokenWalker::GetTableTokenIndex(vint index)const - { - if(index==-1) - { - return ParsingTable::TokenBegin; - } - else if(index==tokens.Count()) - { - return ParsingTable::TokenFinish; - } - else if(0<=index && indexGetTableTokenIndex(tokens[index].token); - } - else - { - return -1; - } - } - - ParsingTokenWalker::ParsingTokenWalker(collections::List& _tokens, Ptr _table) - :tokens(_tokens) - ,table(_table) - ,currentToken(-2) - , tokenLookAhead(this) - , reduceLookAhead(this) - { - } - - ParsingTokenWalker::~ParsingTokenWalker() - { - } - - const collections::IEnumerable& ParsingTokenWalker::GetTokenLookahead()const - { - return tokenLookAhead; - } - - const collections::IEnumerable& ParsingTokenWalker::GetReduceLookahead()const - { - return reduceLookAhead; - } - - void ParsingTokenWalker::Reset() - { - currentToken=-2; - } - - bool ParsingTokenWalker::Move() - { - currentToken=GetNextIndex(currentToken); - return currentToken!=-3; - } - - vint ParsingTokenWalker::GetTableTokenIndex()const - { - return GetTableTokenIndex(currentToken); - } - - regex::RegexToken* ParsingTokenWalker::GetRegexToken()const - { - vint index=GetTokenIndexInStream(); - return index==-1?0:&tokens[index]; - } - - vint ParsingTokenWalker::GetTokenIndexInStream()const - { - if(0<=currentToken && currentToken _table, vint codeIndex) - :input(_input.Buffer()) - ,table(_table) - ,parsingRuleStartState(-1) - { - CopyFrom(tokens, table->GetLexer().Parse(input, codeIndex)); - walker=new ParsingTokenWalker(tokens, table); - } - - ParsingState::~ParsingState() - { - } - - const WString& ParsingState::GetInput() - { - return input; - } - - Ptr ParsingState::GetTable() - { - return table; - } - - const collections::List& ParsingState::GetTokens() - { - return tokens; - } - - regex::RegexToken* ParsingState::GetToken(vint index) - { - if(index<=0) - { - index=0; - } - else if(index>tokens.Count()) - { - index=tokens.Count(); - } - - return index==tokens.Count()?0:&tokens[index]; - } - - vint ParsingState::Reset(const WString& rule) - { - const ParsingTable::RuleInfo& info=table->GetRuleInfo(rule); - auto infoExists = &info; - if(infoExists) - { - walker->Reset(); - walker->Move(); - stateGroup=new StateGroup(info); - parsingRule=rule; - parsingRuleStartState=info.rootStartState; - return stateGroup->currentState; - } - return -1; - } - - WString ParsingState::GetParsingRule() - { - return parsingRule; - } - - vint ParsingState::GetParsingRuleStartState() - { - return parsingRuleStartState; - } - - vint ParsingState::GetCurrentToken() - { - return walker->GetTableTokenIndex()==ParsingTable::TokenFinish - ?tokens.Count() - :walker->GetTokenIndexInStream(); - } - - vint ParsingState::GetCurrentTableTokenIndex() - { - return walker->GetTableTokenIndex(); - } - - const collections::List& ParsingState::GetStateStack() - { - return stateGroup->stateStack; - } - - vint ParsingState::GetCurrentState() - { - return stateGroup->currentState; - } - - void ParsingState::SkipCurrentToken() - { - walker->Move(); - } - - bool ParsingState::TestTransitionItemInFuture(vint tableTokenIndex, Future* future, ParsingTable::TransitionItem* item, const collections::IEnumerable* lookAheadTokens) - { - bool passLookAheadTest=true; - if(item->lookAheads.Count()>0 && lookAheadTokens) - { - passLookAheadTest=false; - FOREACH(Ptr, info, item->lookAheads) - { - vint index=0; - FOREACH(vint, token, *lookAheadTokens) - { - if(info->tokens[index]!=token) - { - break; - } - index++; - if(index>=info->tokens.Count()) - { - break; - } - } - if(index==info->tokens.Count()) - { - passLookAheadTest=true; - break; - } - } - } - if(!passLookAheadTest) - { - return false; - } - - vint availableStackDepth=stateGroup->stateStack.Count()-future->reduceStateCount; - vint totalStackDepth=stateGroup->stateStack.Count()-future->reduceStateCount+future->shiftStates.Count(); - if(item->stackPattern.Count()<=totalStackDepth) - { - if(tableTokenIndex!=ParsingTable::TokenFinish || item->stackPattern.Count()==totalStackDepth) - { - bool match=true; - for(vint j=0;jstackPattern.Count();j++) - { - vint state= - jshiftStates.Count() - ?future->shiftStates[future->shiftStates.Count()-1-j] - :stateGroup->stateStack[availableStackDepth-1-(j-future->shiftStates.Count())] - ; - if(item->stackPattern[j]!=state) - { - match=false; - } - } - if(match) - { - return true; - } - } - } - return false; - } - - ParsingTable::TransitionItem* ParsingState::MatchTokenInFuture(vint tableTokenIndex, Future* future, const collections::IEnumerable* lookAheadTokens) - { - ParsingTable::TransitionBag* bag=table->GetTransitionBag(future->currentState, tableTokenIndex).Obj(); - if(bag) - { - for(vint i=0;itransitionItems.Count();i++) - { - ParsingTable::TransitionItem* item=bag->transitionItems[i].Obj(); - if(TestTransitionItemInFuture(tableTokenIndex, future, item, lookAheadTokens)) - { - return item; - } - } - } - return 0; - } - - ParsingTable::TransitionItem* ParsingState::MatchToken(vint tableTokenIndex, const collections::IEnumerable* lookAheadTokens) - { - Future future; - future.currentState=stateGroup->currentState; - return MatchTokenInFuture(tableTokenIndex, &future, lookAheadTokens); - } - - void ParsingState::RunTransitionInFuture(ParsingTable::TransitionItem* transition, Future* previous, Future* now) - { - if(previous) - { - now->reduceStateCount=previous->reduceStateCount; - CopyFrom(now->shiftStates, previous->shiftStates); - } - else - { - now->reduceStateCount=0; - now->shiftStates.Clear(); - } - now->currentState=transition->targetState; - now->selectedToken=transition->token; - now->selectedItem=transition; - now->previous=previous; - now->next=0; - - for(vint j=0;jinstructions.Count();j++) - { - ParsingTable::Instruction& ins=transition->instructions[j]; - switch(ins.instructionType) - { - case ParsingTable::Instruction::Shift: - { - now->shiftStates.Add(ins.stateParameter); - } - break; - case ParsingTable::Instruction::Reduce: - { - if(now->shiftStates.Count()==0) - { - now->reduceStateCount++; - } - else - { - now->shiftStates.RemoveAt(now->shiftStates.Count()-1); - } - } - break; - default:; - } - } - } - - ParsingState::TransitionResult ParsingState::RunTransition(ParsingTable::TransitionItem* transition, regex::RegexToken* regexToken, vint instructionBegin, vint instructionCount, bool lastPart) - { - if(regexToken) - { - if(!stateGroup->shiftToken) - { - stateGroup->shiftToken=regexToken; - stateGroup->reduceToken=regexToken; - } - } - if(transition->token>=ParsingTable::UserTokenStart) - { - if(stateGroup->tokenSequenceIndex==0) - { - stateGroup->shiftTokenStack.Add(stateGroup->shiftToken); - } - stateGroup->tokenSequenceIndex++; - } - - TransitionResult result; - result.tableTokenIndex=transition->token; - result.token=regexToken; - result.tokenIndexInStream=regexToken?walker->GetTokenIndexInStream():-1; - result.tableStateSource=stateGroup->currentState; - result.tableStateTarget=transition->targetState; - result.transition=transition; - result.instructionBegin=instructionBegin; - result.instructionCount=instructionCount; - - for(vint j=instructionBegin;jinstructions[j]; - switch(ins.instructionType) - { - case ParsingTable::Instruction::Shift: - { - stateGroup->stateStack.Add(ins.stateParameter); - - stateGroup->shiftTokenStack.Add(stateGroup->shiftToken); - stateGroup->shiftToken=regexToken; - stateGroup->reduceToken=regexToken; - } - break; - case ParsingTable::Instruction::Reduce: - { - stateGroup->stateStack.RemoveAt(stateGroup->stateStack.Count()-1); - - result.AddShiftReduceRange(stateGroup->shiftToken, stateGroup->reduceToken); - stateGroup->shiftToken=stateGroup->shiftTokenStack[stateGroup->shiftTokenStack.Count()-1]; - stateGroup->shiftTokenStack.RemoveAt(stateGroup->shiftTokenStack.Count()-1); - } - break; - case ParsingTable::Instruction::LeftRecursiveReduce: - { - result.AddShiftReduceRange(stateGroup->shiftToken, stateGroup->reduceToken); - if(regexToken) - { - stateGroup->reduceToken=regexToken; - } - } - break; - default:; - } - } - - if(regexToken) - { - stateGroup->reduceToken=regexToken; - } - - if(transition->token==ParsingTable::TokenFinish && lastPart) - { - stateGroup->shiftToken=stateGroup->shiftTokenStack[stateGroup->shiftTokenStack.Count()-1]; - stateGroup->shiftTokenStack.RemoveAt(stateGroup->shiftTokenStack.Count()-1); - result.AddShiftReduceRange(stateGroup->shiftToken, stateGroup->reduceToken); - } - - stateGroup->currentState=transition->targetState; - return result; - } - - ParsingState::TransitionResult ParsingState::RunTransition(ParsingTable::TransitionItem* transition, regex::RegexToken* regexToken) - { - return RunTransition(transition, regexToken, 0, transition->instructions.Count(), true); - } - - bool ParsingState::ReadTokenInFuture(vint tableTokenIndex, Future* previous, Future* now, const collections::IEnumerable* lookAheadTokens) - { - ParsingTable::TransitionItem* selectedItem=0; - if(previous) - { - selectedItem=MatchTokenInFuture(tableTokenIndex, previous, lookAheadTokens); - } - else - { - selectedItem=MatchToken(tableTokenIndex, lookAheadTokens); - } - - if(!selectedItem) - { - return false; - } - RunTransitionInFuture(selectedItem, previous, now); - return true; - } - - ParsingState::TransitionResult ParsingState::ReadToken(vint tableTokenIndex, regex::RegexToken* regexToken, const collections::IEnumerable* lookAheadTokens) - { - ParsingTable::TransitionItem* item=MatchToken(tableTokenIndex, lookAheadTokens); - if(item) - { - return RunTransition(item, regexToken); - } - return TransitionResult(); - } - - ParsingState::TransitionResult ParsingState::ReadToken() - { - if(walker->GetTableTokenIndex()==-1) - { - return TransitionResult(); - } - vint token=walker->GetTableTokenIndex(); - RegexToken* regexToken=walker->GetRegexToken(); - - bool tryReduce=false; - TransitionResult result=ReadToken(token, regexToken, &walker->GetTokenLookahead()); - if(!result) - { - result=ReadToken(ParsingTable::LeftRecursiveReduce, 0, &walker->GetReduceLookahead()); - tryReduce=true; - } - if(!result) - { - result=ReadToken(ParsingTable::NormalReduce, 0, &walker->GetReduceLookahead()); - tryReduce=true; - } - - if(result && !tryReduce) - { - walker->Move(); - } - return result; - } - - bool ParsingState::TestExplore(vint tableTokenIndex, Future* previous) - { - Future fakePrevious; - fakePrevious.currentState=stateGroup->currentState; - Future* realPrevious=previous?previous:&fakePrevious; - - ParsingTable::TransitionBag* bag=table->GetTransitionBag(realPrevious->currentState, tableTokenIndex).Obj(); - if(bag) - { - for(vint i=0;itransitionItems.Count();i++) - { - ParsingTable::TransitionItem* item=bag->transitionItems[i].Obj(); - if(TestTransitionItemInFuture(tableTokenIndex, realPrevious, item, 0)) - { - return true; - } - } - } - return false; - } - - bool ParsingState::Explore(vint tableTokenIndex, Future* previous, collections::List& possibilities) - { - Future fakePrevious; - fakePrevious.currentState=stateGroup->currentState; - Future* realPrevious=previous?previous:&fakePrevious; - - ParsingTable::TransitionBag* bag=table->GetTransitionBag(realPrevious->currentState, tableTokenIndex).Obj(); - bool successful = false; - if(bag) - { - for(vint i=0;itransitionItems.Count();i++) - { - ParsingTable::TransitionItem* item=bag->transitionItems[i].Obj(); - if(TestTransitionItemInFuture(tableTokenIndex, realPrevious, item, 0)) - { - Future* now=new Future; - RunTransitionInFuture(item, previous, now); - possibilities.Add(now); - successful = true; - } - } - } - return successful; - } - - bool ParsingState::ExploreStep(collections::List& previousFutures, vint start, vint count, collections::List& possibilities) - { - if(walker->GetTableTokenIndex()==-1) - { - return false; - } - vint token = walker->GetTableTokenIndex(); - RegexToken* regexToken = walker->GetRegexToken(); - vint oldPossibilitiesCount = possibilities.Count(); - for (vint i = 0; iselectedRegexToken = regexToken; - } - return true; - } - - bool ParsingState::ExploreNormalReduce(collections::List& previousFutures, vint start, vint count, collections::List& possibilities) - { - if(walker->GetTableTokenIndex()==-1) - { - return false; - } - vint oldPossibilitiesCount = possibilities.Count(); - for(vint i=0;i oldPossibilitiesCount; - } - - bool ParsingState::ExploreLeftRecursiveReduce(collections::List& previousFutures, vint start, vint count, collections::List& possibilities) - { - if(walker->GetTableTokenIndex()==-1) - { - return false; - } - vint oldPossibilitiesCount = possibilities.Count(); - for(vint i=0;i oldPossibilitiesCount; - } - - ParsingState::Future* ParsingState::ExploreCreateRootFuture() - { - Future* future=new Future; - future->currentState=stateGroup->currentState; - return future; - } - - Ptr ParsingState::TakeSnapshot() - { - return new StateGroup(*stateGroup.Obj()); - } - - void ParsingState::RestoreSnapshot(Ptr group) - { - stateGroup=new StateGroup(*group.Obj()); - } - -/*********************************************************************** -ParsingTreeBuilder -***********************************************************************/ - - ParsingTreeBuilder::ParsingTreeBuilder() - :processingAmbiguityBranch(false) - ,ambiguityBranchSharedNodeCount(0) - { - } - - ParsingTreeBuilder::~ParsingTreeBuilder() - { - } - - void ParsingTreeBuilder::Reset() - { - createdObject=0; - operationTarget=new ParsingTreeObject(); - nodeStack.Clear(); - - processingAmbiguityBranch=false; - ambiguityBranchCreatedObject=0; - ambiguityBranchOperationTarget=0; - ambiguityBranchSharedNodeCount=0; - ambiguityBranchNodeStack.Clear(); - ambiguityNodes.Clear(); - } - - bool ParsingTreeBuilder::Run(const ParsingState::TransitionResult& result) - { - if(!operationTarget) - { - return false; - } - - switch(result.transitionType) - { - case ParsingState::TransitionResult::AmbiguityBegin: - { - if(processingAmbiguityBranch) return false; - processingAmbiguityBranch=true; - if(createdObject) - { - ambiguityBranchCreatedObject=createdObject->Clone(); - } - else - { - ambiguityBranchCreatedObject=0; - } - ambiguityBranchOperationTarget=operationTarget->Clone().Cast(); - ambiguityBranchNodeStack.Clear(); - ambiguityBranchSharedNodeCount=nodeStack.Count()-result.ambiguityAffectedStackNodeCount+1; - for(vint i=ambiguityBranchSharedNodeCount;iClone().Cast()); - } - ambiguityNodes.Clear(); - } - break; - case ParsingState::TransitionResult::AmbiguityBranch: - { - if(!processingAmbiguityBranch) return false; - if(nodeStack.Count()!=ambiguityBranchSharedNodeCount) return false; - ambiguityNodes.Add(operationTarget); - if(ambiguityBranchCreatedObject) - { - createdObject=ambiguityBranchCreatedObject->Clone(); - } - else - { - createdObject=0; - } - operationTarget=ambiguityBranchOperationTarget->Clone().Cast(); - for(vint i=0;iClone().Cast()); - } - } - break; - case ParsingState::TransitionResult::AmbiguityEnd: - { - if(!processingAmbiguityBranch) return false; - if(nodeStack.Count()!=ambiguityBranchSharedNodeCount) return false; - ambiguityNodes.Add(operationTarget); - - processingAmbiguityBranch=false; - createdObject=0; - ambiguityBranchCreatedObject=0; - ambiguityBranchOperationTarget=0; - ambiguityBranchSharedNodeCount=0; - ambiguityBranchNodeStack.Clear(); - - { - Ptr ambiguousNode=new ParsingTreeObject(result.ambiguityNodeType, operationTarget->GetCodeRange()); - Ptr items=new ParsingTreeArray(L"", operationTarget->GetCodeRange()); - FOREACH(Ptr, node, ambiguityNodes) - { - items->AddItem(node); - } - ambiguousNode->SetMember(L"items", items); - operationTarget=ambiguousNode; - } - ambiguityNodes.Clear(); - } - break; - case ParsingState::TransitionResult::ExecuteInstructions: - { - vint shiftReduceRangeIndex=0; - for(vint j=result.instructionBegin;jinstructions[j]; - switch(ins.instructionType) - { - case ParsingTable::Instruction::Create: - { - if(operationTarget->GetType()!=L"") - { - return false; - } - operationTarget->SetType(ins.nameParameter); - operationTarget->GetCreatorRules().Add(ins.creatorRule); - } - break; - case ParsingTable::Instruction::Using: - { - if(operationTarget->GetType()!=L"" || !createdObject) - { - return false; - } - Ptr obj=createdObject.Cast(); - if(!obj) - { - return false; - } - for(vint i=0;iGetMembers().Count();i++) - { - WString name=operationTarget->GetMembers().Keys().Get(i); - Ptr value=operationTarget->GetMembers().Values().Get(i); - obj->SetMember(name, value); - } - operationTarget=obj; - operationTarget->GetCreatorRules().Add(ins.creatorRule); - createdObject=0; - } - break; - case ParsingTable::Instruction::Assign: - { - if(!createdObject) - { - Ptr value; - if(result.token==0) - { - value=new ParsingTreeToken(L"", result.tokenIndexInStream); - } - else - { - value=new ParsingTreeToken(WString(result.token->reading, result.token->length), result.tokenIndexInStream); - value->SetCodeRange(ParsingTextRange(result.token, result.token)); - } - operationTarget->SetMember(ins.nameParameter, value); - } - else - { - operationTarget->SetMember(ins.nameParameter, createdObject); - createdObject=0; - } - } - break; - case ParsingTable::Instruction::Item: - { - Ptr arr=operationTarget->GetMember(ins.nameParameter).Cast();; - if(!arr) - { - arr=new ParsingTreeArray(); - operationTarget->SetMember(ins.nameParameter, arr); - } - ParsingTextRange arrRange=arr->GetCodeRange(); - ParsingTextRange itemRange; - if(!createdObject) - { - Ptr value; - if(result.token==0) - { - value=new ParsingTreeToken(L"", result.tokenIndexInStream); - } - else - { - value=new ParsingTreeToken(WString(result.token->reading, result.token->length), result.tokenIndexInStream); - value->SetCodeRange(ParsingTextRange(result.token, result.token)); - itemRange=value->GetCodeRange(); - } - arr->AddItem(value); - } - else - { - arr->AddItem(createdObject); - itemRange=createdObject->GetCodeRange(); - createdObject=0; - } - - if(arrRange.start.index==ParsingTextPos::UnknownValue || itemRange.startarrRange.end) - { - arrRange.end=itemRange.end; - } - arr->SetCodeRange(arrRange); - } - break; - case ParsingTable::Instruction::Setter: - { - Ptr value=new ParsingTreeToken(ins.value, -1); - operationTarget->SetMember(ins.nameParameter, value); - } - break; - case ParsingTable::Instruction::Shift: - { - nodeStack.Add(operationTarget); - operationTarget=new ParsingTreeObject(); - createdObject=0; - } - break; - case ParsingTable::Instruction::Reduce: - { - if(nodeStack.Count()==0) - { - return false; - } - createdObject=operationTarget; - operationTarget=nodeStack[nodeStack.Count()-1]; - nodeStack.RemoveAt(nodeStack.Count()-1); - - if(result.shiftReduceRanges) - { - ParsingState::ShiftReduceRange tokenRange=result.shiftReduceRanges->Get(shiftReduceRangeIndex++); - if(tokenRange.shiftToken && tokenRange.reduceToken) - { - ParsingTextRange codeRange(tokenRange.shiftToken, tokenRange.reduceToken); - createdObject->SetCodeRange(codeRange); - } - } - } - break; - case ParsingTable::Instruction::LeftRecursiveReduce: - { - createdObject=operationTarget; - operationTarget=new ParsingTreeObject(); - - if(result.shiftReduceRanges) - { - ParsingState::ShiftReduceRange tokenRange=result.shiftReduceRanges->Get(shiftReduceRangeIndex++); - if(tokenRange.shiftToken && tokenRange.reduceToken) - { - ParsingTextRange codeRange(tokenRange.shiftToken, tokenRange.reduceToken); - createdObject->SetCodeRange(codeRange); - } - } - } - break; - default: - return false; - } - } - - if(result.tableTokenIndex==ParsingTable::TokenFinish && !processingAmbiguityBranch) - { - if(result.shiftReduceRanges) - { - ParsingState::ShiftReduceRange tokenRange=result.shiftReduceRanges->Get(shiftReduceRangeIndex++); - if(tokenRange.shiftToken && tokenRange.reduceToken) - { - ParsingTextRange codeRange(tokenRange.shiftToken, tokenRange.reduceToken); - operationTarget->SetCodeRange(codeRange); - } - } - } - } - break; - default: - return false; - } - - return true; - } - - bool ParsingTreeBuilder::GetProcessingAmbiguityBranch() - { - return processingAmbiguityBranch; - } - - Ptr ParsingTreeBuilder::GetNode()const - { - if(nodeStack.Count()==0) - { - return operationTarget; - } - else - { - return 0; - } - } - -/*********************************************************************** -ParsingTransitionCollector -***********************************************************************/ - - ParsingTransitionCollector::ParsingTransitionCollector() - :ambiguityBegin(-1) - { - } - - ParsingTransitionCollector::~ParsingTransitionCollector() - { - } - - void ParsingTransitionCollector::Reset() - { - ambiguityBegin=-1; - transitions.Clear(); - ambiguityBeginToEnds.Clear(); - ambiguityBeginToBranches.Clear(); - ambiguityBranchToBegins.Clear(); - } - - bool ParsingTransitionCollector::Run(const ParsingState::TransitionResult& result) - { - vint index=transitions.Count(); - switch(result.transitionType) - { - case ParsingState::TransitionResult::AmbiguityBegin: - if(ambiguityBegin!=-1) return false; - ambiguityBegin=index; - break; - case ParsingState::TransitionResult::AmbiguityBranch: - { - if(ambiguityBegin==-1) return false; - ambiguityBeginToBranches.Add(ambiguityBegin, index); - ambiguityBranchToBegins.Add(index, ambiguityBegin); - } - break; - case ParsingState::TransitionResult::AmbiguityEnd: - { - if(ambiguityBegin==-1) return false; - ambiguityBeginToEnds.Add(ambiguityBegin, index); - ambiguityBegin=-1; - } - break; - case ParsingState::TransitionResult::ExecuteInstructions: - break; - default: - return false; - } - - transitions.Add(result); - return true; - } - - bool ParsingTransitionCollector::GetProcessingAmbiguityBranch() - { - return ambiguityBegin!=-1; - } - - const ParsingTransitionCollector::TransitionResultList& ParsingTransitionCollector::GetTransitions()const - { - return transitions; - } - - vint ParsingTransitionCollector::GetAmbiguityEndFromBegin(vint transitionIndex)const - { - vint index=ambiguityBeginToEnds.Keys().IndexOf(transitionIndex); - return index==-1?-1:ambiguityBeginToEnds.Values()[index]; - } - - const collections::List& ParsingTransitionCollector::GetAmbiguityBranchesFromBegin(vint transitionIndex)const - { - vint index=ambiguityBeginToBranches.Keys().IndexOf(transitionIndex); - return index==-1?*(collections::List*)0:ambiguityBeginToBranches.GetByIndex(index); - } - - vint ParsingTransitionCollector::GetAmbiguityBeginFromBranch(vint transitionIndex)const - { - vint index=ambiguityBranchToBegins.Keys().IndexOf(transitionIndex); - return index==-1?-1:ambiguityBranchToBegins.Values()[index]; - } - } - } -} - -#if defined(VCZH_GCC) && defined(__clang__) -#pragma clang diagnostic pop -#endif - - -/*********************************************************************** -.\PARSING\PARSINGTABLE.CPP -***********************************************************************/ - -namespace vl -{ - namespace stream - { - namespace internal - { - using namespace vl::parsing::tabling; - -/*********************************************************************** -ParsingTable (Serialization) -***********************************************************************/ - - BEGIN_SERIALIZATION(ParsingTable::AttributeInfo) - SERIALIZE(name) - SERIALIZE(arguments) - END_SERIALIZATION - - BEGIN_SERIALIZATION(ParsingTable::AttributeInfoList) - SERIALIZE(attributes) - END_SERIALIZATION - - BEGIN_SERIALIZATION(ParsingTable::TreeTypeInfo) - SERIALIZE(type) - SERIALIZE(attributeIndex) - END_SERIALIZATION - - BEGIN_SERIALIZATION(ParsingTable::TreeFieldInfo) - SERIALIZE(type) - SERIALIZE(field) - SERIALIZE(attributeIndex) - END_SERIALIZATION - - BEGIN_SERIALIZATION(ParsingTable::TokenInfo) - SERIALIZE(name) - SERIALIZE(regex) - SERIALIZE(regexTokenIndex) - SERIALIZE(attributeIndex) - END_SERIALIZATION - - BEGIN_SERIALIZATION(ParsingTable::StateInfo) - SERIALIZE(ruleName) - SERIALIZE(stateName) - SERIALIZE(stateExpression) - END_SERIALIZATION - - BEGIN_SERIALIZATION(ParsingTable::RuleInfo) - SERIALIZE(name) - SERIALIZE(type) - SERIALIZE(ambiguousType) - SERIALIZE(rootStartState) - SERIALIZE(attributeIndex) - END_SERIALIZATION - - BEGIN_SERIALIZATION(ParsingTable::Instruction) - SERIALIZE(instructionType) - SERIALIZE(stateParameter) - SERIALIZE(nameParameter) - SERIALIZE(value) - SERIALIZE(creatorRule) - END_SERIALIZATION - - SERIALIZE_ENUM(ParsingTable::Instruction::InstructionType) - - BEGIN_SERIALIZATION(ParsingTable::LookAheadInfo) - SERIALIZE(tokens) - SERIALIZE(state) - END_SERIALIZATION - - BEGIN_SERIALIZATION(ParsingTable::TransitionItem) - SERIALIZE(token) - SERIALIZE(targetState) - SERIALIZE(lookAheads) - SERIALIZE(stackPattern) - SERIALIZE(instructions) - END_SERIALIZATION - - BEGIN_SERIALIZATION(ParsingTable::TransitionBag) - SERIALIZE(transitionItems) - END_SERIALIZATION - } - } - - namespace parsing - { - namespace tabling - { - using namespace collections; - using namespace regex; - -#ifdef VCZH_GCC - const vint ParsingTable::TokenBegin; - const vint ParsingTable::TokenFinish; - const vint ParsingTable::NormalReduce; - const vint ParsingTable::LeftRecursiveReduce; - const vint ParsingTable::UserTokenStart; -#endif - -/*********************************************************************** -ParsingTable::AttributeInfoList -***********************************************************************/ - - Ptr ParsingTable::AttributeInfoList::FindFirst(const WString& name) - { - for(vint i=0;iname==name) - { - return attributes[i]; - } - } - return 0; - } - -/*********************************************************************** -ParsingTable::LookAheadInfo -***********************************************************************/ - - ParsingTable::LookAheadInfo::PrefixResult ParsingTable::LookAheadInfo::TestPrefix(Ptr a, Ptr b) - { - if(a->tokens.Count()>b->tokens.Count()) - { - return ParsingTable::LookAheadInfo::NotPrefix; - } - for(vint i=0;itokens.Count();i++) - { - if(a->tokens[i]!=b->tokens[i]) - { - return ParsingTable::LookAheadInfo::NotPrefix; - } - } - return a->tokens.Count()tokens.Count()?ParsingTable::LookAheadInfo::Prefix:ParsingTable::LookAheadInfo::Equal; - } - - void ParsingTable::LookAheadInfo::WalkInternal(Ptr table, Ptr previous, vint state, collections::SortedList& walkedStates, collections::List>& newInfos) - { - if (walkedStates.Contains(state)) return; - walkedStates.Add(state); - - for (vint i = 0; i < table->GetTokenCount(); i++) - { - if(Ptr bag=table->GetTransitionBag(state, i)) - { - FOREACH(Ptr, item, bag->transitionItems) - { - if (i == ParsingTable::NormalReduce || i == ParsingTable::LeftRecursiveReduce) - { - WalkInternal(table, previous, item->targetState, walkedStates, newInfos); - } - else - { - Ptr info=new LookAheadInfo; - info->state=item->targetState; - if(previous) - { - CopyFrom(info->tokens, previous->tokens); - } - info->tokens.Add(i); - newInfos.Add(info); - } - } - } - } - - walkedStates.Remove(state); - } - - void ParsingTable::LookAheadInfo::Walk(Ptr table, Ptr previous, vint state, collections::List>& newInfos) - { - SortedList walkedStates; - WalkInternal(table, previous, state, walkedStates, newInfos); - } - -/*********************************************************************** -ParsingTable::TransitionItem -***********************************************************************/ - - enum TransitionLevel - { - ReduceTransition, - LeftRecursiveReduceTransition, - NormalTransition, - }; - - TransitionLevel GetTransitionLevel(Ptr t) - { - bool hasReduce=false; - bool hasLrReduce=false; - FOREACH(ParsingTable::Instruction, ins, t->instructions) - { - switch(ins.instructionType) - { - case ParsingTable::Instruction::Reduce: - hasReduce=true; - break; - case ParsingTable::Instruction::LeftRecursiveReduce: - hasLrReduce=true; - break; - default:; - } - } - - return - hasLrReduce?LeftRecursiveReduceTransition: - hasReduce?ReduceTransition: - NormalTransition; - } - - ParsingTable::TransitionItem::OrderResult ParsingTable::TransitionItem::CheckOrder(Ptr t1, Ptr t2, OrderResult defaultResult) - { - if(t1->token!=t2->token) return UnknownOrder; - if (defaultResult != UnknownOrder) - { - TransitionLevel level1 = GetTransitionLevel(t1); - TransitionLevel level2 = GetTransitionLevel(t2); - if (level1 > level2) return CorrectOrder; - if (level1 < level2) return WrongOrder; - } - - vint ic1=t1->stackPattern.Count(); - vint ic2=t2->stackPattern.Count(); - vint ic=ic1stackPattern[i]; - vint s2=t2->stackPattern[i]; - - if(s1>s2) - { - return CorrectOrder; - } - else if(s1token==TokenFinish) - { - if(ic1>ic2) - { - return CorrectOrder; - } - else if(ic1 t1, Ptr t2, OrderResult defaultResult) - { - OrderResult order=CheckOrder(t1, t2, defaultResult); - switch(order) - { - case CorrectOrder: return -1; - case WrongOrder: return 1; - default: return 0; - } - } - - template - void ParsingTable::IO(TIO& io) - { - io - << ambiguity - << attributeInfos - << treeTypeInfos - << treeFieldInfos - << tokenCount - << stateCount - << tokenInfos - << discardTokenInfos - << stateInfos - << ruleInfos - << transitionBags - ; - } - - ParsingTable::ParsingTable(stream::IStream& input) - { - stream::internal::ContextFreeReader reader(input); - IO(reader); - } - - void ParsingTable::Serialize(stream::IStream& output) - { - stream::internal::ContextFreeWriter writer(output); - IO(writer); - } - -/*********************************************************************** -ParsingTable -***********************************************************************/ - -#if defined(VCZH_GCC) && defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wnull-dereference" -#endif - - ParsingTable::ParsingTable(vint _attributeInfoCount, vint _treeTypeInfoCount, vint _treeFieldInfoCount, vint _tokenCount, vint discardTokenCount, vint _stateCount, vint _ruleCount) - :ambiguity(false) - ,tokenCount(_tokenCount+UserTokenStart) - ,stateCount(_stateCount) - ,attributeInfos(_attributeInfoCount) - ,treeTypeInfos(_treeTypeInfoCount) - ,treeFieldInfos(_treeFieldInfoCount) - ,tokenInfos(_tokenCount+UserTokenStart) - ,discardTokenInfos(discardTokenCount) - ,stateInfos(_stateCount) - ,ruleInfos(_ruleCount) - ,transitionBags((_tokenCount+UserTokenStart)*_stateCount) - { - } - - ParsingTable::~ParsingTable() - { - } - - bool ParsingTable::GetAmbiguity() - { - return ambiguity; - } - - void ParsingTable::SetAmbiguity(bool value) - { - ambiguity=value; - } - - vint ParsingTable::GetAttributeInfoCount() - { - return attributeInfos.Count(); - } - - Ptr ParsingTable::GetAttributeInfo(vint index) - { - return attributeInfos[index]; - } - - void ParsingTable::SetAttributeInfo(vint index, Ptr info) - { - attributeInfos[index]=info; - } - - vint ParsingTable::GetTreeTypeInfoCount() - { - return treeTypeInfos.Count(); - } - - const ParsingTable::TreeTypeInfo& ParsingTable::GetTreeTypeInfo(vint index) - { - return treeTypeInfos[index]; - } - - const ParsingTable::TreeTypeInfo& ParsingTable::GetTreeTypeInfo(const WString& type) - { - vint index=treeTypeInfoMap.Keys().IndexOf(type); - if(index==-1) return *(const TreeTypeInfo*)0; - return treeTypeInfos[treeTypeInfoMap.Values().Get(index)]; - } - - void ParsingTable::SetTreeTypeInfo(vint index, const TreeTypeInfo& info) - { - treeTypeInfos[index]=info; - } - - vint ParsingTable::GetTreeFieldInfoCount() - { - return treeFieldInfos.Count(); - } - - const ParsingTable::TreeFieldInfo& ParsingTable::GetTreeFieldInfo(vint index) - { - return treeFieldInfos[index]; - } - - const ParsingTable::TreeFieldInfo& ParsingTable::GetTreeFieldInfo(const WString& type, const WString& field) - { - Pair key(type, field); - vint index=treeFieldInfoMap.Keys().IndexOf(key); - if(index==-1) return *(const TreeFieldInfo*)0; - return treeFieldInfos[treeFieldInfoMap.Values().Get(index)]; - } - - void ParsingTable::SetTreeFieldInfo(vint index, const TreeFieldInfo& info) - { - treeFieldInfos[index]=info; - } - - vint ParsingTable::GetTokenCount() - { - return tokenCount; - } - - const ParsingTable::TokenInfo& ParsingTable::GetTokenInfo(vint token) - { - return tokenInfos[token]; - } - - void ParsingTable::SetTokenInfo(vint token, const TokenInfo& info) - { - tokenInfos[token]=info; - } - - vint ParsingTable::GetDiscardTokenCount() - { - return discardTokenInfos.Count(); - } - - const ParsingTable::TokenInfo& ParsingTable::GetDiscardTokenInfo(vint token) - { - return discardTokenInfos[token]; - } - - void ParsingTable::SetDiscardTokenInfo(vint token, const TokenInfo& info) - { - discardTokenInfos[token]=info; - } - - vint ParsingTable::GetStateCount() - { - return stateCount; - } - - const ParsingTable::StateInfo& ParsingTable::GetStateInfo(vint state) - { - return stateInfos[state]; - } - - void ParsingTable::SetStateInfo(vint state, const StateInfo& info) - { - stateInfos[state]=info; - } - - vint ParsingTable::GetRuleCount() - { - return ruleInfos.Count(); - } - - const ParsingTable::RuleInfo& ParsingTable::GetRuleInfo(const WString& ruleName) - { - vint index=ruleMap.Keys().IndexOf(ruleName); - if(index==-1) return *(const RuleInfo*)0; - return ruleInfos[ruleMap.Values().Get(index)]; - } - - const ParsingTable::RuleInfo& ParsingTable::GetRuleInfo(vint rule) - { - return ruleInfos[rule]; - } - - void ParsingTable::SetRuleInfo(vint rule, const RuleInfo& info) - { - ruleInfos[rule]=info; - } - - const regex::RegexLexer& ParsingTable::GetLexer() - { - return *lexer.Obj(); - } - - Ptr ParsingTable::GetTransitionBag(vint state, vint token) - { - return transitionBags[state*tokenCount+token]; - } - - void ParsingTable::SetTransitionBag(vint state, vint token, Ptr bag) - { - transitionBags[state*tokenCount+token]=bag; - } - - void ParsingTable::Initialize() - { - List tokens; - FOREACH(TokenInfo, info, From(tokenInfos).Skip(UserTokenStart)) - { - tokens.Add(info.regex); - } - FOREACH(TokenInfo, info, discardTokenInfos) - { - tokens.Add(info.regex); - } - - vint regexTokenIndex = 0; - for (vint i = UserTokenStart; i < tokenInfos.Count(); i++) - { - tokenInfos[i].regexTokenIndex = regexTokenIndex++; - } - for (vint i = 0; i < discardTokenInfos.Count(); i++) - { - discardTokenInfos[i].regexTokenIndex = regexTokenIndex++; - } - lexer = new RegexLexer(tokens, {}); - - ruleMap.Clear(); - FOREACH_INDEXER(RuleInfo, rule, index, ruleInfos) - { - ruleMap.Add(rule.name, index); - } - for (vint i = 0; i < stateInfos.Count(); i++) - { - StateInfo& info = stateInfos[i]; - info.ruleAmbiguousType = ruleInfos[ruleMap[info.ruleName]].ambiguousType; - } - - treeTypeInfoMap.Clear(); - FOREACH_INDEXER(TreeTypeInfo, info, index, treeTypeInfos) - { - treeTypeInfoMap.Add(info.type, index); - } - - treeFieldInfoMap.Clear(); - FOREACH_INDEXER(TreeFieldInfo, info, index, treeFieldInfos) - { - Pair key(info.type, info.field); - treeFieldInfoMap.Add(key, index); - } - } - - bool ParsingTable::IsInputToken(vint regexTokenIndex) - { - return regexTokenIndex>=0 && regexTokenIndex=tokenCount-UserTokenStart?regexTokenIndex-(tokenCount-UserTokenStart):-1; - } - -#if defined(VCZH_GCC) && defined(__clang__) -#pragma clang diagnostic pop -#endif - } - } -} - - -/*********************************************************************** -.\PARSING\PARSINGTREE.CPP -***********************************************************************/ - -#if defined(VCZH_GCC) && defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wnull-dereference" -#endif - -namespace vl -{ - using namespace collections; - - namespace parsing - { - vint CompareTextRange(Ptr r1, Ptr r2) - { - return ParsingTextPos::Compare(r1->GetCodeRange().start, r2->GetCodeRange().start); - } - -/*********************************************************************** -ParsingTreeNode::TraversalVisitor -***********************************************************************/ - - ParsingTreeNode::TraversalVisitor::TraversalVisitor(TraverseDirection _direction) - :direction(_direction) - { - } - - void ParsingTreeNode::TraversalVisitor::BeforeVisit(ParsingTreeToken* node) - { - } - - void ParsingTreeNode::TraversalVisitor::AfterVisit(ParsingTreeToken* node) - { - } - - void ParsingTreeNode::TraversalVisitor::BeforeVisit(ParsingTreeObject* node) - { - } - - void ParsingTreeNode::TraversalVisitor::AfterVisit(ParsingTreeObject* node) - { - } - - void ParsingTreeNode::TraversalVisitor::BeforeVisit(ParsingTreeArray* node) - { - } - - void ParsingTreeNode::TraversalVisitor::AfterVisit(ParsingTreeArray* node) - { - } - - void ParsingTreeNode::TraversalVisitor::Visit(ParsingTreeToken* node) - { - BeforeVisit(node); - AfterVisit(node); - } - - void ParsingTreeNode::TraversalVisitor::Visit(ParsingTreeObject* node) - { - BeforeVisit(node); - switch(direction) - { - case TraverseDirection::ByTextPosition: - { - FOREACH(Ptr, node, node->GetSubNodes()) - { - node->Accept(this); - } - } - break; - case TraverseDirection::ByStorePosition: - { - FOREACH(Ptr, node, node->GetMembers().Values()) - { - node->Accept(this); - } - } - break; - } - AfterVisit(node); - } - - void ParsingTreeNode::TraversalVisitor::Visit(ParsingTreeArray* node) - { - BeforeVisit(node); - switch(direction) - { - case TraverseDirection::ByTextPosition: - { - FOREACH(Ptr, node, node->GetSubNodes()) - { - node->Accept(this); - } - } - break; - case TraverseDirection::ByStorePosition: - { - FOREACH(Ptr, node, node->GetItems()) - { - node->Accept(this); - } - } - break; - } - AfterVisit(node); - } - -/*********************************************************************** -ParsingTreeNode -***********************************************************************/ - - bool ParsingTreeNode::BeforeAddChild(Ptr node) - { - return node->parent==0; - } - - void ParsingTreeNode::AfterAddChild(Ptr node) - { - node->parent=this; - ClearQueryCache(); - } - - bool ParsingTreeNode::BeforeRemoveChild(Ptr node) - { - return node->parent!=0; - } - - void ParsingTreeNode::AfterRemoveChild(Ptr node) - { - node->parent=0; - ClearQueryCache(); - } - - ParsingTreeNode::ParsingTreeNode(const ParsingTextRange& _codeRange) - :codeRange(_codeRange) - ,parent(0) - { - } - - ParsingTreeNode::~ParsingTreeNode() - { - } - - ParsingTextRange ParsingTreeNode::GetCodeRange() - { - return codeRange; - } - - void ParsingTreeNode::SetCodeRange(const ParsingTextRange& range) - { - codeRange=range; - } - - void ParsingTreeNode::InitializeQueryCache() - { - const NodeList& subNodes=GetSubNodesInternal(); - ClearQueryCache(); - auto subNodesExists = &subNodes; - if(subNodesExists) - { - FOREACH(Ptr, node, subNodes) - { - node->InitializeQueryCache(); - } - - //if (codeRange.start.IsInvalid() || codeRange.start.IsInvalid()) - { - FOREACH(Ptr, subNode, subNodes) - { - const auto& subRange = subNode->codeRange; - const auto& min = !subRange.start.IsInvalid() ? subRange.start : subRange.end; - const auto& max = !subRange.end.IsInvalid() ? subRange.end : subRange.start; - - if (codeRange.start.IsInvalid() || (!min.IsInvalid() && codeRange.start > min)) - { - codeRange.start = min; - } - if (codeRange.end.IsInvalid() || (!max.IsInvalid() && codeRange.end < max)) - { - codeRange.end = max; - } - } - } - - CopyFrom( - cachedOrderedSubNodes, - From(subNodes) - .Where([=](Ptr node) - { - const auto& range = node->GetCodeRange(); - return !range.start.IsInvalid() && !range.end.IsInvalid(); - }) - .OrderBy(&CompareTextRange) - ); - } - } - - void ParsingTreeNode::ClearQueryCache() - { - cachedOrderedSubNodes.Clear(); - } - - ParsingTreeNode* ParsingTreeNode::GetParent() - { - return parent; - } - - const ParsingTreeNode::NodeList& ParsingTreeNode::GetSubNodes() - { - return cachedOrderedSubNodes; - } - - ParsingTreeNode* ParsingTreeNode::FindSubNode(const ParsingTextPos& position) - { - return FindSubNode(ParsingTextRange(position, position)); - } - - ParsingTreeNode* ParsingTreeNode::FindSubNode(const ParsingTextRange& range) - { - if (codeRange.start <= range.start && range.end <= codeRange.end) - { - vint start = 0; - vint end = cachedOrderedSubNodes.Count() - 1; - while (start <= end) - { - vint selected = (start + end) / 2; - ParsingTreeNode* selectedNode = cachedOrderedSubNodes[selected].Obj(); - const ParsingTextRange& selectedRange = selectedNode->codeRange; - if (range.endselectedRange.end) - { - start = selected + 1; - } - else if (selectedRange.start <= range.start && range.end <= selectedRange.end) - { - return selectedNode; - } - else - { - return this; - } - } - } - return this; - } - - ParsingTreeNode* ParsingTreeNode::FindDeepestNode(const ParsingTextPos& position) - { - return FindDeepestNode(ParsingTextRange(position, position)); - } - - ParsingTreeNode* ParsingTreeNode::FindDeepestNode(const ParsingTextRange& range) - { - ParsingTreeNode* result=0; - ParsingTreeNode* node=this; - do - { - result=node; - node=node->FindSubNode(range); - }while(result!=node); - return result; - } - -/*********************************************************************** -ParsingTreeToken -***********************************************************************/ - - const ParsingTreeToken::NodeList& ParsingTreeToken::GetSubNodesInternal() - { - return *(NodeList*)0; - } - - ParsingTreeToken::ParsingTreeToken(const WString& _value, vint _tokenIndex, const ParsingTextRange& _codeRange) - :ParsingTreeNode(_codeRange) - ,value(_value) - ,tokenIndex(_tokenIndex) - { - } - - ParsingTreeToken::~ParsingTreeToken() - { - } - - void ParsingTreeToken::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - Ptr ParsingTreeToken::Clone() - { - Ptr clone=new ParsingTreeToken(value, tokenIndex, codeRange); - return clone; - } - - vint ParsingTreeToken::GetTokenIndex() - { - return tokenIndex; - } - - void ParsingTreeToken::SetTokenIndex(vint _tokenIndex) - { - tokenIndex=_tokenIndex; - } - - const WString& ParsingTreeToken::GetValue() - { - return value; - } - - void ParsingTreeToken::SetValue(const WString& _value) - { - value=_value; - } - -/*********************************************************************** -ParsingTreeObject -***********************************************************************/ - - const ParsingTreeObject::NodeList& ParsingTreeObject::GetSubNodesInternal() - { - return members.Values(); - } - - ParsingTreeObject::ParsingTreeObject(const WString& _type, const ParsingTextRange& _codeRange) - :ParsingTreeNode(_codeRange) - ,type(_type) - { - } - - ParsingTreeObject::~ParsingTreeObject() - { - } - - void ParsingTreeObject::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - Ptr ParsingTreeObject::Clone() - { - Ptr clone=new ParsingTreeObject(type, codeRange); - CopyFrom(clone->rules, rules); - for(vint i=0;i node=members.Values().Get(i)->Clone(); - clone->SetMember(name, node); - } - return clone; - } - - const WString& ParsingTreeObject::GetType() - { - return type; - } - - void ParsingTreeObject::SetType(const WString& _type) - { - type=_type; - } - - ParsingTreeObject::NodeMap& ParsingTreeObject::GetMembers() - { - return members; - } - - Ptr ParsingTreeObject::GetMember(const WString& name) - { - vint index=members.Keys().IndexOf(name); - if(index==-1) return 0; - return members.Values().Get(index); - } - - bool ParsingTreeObject::SetMember(const WString& name, Ptr node) - { - vint index=members.Keys().IndexOf(name); - if(index!=-1) - { - Ptr previous=members.Values().Get(index); - if(previous==node) return true; - if(!BeforeRemoveChild(previous) || !BeforeAddChild(node)) return false; - members.Remove(name); - AfterRemoveChild(previous); - } - members.Add(name, node); - AfterAddChild(node); - return true; - } - - bool ParsingTreeObject::RemoveMember(const WString& name) - { - vint index=members.Keys().IndexOf(name); - if(index!=-1) - { - Ptr previous=members.Values().Get(index); - if(BeforeRemoveChild(previous)) - { - members.Remove(name); - AfterRemoveChild(previous); - return true; - } - } - return false; - } - - const ParsingTreeObject::NameList& ParsingTreeObject::GetMemberNames() - { - return members.Keys(); - } - - ParsingTreeObject::RuleList& ParsingTreeObject::GetCreatorRules() - { - return rules; - } - -/*********************************************************************** -ParsingTreeArray -***********************************************************************/ - - const ParsingTreeArray::NodeList& ParsingTreeArray::GetSubNodesInternal() - { - return items; - } - - ParsingTreeArray::ParsingTreeArray(const WString& _elementType, const ParsingTextRange& _codeRange) - :ParsingTreeNode(_codeRange) - ,elementType(_elementType) - { - } - - ParsingTreeArray::~ParsingTreeArray() - { - } - - void ParsingTreeArray::Accept(IVisitor* visitor) - { - visitor->Visit(this); - } - - Ptr ParsingTreeArray::Clone() - { - Ptr clone=new ParsingTreeArray(elementType, codeRange); - for(vint i=0;i node=items.Get(i)->Clone(); - clone->AddItem(node); - } - return clone; - } - - const WString& ParsingTreeArray::GetElementType() - { - return elementType; - } - - void ParsingTreeArray::SetElementType(const WString& _elementType) - { - elementType=_elementType; - } - - ParsingTreeArray::NodeArray& ParsingTreeArray::GetItems() - { - return items; - } - - Ptr ParsingTreeArray::GetItem(vint index) - { - if(0<=index && index node) - { - if(0<=index && index node) - { - return InsertItem(items.Count(), node); - } - - bool ParsingTreeArray::InsertItem(vint index, Ptr node) - { - if(0<=index && index<=items.Count()) - { - if(BeforeAddChild(node)) - { - items.Insert(index, node); - AfterAddChild(node); - return true; - } - } - return false; - } - - bool ParsingTreeArray::RemoveItem(vint index) - { - if(0<=index && index previous=items[index]; - if(BeforeRemoveChild(previous)) - { - items.RemoveAt(index); - AfterRemoveChild(previous); - return true; - } - } - return false; - } - - bool ParsingTreeArray::RemoveItem(ParsingTreeNode* node) - { - return RemoveItem(items.IndexOf(node)); - } - - vint ParsingTreeArray::IndexOfItem(ParsingTreeNode* node) - { - return items.IndexOf(node); - } - - bool ParsingTreeArray::ContainsItem(ParsingTreeNode* node) - { - return items.Contains(node); - } - - vint ParsingTreeArray::Count() - { - return items.Count(); - } - - bool ParsingTreeArray::Clear() - { - FOREACH(Ptr, node, items) - { - if(!BeforeRemoveChild(node)) return false; - } - FOREACH(Ptr, node, items) - { - AfterRemoveChild(node); - } - items.Clear(); - return true; - } - -/*********************************************************************** -ParsingError -***********************************************************************/ - - ParsingError::ParsingError() - :token(0) - ,parsingTree(0) - { - } - - ParsingError::ParsingError(const WString& _errorMessage) - :token(0) - ,parsingTree(0) - ,errorMessage(_errorMessage) - { - } - - ParsingError::ParsingError(const regex::RegexToken* _token, const WString& _errorMessage) - :token(_token) - ,parsingTree(0) - ,errorMessage(_errorMessage) - { - if(token) - { - codeRange.start.row=_token->rowStart; - codeRange.start.column=_token->columnStart; - codeRange.start.index=_token->start; - codeRange.end.row=_token->rowEnd; - codeRange.end.column=_token->columnEnd; - codeRange.end.index=_token->start+_token->length-1; - codeRange.codeIndex = _token->codeIndex; - } - } - - ParsingError::ParsingError(ParsingTreeCustomBase* _parsingTree, const WString& _errorMessage) - :codeRange(_parsingTree->codeRange) - ,token(0) - ,parsingTree(_parsingTree) - ,errorMessage(_errorMessage) - { - } - - ParsingError::~ParsingError() - { - } - -/*********************************************************************** -ParsingEmptyPrintNodeRecorder -***********************************************************************/ - - ParsingEmptyPrintNodeRecorder::ParsingEmptyPrintNodeRecorder() - { - } - - ParsingEmptyPrintNodeRecorder::~ParsingEmptyPrintNodeRecorder() - { - } - - void ParsingEmptyPrintNodeRecorder::Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) - { - } - -/*********************************************************************** -ParsingMultiplePrintNodeRecorder -***********************************************************************/ - - ParsingMultiplePrintNodeRecorder::ParsingMultiplePrintNodeRecorder() - { - } - - ParsingMultiplePrintNodeRecorder::~ParsingMultiplePrintNodeRecorder() - { - } - - void ParsingMultiplePrintNodeRecorder::AddRecorder(Ptr recorder) - { - recorders.Add(recorder); - } - - void ParsingMultiplePrintNodeRecorder::Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) - { - FOREACH(Ptr, recorder, recorders) - { - recorder->Record(node, range); - } - } - -/*********************************************************************** -ParsingOriginalLocationRecorder -***********************************************************************/ - - ParsingOriginalLocationRecorder::ParsingOriginalLocationRecorder(Ptr _recorder) - :recorder(_recorder) - { - } - - ParsingOriginalLocationRecorder::~ParsingOriginalLocationRecorder() - { - } - - void ParsingOriginalLocationRecorder::Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) - { - auto codeRange = node->codeRange; - codeRange.codeIndex = range.codeIndex; - recorder->Record(node, codeRange); - } - -/*********************************************************************** -ParsingGeneratedLocationRecorder -***********************************************************************/ - - ParsingGeneratedLocationRecorder::ParsingGeneratedLocationRecorder(RangeMap& _rangeMap) - :rangeMap(_rangeMap) - { - } - - ParsingGeneratedLocationRecorder::~ParsingGeneratedLocationRecorder() - { - } - - void ParsingGeneratedLocationRecorder::Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) - { - rangeMap.Add(node, range); - } - -/*********************************************************************** -ParsingUpdateLocationRecorder -***********************************************************************/ - - ParsingUpdateLocationRecorder::ParsingUpdateLocationRecorder() - { - } - - ParsingUpdateLocationRecorder::~ParsingUpdateLocationRecorder() - { - } - - void ParsingUpdateLocationRecorder::Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) - { - node->codeRange = range; - } - -/*********************************************************************** -ParsingWriter -***********************************************************************/ - - void ParsingWriter::HandleChar(wchar_t c) - { - lastPos = currentPos; - switch (c) - { - case L'\n': - currentPos.index++; - currentPos.row++; - currentPos.column = 0; - break; - default: - currentPos.index++; - currentPos.column++; - } - } - - ParsingWriter::ParsingWriter(stream::TextWriter& _writer, Ptr _recorder, vint _codeIndex) - :writer(_writer) - , recorder(_recorder) - , codeIndex(_codeIndex) - , lastPos(-1, 0, -1) - , currentPos(0, 0, 0) - { - } - - ParsingWriter::~ParsingWriter() - { - } - - void ParsingWriter::WriteChar(wchar_t c) - { - writer.WriteChar(c); - if (!recorder) return; - HandleChar(c); - } - - void ParsingWriter::WriteString(const wchar_t* string, vint charCount) - { - writer.WriteString(string, charCount); - if (!recorder) return; - for (vint i = 0; i < charCount; i++) - { - HandleChar(string[i]); - } - } - - void ParsingWriter::BeforePrint(ParsingTreeCustomBase* node) - { - if (!recorder) return; - nodePositions.Add(NodePosPair(node, currentPos)); - } - - void ParsingWriter::AfterPrint(ParsingTreeCustomBase* node) - { - if (!recorder) return; - - auto pair = nodePositions[nodePositions.Count() - 1]; - nodePositions.RemoveAt(nodePositions.Count() - 1); - CHECK_ERROR(pair.key == node, L"vl::parsing::ParsingWriter::AfterPrint(ParsingTreeNode*)#BeforePrint and AfterPrint should be call in pairs."); - - ParsingTextRange range(pair.value, lastPos, codeIndex); - recorder->Record(node, range); - } - } -} - -#if defined(VCZH_GCC) && defined(__clang__) -#pragma clang diagnostic pop -#endif - - -/*********************************************************************** -.\PARSING\JSON\PARSINGJSON.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - namespace json - { - using namespace stream; - using namespace collections; - -/*********************************************************************** -Unescaping Function Foward Declarations -***********************************************************************/ - - void JsonUnescapingString(vl::parsing::ParsingToken& value, const vl::collections::List& tokens) - { - value.value = GenerateToStream([&](StreamWriter& writer) - { - JsonUnescapeString(value.value.Sub(1, value.value.Length() - 2), writer); - }); - } - -/*********************************************************************** -JsonPrintVisitor -***********************************************************************/ - - class JsonPrintVisitor : public Object, public JsonNode::IVisitor - { - public: - TextWriter& writer; - - JsonPrintVisitor(TextWriter& _writer) - :writer(_writer) - { - } - - void Visit(JsonLiteral* node) - { - switch(node->value) - { - case JsonLiteral::JsonValue::True: - writer.WriteString(L"true"); - break; - case JsonLiteral::JsonValue::False: - writer.WriteString(L"false"); - break; - case JsonLiteral::JsonValue::Null: - writer.WriteString(L"null"); - break; - } - } - - void Visit(JsonString* node) - { - writer.WriteChar(L'\"'); - JsonEscapeString(node->content.value, writer); - writer.WriteChar(L'\"'); - } - - void Visit(JsonNumber* node) - { - writer.WriteString(node->content.value); - } - - void Visit(JsonArray* node) - { - writer.WriteChar(L'['); - FOREACH_INDEXER(Ptr, item, i, node->items) - { - if(i>0) writer.WriteChar(L','); - item->Accept(this); - } - writer.WriteChar(L']'); - } - - void Visit(JsonObjectField* node) - { - writer.WriteChar(L'\"'); - JsonEscapeString(node->name.value, writer); - writer.WriteString(L"\":"); - node->value->Accept(this); - } - - void Visit(JsonObject* node) - { - writer.WriteChar(L'{'); - FOREACH_INDEXER(Ptr, field, i, node->fields) - { - if(i>0) writer.WriteChar(L','); - field->Accept(this); - } - writer.WriteChar(L'}'); - } - }; - -/*********************************************************************** -API -***********************************************************************/ - - void JsonEscapeString(const WString& text, stream::TextWriter& writer) - { - const wchar_t* reading=text.Buffer(); - while(wchar_t c=*reading++) - { - switch(c) - { - case L'\"': writer.WriteString(L"\\\""); break; - case L'\\': writer.WriteString(L"\\\\"); break; - case L'/': writer.WriteString(L"\\/"); break; - case L'\b': writer.WriteString(L"\\b"); break; - case L'\f': writer.WriteString(L"\\f"); break; - case L'\n': writer.WriteString(L"\\n"); break; - case L'\r': writer.WriteString(L"\\r"); break; - case L'\t': writer.WriteString(L"\\t"); break; - default: writer.WriteChar(c); - } - } - } - - vuint16_t GetHex(wchar_t c) - { - if(L'0'<=c && c<=L'9') - { - return c-L'0'; - } - else if(L'A'<=c && c<=L'F') - { - return c-L'A'; - } - else if(L'a'<=c && c<=L'f') - { - return c-L'a'; - } - else - { - return 0; - } - } - - void JsonUnescapeString(const WString& text, stream::TextWriter& writer) - { - const wchar_t* reading=text.Buffer(); - while(wchar_t c=*reading++) - { - if(c==L'\\' && *reading) - { - switch(c=*reading++) - { - case L'b': writer.WriteChar(L'\b'); break; - case L'f': writer.WriteChar(L'\f'); break; - case L'n': writer.WriteChar(L'\n'); break; - case L'r': writer.WriteChar(L'\r'); break; - case L't': writer.WriteChar(L'\t'); break; - case L'u': - { - wchar_t h1, h2, h3, h4; - if((h1=reading[0]) && (h2=reading[1]) && (h3=reading[2]) && (h4=reading[3])) - { - reading+=4; - wchar_t h=(wchar_t)(vuint16_t)( - (GetHex(h1)<<12) + - (GetHex(h2)<<8) + - (GetHex(h3)<<4) + - (GetHex(h4)<<0) - ); - writer.WriteChar(h); - } - } - break; - default: writer.WriteChar(c); - } - } - else - { - writer.WriteChar(c); - } - } - } - - void JsonPrint(Ptr node, stream::TextWriter& writer) - { - JsonPrintVisitor visitor(writer); - node->Accept(&visitor); - } - - WString JsonToString(Ptr node) - { - return GenerateToStream([&](StreamWriter& writer) - { - JsonPrint(node, writer); - }); - } - } - } -} - - -/*********************************************************************** -.\PARSING\JSON\PARSINGJSON_AST.CPP -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parser::ParsingJson.parser.txt - -This file is generated by: Vczh Parser Generator -***********************************************************************/ - - -namespace vl -{ - namespace parsing - { - namespace json - { -/*********************************************************************** -Visitor Pattern Implementation -***********************************************************************/ - - void JsonLiteral::Accept(JsonNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void JsonString::Accept(JsonNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void JsonNumber::Accept(JsonNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void JsonArray::Accept(JsonNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void JsonObjectField::Accept(JsonNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void JsonObject::Accept(JsonNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - } - } -} -namespace vl -{ - namespace reflection - { - namespace description - { -#ifndef VCZH_DEBUG_NO_REFLECTION - using namespace vl::parsing::json; - -#define PARSING_TOKEN_FIELD(NAME)\ - CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(get_##NAME, NO_PARAMETER, vl::WString(ClassType::*)(), [](ClassType* node) { return node->NAME.value; }, L"*", L"*")\ - CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(set_##NAME, { L"value" }, void(ClassType::*)(const vl::WString&), [](ClassType* node, const vl::WString& value) { node->NAME.value = value; }, L"*", L"*")\ - CLASS_MEMBER_PROPERTY_REFERENCETEMPLATE(NAME, get_##NAME, set_##NAME, L"$This->$Name.value")\ - - IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonNode, system::JsonNode) - IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonLiteral, system::JsonLiteral) - IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonLiteral::JsonValue, system::JsonLiteral::JsonValue) - IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonString, system::JsonString) - IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonNumber, system::JsonNumber) - IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonArray, system::JsonArray) - IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonObjectField, system::JsonObjectField) - IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonObject, system::JsonObject) - IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonNode::IVisitor, system::JsonNode::IVisitor) - - BEGIN_CLASS_MEMBER(JsonNode) - CLASS_MEMBER_METHOD_OVERLOAD(Accept, {L"visitor"}, void(JsonNode::*)(JsonNode::IVisitor* visitor)) - END_CLASS_MEMBER(JsonNode) - - BEGIN_CLASS_MEMBER(JsonLiteral) - CLASS_MEMBER_BASE(JsonNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - CLASS_MEMBER_FIELD(value) - END_CLASS_MEMBER(JsonLiteral) - - BEGIN_ENUM_ITEM(JsonLiteral::JsonValue) - ENUM_ITEM_NAMESPACE(JsonLiteral::JsonValue) - ENUM_NAMESPACE_ITEM(True) - ENUM_NAMESPACE_ITEM(False) - ENUM_NAMESPACE_ITEM(Null) - END_ENUM_ITEM(JsonLiteral::JsonValue) - - BEGIN_CLASS_MEMBER(JsonString) - CLASS_MEMBER_BASE(JsonNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - PARSING_TOKEN_FIELD(content) - END_CLASS_MEMBER(JsonString) - - BEGIN_CLASS_MEMBER(JsonNumber) - CLASS_MEMBER_BASE(JsonNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - PARSING_TOKEN_FIELD(content) - END_CLASS_MEMBER(JsonNumber) - - BEGIN_CLASS_MEMBER(JsonArray) - CLASS_MEMBER_BASE(JsonNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - CLASS_MEMBER_FIELD(items) - END_CLASS_MEMBER(JsonArray) - - BEGIN_CLASS_MEMBER(JsonObjectField) - CLASS_MEMBER_BASE(JsonNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - PARSING_TOKEN_FIELD(name) - CLASS_MEMBER_FIELD(value) - END_CLASS_MEMBER(JsonObjectField) - - BEGIN_CLASS_MEMBER(JsonObject) - CLASS_MEMBER_BASE(JsonNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - CLASS_MEMBER_FIELD(fields) - END_CLASS_MEMBER(JsonObject) - - BEGIN_INTERFACE_MEMBER(JsonNode::IVisitor) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonLiteral* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonString* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonNumber* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonArray* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonObjectField* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonObject* node)) - END_INTERFACE_MEMBER(JsonNode) - -#undef PARSING_TOKEN_FIELD - - class JsonTypeLoader : public vl::Object, public ITypeLoader - { - public: - void Load(ITypeManager* manager) - { - ADD_TYPE_INFO(vl::parsing::json::JsonNode) - ADD_TYPE_INFO(vl::parsing::json::JsonLiteral) - ADD_TYPE_INFO(vl::parsing::json::JsonLiteral::JsonValue) - ADD_TYPE_INFO(vl::parsing::json::JsonString) - ADD_TYPE_INFO(vl::parsing::json::JsonNumber) - ADD_TYPE_INFO(vl::parsing::json::JsonArray) - ADD_TYPE_INFO(vl::parsing::json::JsonObjectField) - ADD_TYPE_INFO(vl::parsing::json::JsonObject) - ADD_TYPE_INFO(vl::parsing::json::JsonNode::IVisitor) - } - - void Unload(ITypeManager* manager) - { - } - }; -#endif - - bool JsonLoadTypes() - { -#ifndef VCZH_DEBUG_NO_REFLECTION - ITypeManager* manager=GetGlobalTypeManager(); - if(manager) - { - Ptr loader=new JsonTypeLoader; - return manager->AddTypeLoader(loader); - } -#endif - return false; - } - } - } -} - - -/*********************************************************************** -.\PARSING\JSON\PARSINGJSON_PARSER.CPP -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parser::ParsingJson.parser.txt - -This file is generated by: Vczh Parser Generator -***********************************************************************/ - - -namespace vl -{ - namespace parsing - { - namespace json - { -/*********************************************************************** -ParserText -***********************************************************************/ - -const wchar_t* const parserTextBuffer[] = { - L"" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"// AST" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"" L"\r\n" -, L"class Node" L"\r\n" -, L"{" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class Literal:Node" L"\r\n" -, L"{" L"\r\n" -, L"\tenum Value" L"\r\n" -, L"\t{" L"\r\n" -, L"\t\tTrue," L"\r\n" -, L"\t\tFalse," L"\r\n" -, L"\t\tNull," L"\r\n" -, L"\t}" L"\r\n" -, L"" L"\r\n" -, L"\tValue value;" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class String:Node" L"\r\n" -, L"{" L"\r\n" -, L"\ttoken content(JsonUnescapingString)\t\t\t\t@Color(\"String\");" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class Number:Node" L"\r\n" -, L"{" L"\r\n" -, L"\ttoken content;" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class Array:Node" L"\r\n" -, L"{" L"\r\n" -, L"\tNode[] items;" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class ObjectField:Node" L"\r\n" -, L"{" L"\r\n" -, L"\ttoken name(JsonUnescapingString)\t\t\t\t@Color(\"AttName\");" L"\r\n" -, L"\tNode value;" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class Object:Node" L"\r\n" -, L"{" L"\r\n" -, L"\tObjectField[] fields;" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"// Lexer" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"" L"\r\n" -, L"token TRUEVALUE = \"true\"\t\t\t\t\t\t\t@Color(\"Keyword\");" L"\r\n" -, L"token FALSEVALUE = \"false\"\t\t\t\t\t\t\t@Color(\"Keyword\");" L"\r\n" -, L"token NULLVALUE = \"null\"\t\t\t\t\t\t\t@Color(\"Keyword\");" L"\r\n" -, L"token OBJOPEN = \"\\{\"\t\t\t\t\t\t\t\t@Color(\"Boundary\");" L"\r\n" -, L"token OBJCLOSE = \"\\}\"\t\t\t\t\t\t\t\t@Color(\"Boundary\");" L"\r\n" -, L"token ARROPEN = \"\\[\"\t\t\t\t\t\t\t\t@Color(\"Boundary\");" L"\r\n" -, L"token ARRCLOSE = \"\\]\"\t\t\t\t\t\t\t\t@Color(\"Boundary\");" L"\r\n" -, L"token COMMA = \",\";" L"\r\n" -, L"token COLON = \":\";" L"\r\n" -, L"token NUMBER = \"[\\-]?\\d+(.\\d+)?([eE][+\\-]?\\d+)?\"\t@Color(\"Number\");" L"\r\n" -, L"token STRING = \"\"\"([^\\\\\"\"]|\\\\[^u]|\\\\u\\d{4})*\"\"\"\t\t@ContextColor();" L"\r\n" -, L"" L"\r\n" -, L"discardtoken SPACE = \"\\s+\";" L"\r\n" -, L"" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"// Rules" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"" L"\r\n" -, L"rule Node JLiteral" L"\r\n" -, L"\t= STRING:content as String" L"\r\n" -, L"\t= NUMBER:content as Number" L"\r\n" -, L"\t= \"true\" as Literal with {value = \"True\"}" L"\r\n" -, L"\t= \"false\" as Literal with {value = \"False\"}" L"\r\n" -, L"\t= \"null\" as Literal with {value = \"Null\"}" L"\r\n" -, L"\t;" L"\r\n" -, L"" L"\r\n" -, L"rule ObjectField JField" L"\r\n" -, L"\t= STRING:name \":\" JValue:value as ObjectField" L"\r\n" -, L"\t;" L"\r\n" -, L"" L"\r\n" -, L"rule Object JObject" L"\r\n" -, L"\t= \"{\" [JField:fields {\",\" JField:fields} ] \"}\" as Object" L"\r\n" -, L"\t;" L"\r\n" -, L"" L"\r\n" -, L"rule Array JArray" L"\r\n" -, L"\t= \"[\" [JValue:items {\",\" JValue:items} ] \"]\" as Array" L"\r\n" -, L"\t;" L"\r\n" -, L"" L"\r\n" -, L"rule Node JValue" L"\r\n" -, L"\t= !JLiteral" L"\r\n" -, L"\t= !JObject" L"\r\n" -, L"\t= !JArray" L"\r\n" -, L"\t;" L"\r\n" -, L"" L"\r\n" -, L"rule Node JRoot" L"\r\n" -, L"\t= !JObject" L"\r\n" -, L"\t= !JArray" L"\r\n" -, L"\t;" L"\r\n" -}; -const vint lengthTextBuffer[] = { - 2, 68, 8, 68, 2, 12, 3, 3, 2, 20, 3, 13, 4, 9, 10, 9, 4, 2, 15, 3, 2, 19, 3, 59, 3, 2, 19, 3, 17, 3, 2, 18 -, 3, 16, 3, 2, 24, 3, 57, 14, 3, 2, 19, 3, 24, 3, 2, 68, 10, 68, 2, 51, 53, 51, 49, 50, 49, 50, 20, 20, 68, 67, 2, 29 -, 2, 68, 10, 68, 2, 20, 29, 29, 44, 46, 44, 4, 2, 25, 48, 4, 2, 21, 59, 4, 2, 19, 56, 4, 2, 18, 14, 13, 12, 4, 2, 17 -, 13, 12, 4 -}; -const vint lengthTextBufferTotal = 2018; - - vl::WString JsonGetParserTextBuffer() - { - vl::collections::Array textBuffer(lengthTextBufferTotal + 1); - wchar_t* reading = &textBuffer[0]; - for(vint i = 0; i < sizeof(parserTextBuffer) / sizeof(*parserTextBuffer); i++) - { - memcpy(reading, parserTextBuffer[i], lengthTextBuffer[i] * sizeof(wchar_t)); - reading += lengthTextBuffer[i]; - } - *reading = 0; - return &textBuffer[0]; - } - -/*********************************************************************** -SerializedTable -***********************************************************************/ - -const vint parserBufferLength = 3809; // 17748 bytes before compressing -const vint parserBufferBlock = 1024; -const vint parserBufferRemain = 737; -const vint parserBufferRows = 4; -const char* const parserBuffer[] = { -"\x00\x0B\x00\x02\x83\x80\x07\x7D\x00\x82\x03\xFF\x45\x08\x82\x83\x86\x81\x21\x6F\x6C\x2F\x32\x37\x84\x86\x02\x86\x00\x17\x82\x93\x24\x3A\x39\x34\x37\x67\x06\x98\x8A\x88\x8E\x84\x00\x88\x12\x94\x98\x87\x0B\x93\x81\x20\x3A\x74\x4E\x21\x2D\x35\x32\x90\x86\x92\x0C\xA6\xA8\x93\x85\x88\x84\x96\x86\x3F\x80\x0B\x25\x39\x3F\x3B\x88\x32\x36\x88\xB8\x88\x8A\x99\x88\x9F\x96\x40\x83\x83\xA5\xA7\xA1\xA4\x83\xA5\x04\xCD\xA9\x9D\x94\x81\xA1\xAE\xA9\x44\xC6\xB2\x28\xAC\xA9\x86\x93\xAC\x03\xBB\xAA\x8C\x88\x00\x8D\xB6\x81\x42\x6F\x35\x2E\x34\x31\x32\x39\x3C\x56\xE6\xA5\x89\xBE\xA3\xB4\x85\xB7\x7F\x83\xB1\xB3\xB5\xBF\xB9\xBC\x81\x58\x83\x9A\xAF\xAC\xB6\xB6\xC0\xB9\x74\xF6\xB8\xA5\xB8\xC7\xB2\xC4\xBE\x5B\x8E\xCD\xD0\xB0\xCD\xC3\xC9\x91\x96\x8D\x98\xCC\xC8\x82\x8D\xD3\x81\x4E\x75\x2D\x22\x35\x32\x3B\xC3\x82\x0C\x18\xB1\xCF\x8F\x36\x34\x3B\x32\x78\x74\x2A\xB8\x80\x06\xAF\xCB\x9C\x2E\xF2\x32\x21\x38\xBF\x7E\xE3\xE3\xFF\x3E\xC2\x81\xAC\x21\x37\xDB\xE1\x6C\x48\xC8\xE4\x08\x8C\xEA\x80\x27\x6F\x64\x35\x92\xE6\xE6\xD0\x82\xD3\xA9\xAB\xED\xDC\xED\xE8\x8E\xD3\x27\x62\x6A\x25\x23\x34\x3C\xF3\x7F\x80\x0C\xF0\xC0\x08\xFA\xF4\xF6\x23\x34\x65\x6C\x08\xA4\xFE\xEB\x82\xD2\x8E\x1E\x60\x4E\x7A\x72\x00\x21\x65\x81\x70\xC3\x79\x16\x82\x49\xCE\x65\x1D\x1B\x1C\x03\x90\x50\x01\x73\xCF\x61\x1C\x1B\x82\x03\x76\x16\x85\x1D\xDB\x5C\x7D\x7E\x40\xE0\x6A\x6C\x6A\x1C\x04\x81\x53\x19\x6D\xB7\x76\x6E\x7B\x87\x19\x43\x44\x7F\x7A\x74\x2C\x86\x6A\x19\xF8\x7A\x70\x84\x79\xF2\x44\x42\x7F\x8B\xF6\x75\x84\x1A\x75\x08\x40\x9E\x1B\x4C\x65\x14\x60\x40\x46\x3B\xA9\x70\x8F\x7D\xF9\x64\x18\x86\x40\x1A\xAC\x1C\x87\x8A\xE6\x43\x40\x83\x47\x67\x25\x83\x43\x89\xB6\x65\x16\x6C\x6F\x0F\x18\x44\x08\x46\x61\xBC\x66\x9A\x52\xEE\x64\x77\x9B\x4D\x69\x9C\x7B\x98\x9A\x6D\x88\x7F\x9B\x55\x71\x88\x79\x00\x46\x77\x82\x44\x16\x14\x55\x05\x16\x15\x10\x4C\x3D\x90\x90\x41\x40\x9D\x4C\x84\x6F\x02\x18\x4A\x02\xA2\x03\x46\x10\xA3\x14\x7E\x80\xAD\x9F\x93\x00\x26\x16\x87\x1C\x45\x98\x43\x00\x9E\x9C\x97\x75\x14\x13\x4C\x3F\x91\xA1\x11\x83\x83\x42\x91\x1D\x6C\x2C\x19\xA0\x43\xA5\x8B\x72\x87\x13\x42\x0A\x1F\x10\x14\x45\x0E\x1B\xA8\x42\xB7\x9C\x1B\x1F\xA6\xC0\x5B\x61\x62\x40\xB0\x8A\x13\x10\x13\x4F\x10\xA7\xAC\x41\xB9\xBD\x1D\xA9\x8B\x51\x4D\xB0\x01\x10\x52\x12\x13\xAD\xAD\xC7\x83\x49\xAF\x16\x06\x84\x80\x60\x41\x80\x50\xB2\x17\xB0\xC5\x85\x15\xB6\x40\xB9\x9D\x1C\x8B\xB6\xBF\x4C\x59\x5B\x13\x4D\x0D\x11\x12\x91\x3D\x6C\x04\x82\x7B\x94\x83\x1F\x10\xB1\x4E\x30\xB3\x42\x0E\xE8\x88\x6C\x7D\x95\x9E\x8D\x12\x11\x11\x52\x1F\x08\x46\xC1\x02\x5B\x1C\x15\x0B\x5D\x3F\x0C\x14\x19\x2B\x28\x0E\x0B\xC3\x2B\x29\x0F\x0C\x0A\x5B\x25\x15\x11\x17\x5B\x2B\x0B\xC1\xC3\x14\xD6\xC9\x9C\x42\x23\xDF\x70\xC0\x00\x53\x3B\x99\x12\x13\x47\x1B\x08\x46\xCB\x02\x62\x08\xC6\x17\x5C\x1C\x12\x09\x17\x7C\x35\xCB\x16\x17\x75\x38\xC5\xCD\x1D\x0F\xFB\x14\x0D\x1F\x29\x2A\x02\x0B\xA2\x0C\x48\xD8\x42\x91\x94\x93\x10\x15\x10\x43\x05\x1C\xAC\x42\x53\xDC\x13\x1F\x0A\x39\x89\x44\x7B\x98\xBE\x9C\xB3\x42\x12\x14\xAD\x66\x86\x04\x18\x64\xD2\x40\xD8\x0D\x90\x7E\x0A\x14\x6F\x2F\x14\x1C\x47\x76\x74\x1D\x00\x46\x73\xC2\x40\x10\x08\x24\x3C\x08\xD9\x85\x6C\x3E\x0D\xBC\x00\x80\x7B\xD2\xD8\x1B\x0E\x18\x45\xE3\xD9\x61\xEA\xD0\xDE\x1C\x74\x33\x68\x42\xE3\x77\xFA\xD9\xE2\x85\x7E\xDA\x60\x02\xE0\xD0\x4A\xD4\x42\xD2\x98\xD6\x8E\x09\x0C\xFA\x18\x41\xEA\x40\x92\xE9\xD4\xE6\x0E\x20\x29\xC2\x17\xCA\x47\x20\x08\xE8\x97\x29\xB4\x10\x09\x18\x73\x29\xED\x44\x96\x40\x0D\x0A\x01\xE9\x7C\xFE\x08\xEA\x13\x55\x02\xC4\xC2\xEB\x20\x30\xEE\x96\xEC\xB4\xE0\x01\x7B\x88\xB9\xFB\xED\xE5\xDF\xA8\xE2\x06\xA1\x19\x22\x33\xE5\xEF\xE4\x6C\x37\xD7\x1E\x73\x68\x20\x0B\x1C\x08\x51\x9C\x80\x09\x0F\x20\x22\x04\x16\x1C\x1C\x95\xFD\x1E\xEE\xBC\xC3\xEE\xED\xF9\x96\xAC\x18\xA5\xF5\xC9\xD8\xFA\xF4\xF7\xDE\xE0\xFB\x85\x19\xE3\xE5\xF6\x13\xA5\xD4\x60\x07\xFA\x4E\x78\x7B\xF7\x62\x06\x0D\xA8\x4C\x0C\xFD\x57\x76\x75\xEC\x60\x03\x7B\x74\x1D\x7B\xF7\x61\x7C\x7E\xF2\x62\x01\x35\xA9\x4A\x7F\xDF\x01\x78\x7A\x08\x18\x26\x83\x88\x6D\x83\xDA\x6D\x64\x0F\x22\x34\x2D\x6E\x08\x28\x85\xDE\x4F\x7E\x06\x10\x00\x0A\x46\x5F\x76\x0B\xFE\x1B\x81\x87\xFD\x5F\x75\x07\x18\x38\x84\xE9\x4A\x02\x86\x29\x65\x0F\x7D\x21\x0F\x79\xF3\x7A\x6D\x86", -"\x0E\x40\x8A\x56\x4A\x4C\x3F\x10\xBC\x8B\x7F\x23\x81\x0A\x38\xC4\x2F\x87\xC9\x4A\x0C\x48\xFD\x34\x87\x6C\x55\x84\x0E\x0B\x33\x0A\x06\x8C\x1D\x8B\x87\x59\x8F\x7E\xEA\x2C\x74\x79\x21\x74\x25\x7C\x3A\x15\x78\x13\xBE\x84\x78\x0A\x96\x78\x04\x3C\x54\x0D\x16\xD2\x86\x23\xAF\x4F\x89\x41\x57\x97\x73\x1D\xC4\x3E\x04\x19\x0C\x10\x23\x7F\x9B\x87\x1E\xF9\x06\x81\x2D\x15\x7B\x0B\x20\x0B\x8E\xF8\x28\x7D\x41\x07\x77\x6F\x7B\x22\x0C\x06\x1A\xC5\x8C\x7E\x46\xB7\x37\x41\x02\x80\x05\x17\x65\x7D\x0B\x05\xA0\x03\x90\xEC\x6A\x0B\x20\x85\x97\x91\x44\x94\x94\x78\x8D\x95\x74\x10\x10\x92\x92\x53\xBB\x78\x95\x97\x95\x75\x1F\x1A\x9C\x92\x4F\x83\x90\x86\x67\x74\x93\xE1\x08\x2B\x96\x45\xA5\x0B\x84\x6E\x66\x84\x19\x59\x62\x20\xF9\x2B\x84\x92\x2D\x94\x8F\x69\x58\x8E\x47\x5D\x84\x25\x97\x59\x80\x99\x09\xF4\x24\x99\x23\x42\x23\x85\x61\x8E\x86\x96\x67\x61\x8F\x92\x43\x23\x64\x48\x95\x3C\x1D\x7D\x84\x12\x8C\x25\x9B\x87\x71\x86\x83\x1E\x25\x94\x8A\x1F\x44\x7C\x46\x4D\x53\x0F\x23\xE5\x7D\x95\x76\x8D\x4F\x9D\x3E\x52\x94\x2D\xA2\x0D\x0E\x4F\xB1\x89\x94\xE9\x91\x7B\x3A\xA0\x08\x90\x7B\xBA\x38\x9F\xF1\x8E\x84\x2B\xEA\x89\x8A\x84\xB6\x41\x93\x9B\x9C\x9E\x3F\xC9\x81\x47\x29\x83\x91\x8F\xA2\x90\x89\x1E\x5B\x85\x08\x8C\x1D\xA2\x90\x1A\xA4\x94\x41\xAE\x9C\x8C\x4B\x8E\x45\x76\x0B\xA4\xA7\x22\xA0\x09\x94\x88\xB5\x97\x8D\x83\x8A\x9A\xC9\x67\x67\xA2\xCB\x59\xA1\x41\x2E\x14\x07\x47\x88\x2B\xA6\xBD\x63\x91\x7A\x86\x83\xA6\x2F\xB0\x97\xA5\xFC\x51\x92\x04\x77\x63\xAA\x49\x98\x93\x97\x88\x9D\x90\xA6\x1A\xBB\x9B\xE5\x5D\x9D\x53\xA9\x94\xA1\xA7\x49\x18\x21\x56\xE8\x94\xA2\x75\xAC\x9D\xA1\xA8\x70\x9F\x43\x8B\xA9\xA8\xB0\xA0\x02\xAC\x64\x1A\x9D\x44\xFD\x9F\x8D\x38\x92\xA9\x9C\x30\x5E\x9A\x40\x60\x91\x8F\x2D\x9B\xA8\x21\x77\xBA\x6D\x40\xE5\x73\xA1\x82\xA6\xA8\xAD\x28\xB4\x9C\x43\xEE\x91\xAD\x7C\xAE\xA2\xA2\x6D\xB4\xA2\x4C\xFE\x36\x8E\x8D\x8E\x9B\x20\xBD\x83\x92\x34\xC2\x95\x9A\x63\xBE\xA1\xA4\x2E\x94\x52\x12\x6C\x6E\x6D\xB7\x9C\xB3\x9C\x31\x05\x04\x46\x22\xBB\x87\xCF\x87\x89\x8E\x4B\x86\xB4\xEA\x41\x81\xA7\xB7\x94\xAC\x21\x74\xB7\xA9\x0C\x77\xA4\x21\xBC\xB0\xAC\x3D\x5E\xB7\x6E\x5F\x84\xB7\xAC\xC3\xA9\xA6\xA0\x64\x0E\xA1\x5A\x87\xBC\xAD\xE4\x71\x88\x97\x7A\x9A\xA0\x46\x92\xB1\x07\x9D\x84\x25\xA7\x37\xA4\x38\x29\xBA\xBA\xA5\x4A\xAC\xA1\x96\x46\xB5\x9F\x29\xCB\xAA\xAD\x97\x89\x7F\x96\x53\x99\x88\x46\xD1\x91\x07\x2F\x88\x26\xBC\x7A\x61\x8C\xEA\x63\x8C\x65\x32\x84\x4F\x6E\x22\x09\x8D\x75\xED\x8F\x94\xE3\x94\xA1\x8B\xAE\xB4\xA1\x99\x08\x2B\xBF\xDB\xA3\x9F\xB3\xC2\x8E\x70\x41\x0E\x7B\x85\x74\x99\xB3\x2F\x67\x7F\xB0\x0A\x84\x28\x85\xCD\xA4\x83\xB2\x74\x3A\x73\x40\x4A\x6B\x84\xD3\xAE\x80\xB9\xC0\xA3\xBE\x8F\x7D\x86\xBC\x82\x28\xB8\xB8\x62\x8A\x65\x7B\xA8\x76\x8C\xFE\x71\xB8\xA9\xF3\xA8\x76\x1B\xF6\xB2\x9D\x2C\x98\xC1\x8B\x20\x88\x21\x8C\xC0\xB2\x9B\xC5\x74\x0D\xB2\x03\x37\x6C\x36\xBE\x4E\x07\x17\xFE\x42\xC0\x03\x2E\x70\x8D\xB6\xC2\xC2\x81\x0A\x69\x72\x20\xD9\xBE\x38\x91\x08\x22\x26\xDC\x9F\xAA\x9F\xB6\xC4\x90\x82\x20\x72\xBC\x7A\xAD\xAB\x4A\xD0\x47\x82\x83\x2D\xC1\xBA\xB6\xC0\xC7\x76\x60\x07\x95\xE2\x9D\xC6\x8B\x9A\xA1\xC6\x04\x33\xC6\x64\xD1\xC4\x0F\xB8\x60\xC8\x00\x3A\xD7\xB1\x82\x65\xC5\x8E\x9A\x9A\xA3\xCA\x00\x02\xCA\x64\xC4\xCC\x51\x30\xF2\xCA\xBA\x18\xD4\x90\x9A\x83\x23\xC6\x4A\xB5\xC5\xCD\x8C\x6F\xCD\x9C\xBE\x94\xCF\x65\x97\x74\x92\x78\xC2\xCA\xA1\xFC\xC9\x69\x1C\xE2\xCC\xD1\x9A\xBF\xB3\x7E\x84\x2D\xBF\xCF\x87\xD1\x6E\x45\xC0\x03\x91\xD6\xCE\xC0\xB7\x7E\x01\xD3\x24\x8F\xCD\xA9\xE3\x96\xC6\xB9\x80\x03\x64\x48\xC6\xB4\x46\xD8\x71\xD4\xCE\x58\x7D\x8F\xA3\x68\x21\xAE\xED\x70\x3B\x10\xEB\x73\xC4\xC5\x68\x47\xF1\x6F\x87\x4A\x90\x0B\x8D\x80\xBF\x61\x7B\xC0\x52\x04\x78\xE3\x76\x37\x8D\xCB\x6D\x37\xB1\x8D\x86\x81\xE9\x5E\x90\x7B\x0F\x98\x7F\x04\xAF\x96\x83\xF3\x69\x7A\x80\xD3\xDD\x75\xF4\x71\x73\x7F\x37\x98\xD8\x82\x12\x9A\x7C\x1B\x96\x8F\x7E\xF9\x41\x85\x0F\xE1\xCE\x7D\xF4\x08\x89\x82\x73\xCD\x81\xDB\x11\x99\x7E\x1B\x96\x88\x82\x05\xA0\xDE\xC7\x4D\x5A\xC1\x93\x39\xAD\xC3\x7D\x43\x21\xBD\x3C\xCB\xBE\x88\xAD\x74\xC4\x22\x68\x8B\x92\xAF\x8A\xC5\x7D\xB5\x71\x8F\x39\x99\xCC\x3D\xAE\xD1\xB6\x38\xAE\x05\x06\xDA\x83\x26\xB6\x7B\xA2\x05\x5F\x89\x9F\xAE\xDF\x82\xB4\xE4\xBC\xA0\xB0\x71\x93\xA2\x9D\xC5", -"\xA0\x45\xB1\x78\x96\xA6\x64\xB5\x0E\xB9\x81\x10\xBF\xA7\xE5\x61\xA9\x41\xDB\xB7\xBB\xA2\xBF\xB4\xE7\x2D\xAD\xAA\x77\xB5\x71\xA7\x73\x76\xA0\x7B\xCB\x40\x48\x76\x5A\x33\x4E\xAD\x5E\x41\xBC\x3E\x4F\xCD\xC5\xBE\x4C\x36\x0B\x23\x24\x3C\x17\xF5\xA1\x9D\xF3\x34\xA2\xDE\x18\x07\xEA\x4F\xFB\xE9\x74\x8A\x48\xC1\x67\x5A\xA4\x37\x1A\x00\xEE\x74\x01\xDB\x7F\xA4\xE8\x31\x3B\x65\x1C\x34\x07\x6A\xE8\x38\x54\xEE\x6E\xED\xD7\x30\xEC\x6F\x1E\x04\xEF\xE3\x1C\x03\x5C\xAF\x3F\x1C\x6F\x46\x4D\xE9\xC2\xF3\x49\xF0\xCB\x43\x5E\xE1\x80\x0A\xF1\x65\x7C\x34\x52\x14\x98\xEC\x00\x5E\xD5\x0D\x59\xCD\x86\xF0\x52\xB8\x78\x6F\x16\xFC\x6F\xC0\xC6\x42\xF1\x86\xED\xF1\xE1\x90\xFB\x7E\x4A\x6D\xD8\x53\x9C\xE3\x70\xE6\x92\x4A\xF2\xCB\x5E\x69\x84\x9D\xE6\x4B\x3F\x2C\x40\xF5\xC2\xE2\xF5\xE9\xA4\xFE\x86\xE4\xFD\xD9\xF4\xE8\x2B\xF6\x59\xAD\xFD\x6B\x40\x1C\x87\xF2\xA5\x32\xF3\xCB\xE4\x4B\xF0\x43\x0A\xF4\xF0\x09\x5F\x2A\x20\xCE\xD4\x0F\xE6\xC7\xE5\xF9\xA6\xC8\xB9\xDA\x72\x13\xFA\xAF\x4F\x71\xF1\xC7\x89\xFA\xF9\xC8\x58\x21\xF3\xCE\x5F\xF8\x00\x11\xFA\xFB\xBF\x57\x71\xF0\xF3\x48\xB9\x62\xE7\x08\xFD\xAF\xEA\xFF\xE5\x81\xF6\x49\xA9\x60\xFE\x4C\x81\xF7\xF7\x9C\x46\x4D\x02\x8C\x0A\xF4\x45\xFD\x77\x7F\x02\x1D\x7B\x16\x26\x7F\x02\x8B\x75\x33\x5F\x68\xFB\x37\x80\x37\x12\x7B\x46\x24\x20\x0C\x85\x10\x06\x88\x18\x8A\x76\x20\x83\x78\x11\x15\x0E\x7F\x27\x34\x10\x19\x87\x80\x6C\x7E\x43\xE3\x7A\x2E\xBD\x20\x00\x14\x4C\x1B\x00\x7A\x1F\xFF\x0F\x7F\x85\x76\x24\x4E\x68\x2B\x1B\x83\x10\x2D\x87\x7F\x1F\x8C\x21\xB5\x73\x82\x68\x12\x10\xA9\x46\x82\x66\x69\x20\x29\x8F\x82\x67\x26\x24\xD5\x4A\x82\xF1\x1C\x80\x33\x85\x06\x35\x82\x82\x48\x89\x83\x3E\x8C\x2C\xC9\x59\x20\x87\x7E\x80\xAE\x70\x7E\x21\x8F\x26\x52\x77\x5F\x54\x7B\x84\xA6\x10\x5C\x3D\x87\x13\x8A\x7E\x6A\x17\x8C\x10\x83\x62\x10\x13\x8B\x78\x55\x8D\x62\x57\x88\x80\x8C\x5C\x4C\x4D\x2C\x22\x61\x8B\x78\x27\x84\x06\x47\x89\x80\x09\x80\x58\xBC\x19\x75\x5B\x84\x32\x2B\x82\x1B\x9A\x2C\x80\x65\x8B\x24\x67\x8E\x68\x09\x80\x5C\x2C\x28\x67\x86\x7F\x86\x71\x89\x86\x8E\x64\x87\xCE\x73\x10\x41\x1E\x5F\x07\x81\x78\xB5\x61\x81\x23\x12\x7B\x6F\x62\x89\x96\x8A\x7C\x81\x7F\x37\xC8\x77\x89\x81\x75\x4D\x84\x8C\x89\x50\x8C\x10\xDE\x7B\x78\x53\x8B\x26\x94\x23\x48\x3A\x82\x76\x83\x47\x87\x57\x1A\x78\x9B\x6B\x26\x46\x28\x30\x54\x3C\x80\xA7\x87\x76\x58\x80\x73\xC4\x1C\x22\xB2\x82\x83\x3B\x84\x1C\x63\x81\x81\x76\x7D\x1E\xFA\x7F\x26\xFC\x7B\x87\x07\x85\x8B\x4E\x87\x8B\x76\x69\x20\x00\x84\x84\xBD\x89\x07\xBF\x8E\x8C\x62\x74\x49\x86\x78\x78\x1A\x87\x80\xCB\x26\x20\xD5\x45\x88\xCF\x86\x20\x01\x82\x80\x45\x8E\x78\x65\x77\x83\x24\x8D\x76\xD5\x13\x10\x94\x74\x80\x6C\x0F\x7B\x3E\x13\x10\xEB\x71\x7F\xF1\x7C\x7D\xB2\x7F\x79\x0C\x89\x8D\x48\x22\x8D\x8E\x63\x76\xDE\x88\x8F\x81\x84\x49\xE2\x86\x83\xE9\x24\x41\xA6\x70\x40\xEA\x8C\x8E\xE5\x7F\x8E\xC3\x74\x7D\xB1\x73\x12\xB4\x75\x8F\xE3\x83\x10\xDB\x85\x78\x18\x63\x48\xFB\x8E\x81\x53\x4E\x8F\xA3\x75\x76\x91\x77\x8E\xD7\x19\x40\x05\x95\x78\x99\x75\x7D\xE9\x71\x8F\xD8\x31\x78\x04\x2D\x86\xA1\x7F\x90\xC5\x4C\x8F\x88\x8A\x8F\x18\x1F\x8D\xBC\x83\x8D\x0B\x81\x78\xAE\x61\x83\xE0\x75\x81\xF7\x86\x91\xAA\x8A\x51\x15\x90\x8E\x17\x9B\x80\x88\x17\x7C\xD7\x82\x80\xF6\x83\x84\x3A\x99\x8F\x14\x9F\x92\x2C\x9F\x72\xB9\x4B\x3F\xA5\x8E\x2A\xCE\x27\x7E\x51\x83\x80\x5F\x38\x90\x67\x27\x7D\x22\x2D\x1A\xF0\x79\x90\xB0\x73\x38\xDD\x73\x94\xF7\x75\x94\x08\x11\x91\xD6\x7D\x8D\x4A\x97\x94\xFD\x8E\x94\x20\x92\x21\x52\x92\x7C\x54\x9D\x95\xBE\x72\x91\x27\x3E\x7E\x5B\x9F\x96\xF2\x7C\x37\x4D\x7F\x95\x0C\x16\x36\x02\x88\x93\x0C\x1F\x89\x4D\x79\x75\x4F\x90\x00\x92\x75\x62\xA9\x89\x8F\x59\x45\x10\xA1\x88\x10\x13\x0C\x80\x83\x97\x98\x09\x81\x47\x75\x82\x21\xFE\x5C\x8A\x09\x1E\x8A\x79\x8C\x10\xBB\x83\x10\xD1\x85\x96\x5B\x72\x99\x8B\x80\x95\x56\x52\x4E\xBA\x8C\x80\x59\x7D\x99\x02\x81\x8C\x96\x92\x10\xFF\x8B\x34\x67\x93\x8B\x68\x98\x88\xA0\x94\x7E\x8C\x8F\x35\xC7\x5F\x9A\xF7\x77\x9A\x97\x82\x87\x2D\x94\x8D\xA0\x83\x89\x18\x14\x01\xBB\x91\x81\x99\x84\x37\xC3\x90\x9C\x37\x13\x8A\x7C\x97\x7F\x7E\x92\x63\xA6\x94\x99\x71\x43\x98\x85\x94\x24\x90\x9D\x92\x89\x99\x10\xB2\x79\x78\x0E\x90\x90\x02\x16\x93\xCA\x73\x91\x3C\x98\x9B\xE0\x71\x8E\x19\x93\x82\x1B\x9C\x2A\xE8\x88\x3E", -"\x95\x7A\x90\xAA\x7B\x96\xC0\x72\x92\xF0\x8C\x95\x77\x9E\x95\xF3\x80\x96\xE0\x72\x96\x04\x1E\x9D\x6E\x86\x96\x0C\x10\x93\xE3\x9F\x93\xBA\x75\x9E\x48\x82\x90\x65\x77\x7A\xEB\x9B\x7D\x56\x96\x26\x21\x98\x97\x53\x90\x38\x55\x9D\x40\x81\x7D\x90\xD8\x8A\x92\x00\x0A\x9F\xDC\x8B\x93\x09\x2D\x93\x31\x99\x8F\x18\x98\x7B\x1A\x96\x8E\xE8\x9D\x91\xA9\x2F\x91\x81\x9C\x7A\xF0\x92\x9F\x24\x90\xA1\xB2\x77\x92\x0C\x8D\x9C\xF9\x9B\x94\x4C\x8E\x92\xFD\x90\xA3\x59\x84\x8D\x34\x9D\x64\x2D\xA4\xA1\x16\xA2\x97\x18\xA4\x1C\x1A\xAF\x9F\x32\x9E\x43\x90\x8D\x67\xC7\x9A\x98\x23\x1B\x89\x87\x87\x26\xF8\x90\x83\x34\xA8\x8B\x64\x73\xA3\xB1\x9C\x94\x0A\x80\x82\xEE\x9D\x8E\xD0\x72\x6C\x5F\x2D\xA0\xC4\x7C\xA0\x9E\x9E\x68\xD8\x75\x97\x0E\xA0\x97\x16\x2A\x97\x2E\x83\xA1\xDC\x95\xA1\x4D\xAB\x8C\x3E\xA2\x9E\xDF\x90\xA0\x1C\x23\x98\x52\x5D\x96\x23\x92\x9F\xCF\x37\xA1\x8E\x64\x97\x5A\xAF\xA0\x5C\xA8\x7F\xB2\x78\x67\x1D\x85\xA4\x80\xA1\x94\x23\x1A\x9D\x66\xA8\x84\x1C\x89\xA6\x97\x39\x45\x3F\xAD\xA6\x41\xAC\x21\xAD\x94\x8E\xE4\x87\x9E\x41\x29\x9E\x1C\x24\xA2\x73\x2B\xA0\xED\x9E\x96\x61\xA3\x9F\xD0\x1E\x79\xF6\x9A\x7C\x4B\xA2\x10\x7F\xAB\xA1\x81\x8A\xA8\x6C\xAB\x9F\x8D\xA5\x06\x8F\xA9\x2E\x91\xA5\x7A\x05\xA4\x90\xEC\x91\x97\x25\xAF\x9E\x7B\xA1\x9F\x76\x92\x8F\x0C\x9F\xA9\x8B\x71\xAA\x00\x03\xAA\x40\xA8\x98\x3E\x2B\xA8\xA8\xAC\xA1\x20\xA3\x27\xB9\x7E\xA8\x1C\x90\x00\xBC\x71\xAB\x16\x26\x90\xB5\x92\x10\x09\xAA\x8E\x26\x9F\x41\x39\xA7\xA6\xBE\xAC\xA8\xC0\xAD\x24\xC2\xA6\xA7\x69\x9E\x43\x46\xA7\x13\x35\x95\xAD\x86\xA3\x10\xD7\xA3\xAC\xA5\xA1\xAC\xA7\xAC\xAD\xBD\x90\x94\xDF\xAA\x14\x48\xAB\x9D\xE3\xA2\xAA\x88\xA0\x5C\xDB\xAC\xA3\xC4\xA4\xA5\xB3\xA6\xA5\xE6\x78\xA5\xD2\x79\xA7\x62\xAB\x8E\xF6\xA9\x80\x5F\xAE\xAF\x9C\xA3\xA6\xB2\x73\x8A\x49\xA6\x26\xBC\xA5\xAE\xEA\xA2\xA5\xF4\xA9\xAE\x01\xBB\xAE\xF8\xA7\xA9\x6C\x9C\xAF\x60\xAB\xA5\x99\xAC\x7E\x73\x97\x3B\x20\x17\xB1\x7A\xA4\x9F\x23\x1C\x1B\x17\x01\xA8\x96\x84\xA6\x04\x1B\x9C\x52\x82\x7E\x85\x73\x9D\x34\x15\x9D\x0E\xB9\x45\x81\x7C\x1B\x19\x04\xB2\x98\x8B\xA2\xD4\xA4\xB3\x82\xA7\x13\xBC\x10\x33\x38\xB5\x8D\xB2\x71\xAE\x34\xB1\xB3\x10\xBD\xB3\xD8\x93\xA8\xBA\xA6\x78\x63\x85\xAF\x5D\xAD\xAD\xC8\xAE\xA1\xE6\x95\xAC\x84\x24\xA9\x07\xA9\x7E\x75\xA5\xA5\x07\x97\xA2\x76\x99\xA2\x0B\x97\x13\xF4\x87\x80\x49\xB3\xB4\x1A\xB9\xAA\xAB\xA2\x1A\x4F\xBE\x43\x03\x9E\x6E\x96\xAF\x26\x98\xA2\xAB\x73\xA7\xAB\x25\x92\x7B\x12\xA2\x80\x5F\xB0\xA5\x3E\x92\xB6\x02\xAD\xAA\x01\xA1\xA2\xCA\xAE\x91\xCC\xA0\xB0\xF9\xA7\xB5\xB5\xA8\xA2\x74\xAF\xB6\x23\x1C\xA2\x07\x8C\x34\x60\xBF\x26\x45\x8D\xAE\x57\x10\xB4\x02\x88\xB8\x74\xB4\xAA\x12\xB7\x28\x39\xBE\xAE\x47\xB5\x78\x73\xB8\x10\xFE\x98\xAD\x4C\xB9\x29\x7F\xBF\xAC\xFB\xAD\x25\x59\xAA\xA9\x18\xBC\xB6\x8A\xB7\x32\x03\xB4\xBA\x1F\xBD\xA9\x07\xB7\xB9\x4D\x79\xB9\x04\x1B\xB9\xE6\xA3\xB9\x9E\xB4\xB1\x51\x96\xB1\x04\xB5\xB5\x4B\xB8\x88\x78\xAA\xBA\xFF\xA2\xB4\x9A\x94\xB4\x79\x96\xB3\x60\x8E\x98\x14\xAB\x99\xCA\x71\x8C\x8C\xB9\x10\x8E\xB7\x7F\x90\xB8\x10\xC8\xBB\x78\xCA\xB2\xBC\x92\x80", -}; - - void JsonGetParserBuffer(vl::stream::MemoryStream& stream) - { - vl::stream::MemoryStream compressedStream; - for (vint i = 0; i < parserBufferRows; i++) - { - vint size = i == parserBufferRows - 1 ? parserBufferRemain : parserBufferBlock; - compressedStream.Write((void*)parserBuffer[i], size); - } - compressedStream.SeekFromBegin(0); - vl::stream::LzwDecoder decoder; - vl::stream::DecoderStream decoderStream(compressedStream, decoder); - vl::collections::Array buffer(65536); - while (true) - { - vl::vint size = decoderStream.Read(&buffer[0], 65536); - if (size == 0) break; - stream.Write(&buffer[0], size); - } - stream.SeekFromBegin(0); - } -/*********************************************************************** -Unescaping Function Foward Declarations -***********************************************************************/ - - extern void JsonUnescapingString(vl::parsing::ParsingToken& value, const vl::collections::List& tokens); - -/*********************************************************************** -Parsing Tree Conversion Driver Implementation -***********************************************************************/ - - class JsonTreeConverter : public vl::parsing::ParsingTreeConverter - { - public: - using vl::parsing::ParsingTreeConverter::SetMember; - - bool SetMember(JsonLiteral::JsonValue& member, vl::Ptr node, const TokenList& tokens) - { - vl::Ptr token=node.Cast(); - if(token) - { - if(token->GetValue()==L"True") { member=JsonLiteral::JsonValue::True; return true; } - else if(token->GetValue()==L"False") { member=JsonLiteral::JsonValue::False; return true; } - else if(token->GetValue()==L"Null") { member=JsonLiteral::JsonValue::Null; return true; } - else { member=JsonLiteral::JsonValue::True; return false; } - } - member=JsonLiteral::JsonValue::True; - return false; - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - SetMember(tree->value, obj->GetMember(L"value"), tokens); - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - if(SetMember(tree->content, obj->GetMember(L"content"), tokens)) - { - JsonUnescapingString(tree->content, tokens); - } - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - SetMember(tree->content, obj->GetMember(L"content"), tokens); - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - SetMember(tree->items, obj->GetMember(L"items"), tokens); - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - if(SetMember(tree->name, obj->GetMember(L"name"), tokens)) - { - JsonUnescapingString(tree->name, tokens); - } - SetMember(tree->value, obj->GetMember(L"value"), tokens); - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - SetMember(tree->fields, obj->GetMember(L"fields"), tokens); - } - - vl::Ptr ConvertClass(vl::Ptr obj, const TokenList& tokens)override - { - if(obj->GetType()==L"Literal") - { - vl::Ptr tree = new JsonLiteral; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"String") - { - vl::Ptr tree = new JsonString; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"Number") - { - vl::Ptr tree = new JsonNumber; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"Array") - { - vl::Ptr tree = new JsonArray; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"ObjectField") - { - vl::Ptr tree = new JsonObjectField; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"Object") - { - vl::Ptr tree = new JsonObject; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else - return 0; - } - }; - - vl::Ptr JsonConvertParsingTreeNode(vl::Ptr node, const vl::collections::List& tokens) - { - JsonTreeConverter converter; - vl::Ptr tree; - converter.SetMember(tree, node, tokens); - return tree; - } - -/*********************************************************************** -Parsing Tree Conversion Implementation -***********************************************************************/ - - vl::Ptr JsonLiteral::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return JsonConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr JsonString::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return JsonConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr JsonNumber::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return JsonConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr JsonArray::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return JsonConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr JsonObjectField::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return JsonConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr JsonObject::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return JsonConvertParsingTreeNode(node, tokens).Cast(); - } - -/*********************************************************************** -Parser Function -***********************************************************************/ - - vl::Ptr JsonParseAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) - { - vl::parsing::tabling::ParsingState state(input, table, codeIndex); - state.Reset(L"JRoot"); - vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); - vl::Ptr node=parser->Parse(state, errors); - return node; - } - - vl::Ptr JsonParseAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) - { - vl::collections::List> errors; - return JsonParseAsParsingTreeNode(input, table, errors, codeIndex); - } - - vl::Ptr JsonParse(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) - { - vl::parsing::tabling::ParsingState state(input, table, codeIndex); - state.Reset(L"JRoot"); - vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); - vl::Ptr node=parser->Parse(state, errors); - if(node && errors.Count()==0) - { - return JsonConvertParsingTreeNode(node, state.GetTokens()).Cast(); - } - return 0; - } - - vl::Ptr JsonParse(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) - { - vl::collections::List> errors; - return JsonParse(input, table, errors, codeIndex); - } - -/*********************************************************************** -Table Generation -***********************************************************************/ - - vl::Ptr JsonLoadTable() - { - vl::stream::MemoryStream stream; - JsonGetParserBuffer(stream); - vl::Ptr table=new vl::parsing::tabling::ParsingTable(stream); - table->Initialize(); - return table; - } - - } - } -} - - -/*********************************************************************** -.\PARSING\XML\PARSINGXML.CPP -***********************************************************************/ - -namespace vl -{ - namespace parsing - { - namespace xml - { - using namespace stream; - using namespace collections; - using namespace regex; - -/*********************************************************************** -Unescaping Function Foward Declarations -***********************************************************************/ - - void XmlMergeTextFragment(vl::collections::List>& value, const vl::collections::List& tokens) - { - vint begin=-1; - vint end=-1; - for(vint i=value.Count()-1;i>=-1;i--) - { - if(i==-1) - { - if(end!=-1) begin=0; - } - else if(value[i].Cast()) - { - if(end==-1) end=i; - } - else - { - if(end!=-1) begin=i+1; - } - if(begin!=-1 && end!=-1) - { - vint tokenBegin=value[begin].Cast()->content.tokenIndex; - vint tokenEnd=value[end].Cast()->content.tokenIndex; - while(tokenBegin>0) - { - if(tokens.Get(tokenBegin-1).token==(vint)XmlParserTokenIndex::SPACE || tokens.Get(tokenBegin-1).token==-1) - { - tokenBegin--; - } - else - { - break; - } - } - while(tokenEnd xmlText=new XmlText; - xmlText->codeRange=range; - xmlText->content.codeRange=range; - xmlText->content.value=XmlUnescapeValue(text); - - value.RemoveRange(begin, end-begin+1); - value.Insert(begin, xmlText); - - begin=-1; - end=-1; - } - } - } - - void XmlUnescapeAttributeValue(vl::parsing::ParsingToken& value, const vl::collections::List& tokens) - { - value.value=XmlUnescapeValue(value.value.Sub(1, value.value.Length()-2)); - } - - void XmlUnescapeCData(vl::parsing::ParsingToken& value, const vl::collections::List& tokens) - { - value.value=XmlUnescapeCData(value.value); - } - - void XmlUnescapeComment(vl::parsing::ParsingToken& value, const vl::collections::List& tokens) - { - value.value=XmlUnescapeComment(value.value); - } - -/*********************************************************************** -XmlPrintVisitor -***********************************************************************/ - - class XmlPrintVisitor : public Object, public XmlNode::IVisitor - { - public: - TextWriter& writer; - - XmlPrintVisitor(TextWriter& _writer) - :writer(_writer) - { - } - - void Visit(XmlText* node) - { - writer.WriteString(XmlEscapeValue(node->content.value)); - } - - void Visit(XmlCData* node) - { - writer.WriteString(XmlEscapeCData(node->content.value)); - } - - void Visit(XmlAttribute* node) - { - writer.WriteString(node->name.value); - writer.WriteString(L"=\""); - writer.WriteString(XmlEscapeValue(node->value.value)); - writer.WriteString(L"\""); - } - - void Visit(XmlComment* node) - { - writer.WriteString(XmlEscapeComment(node->content.value)); - } - - void Visit(XmlElement* node) - { - writer.WriteChar(L'<'); - writer.WriteString(node->name.value); - FOREACH(Ptr, att, node->attributes) - { - writer.WriteChar(L' '); - att->Accept(this); - } - if(node->subNodes.Count()==0) - { - writer.WriteString(L"/>"); - } - else - { - writer.WriteChar(L'>'); - FOREACH(Ptr, subNode, node->subNodes) - { - subNode->Accept(this); - } - writer.WriteString(L"name.value); - writer.WriteChar(L'>'); - } - } - - void Visit(XmlInstruction* node) - { - writer.WriteString(L"name.value); - FOREACH(Ptr, att, node->attributes) - { - writer.WriteChar(L' '); - att->Accept(this); - } - writer.WriteString(L"?>"); - } - - void Visit(XmlDocument* node) - { - FOREACH(Ptr, prolog, node->prologs) - { - prolog->Accept(this); - } - node->rootElement->Accept(this); - } - }; - -/*********************************************************************** -API -***********************************************************************/ - - WString XmlEscapeValue(const WString& value) - { - WString result; - const wchar_t* reading=value.Buffer(); - while(wchar_t c=*reading++) - { - switch(c) - { - case L'<': - result+=L"<"; - break; - case L'>': - result+=L">"; - break; - case L'&': - result+=L"&"; - break; - case L'\'': - result+=L"'"; - break; - case L'\"': - result+=L"""; - break; - default: - result+=c; - } - } - return result; - } - - WString XmlUnescapeValue(const WString& value) - { - WString result; - const wchar_t* reading=value.Buffer(); - while(*reading) - { - if(wcsncmp(reading, L"<", 4)==0) - { - result+=L'<'; - reading+=4; - } - else if(wcsncmp(reading, L">", 4)==0) - { - result+=L'>'; - reading+=4; - } - else if(wcsncmp(reading, L"&", 5)==0) - { - result+=L'&'; - reading+=5; - } - else if(wcsncmp(reading, L"'", 6)==0) - { - result+=L'\''; - reading+=6; - } - else if(wcsncmp(reading, L""", 6)==0) - { - result+=L'\"'; - reading+=6; - } - else - { - result+=*reading++; - } - } - return result; - } - - WString XmlEscapeCData(const WString& value) - { - return L""; - } - - WString XmlUnescapeCData(const WString& value) - { - return value.Sub(9, value.Length()-12); - } - - WString XmlEscapeComment(const WString& value) - { - return L""; - } - - WString XmlUnescapeComment(const WString& value) - { - return value.Sub(4, value.Length()-7); - } - - void XmlPrint(Ptr node, stream::TextWriter& writer) - { - XmlPrintVisitor visitor(writer); - node->Accept(&visitor); - } - - void XmlPrintContent(Ptr element, stream::TextWriter& writer) - { - XmlPrintVisitor visitor(writer); - FOREACH(Ptr, node, element->subNodes) - { - node->Accept(&visitor); - } - } - - WString XmlToString(Ptr node) - { - return GenerateToStream([&](StreamWriter& writer) - { - XmlPrint(node, writer); - }); - } - -/*********************************************************************** -Linq To Xml -***********************************************************************/ - - Ptr XmlGetAttribute(Ptr element, const WString& name) - { - return XmlGetAttribute(element.Obj(), name); - } - - Ptr XmlGetElement(Ptr element, const WString& name) - { - return XmlGetElement(element.Obj(), name); - } - - collections::LazyList> XmlGetElements(Ptr element) - { - return XmlGetElements(element.Obj()); - } - - collections::LazyList> XmlGetElements(Ptr element, const WString& name) - { - return XmlGetElements(element.Obj(), name); - } - - WString XmlGetValue(Ptr element) - { - return XmlGetValue(element.Obj()); - } - - Ptr XmlGetAttribute(XmlElement* element, const WString& name) - { - FOREACH(Ptr, att, element->attributes) - { - if(att->name.value==name) - { - return att; - } - } - return 0; - } - - Ptr XmlGetElement(XmlElement* element, const WString& name) - { - FOREACH(Ptr, node, element->subNodes) - { - Ptr subElement=node.Cast(); - if(subElement && subElement->name.value==name) - { - return subElement; - } - } - return 0; - } - - collections::LazyList> XmlGetElements(XmlElement* element) - { - return From(element->subNodes) - .FindType(); - } - - collections::LazyList> XmlGetElements(XmlElement* element, const WString& name) - { - return From(element->subNodes) - .FindType() - .Where([name](Ptr e){return e->name.value==name;}); - } - - WString XmlGetValue(XmlElement* element) - { - WString result; - FOREACH(Ptr, node, element->subNodes) - { - if(Ptr text=node.Cast()) - { - result+=text->content.value; - } - else if(Ptr text=node.Cast()) - { - result+=text->content.value; - } - } - return result; - } - -/*********************************************************************** -XmlElementWriter -***********************************************************************/ - - XmlElementWriter::XmlElementWriter(Ptr _element, const XmlElementWriter* _previousWriter) - :element(_element) - ,previousWriter(_previousWriter) - { - } - - XmlElementWriter::~XmlElementWriter() - { - } - - const XmlElementWriter& XmlElementWriter::Attribute(const WString& name, const WString& value)const - { - Ptr node=new XmlAttribute; - node->name.value=name; - node->value.value=value; - element->attributes.Add(node); - return *this; - } - - XmlElementWriter XmlElementWriter::Element(const WString& name)const - { - Ptr node=new XmlElement; - node->name.value=name; - element->subNodes.Add(node); - return XmlElementWriter(node, this); - } - - const XmlElementWriter& XmlElementWriter::End()const - { - return *previousWriter; - } - - const XmlElementWriter& XmlElementWriter::Text(const WString& value)const - { - Ptr node=new XmlText; - node->content.value=value; - element->subNodes.Add(node); - return *this; - } - - const XmlElementWriter& XmlElementWriter::CData(const WString& value)const - { - Ptr node=new XmlCData; - node->content.value=value; - element->subNodes.Add(node); - return *this; - } - - const XmlElementWriter& XmlElementWriter::Comment(const WString& value)const - { - Ptr node=new XmlComment; - node->content.value=value; - element->subNodes.Add(node); - return *this; - } - } - } -} - - -/*********************************************************************** -.\PARSING\XML\PARSINGXML_AST.CPP -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parser::ParsingXml.parser.txt - -This file is generated by: Vczh Parser Generator -***********************************************************************/ - - -namespace vl -{ - namespace parsing - { - namespace xml - { -/*********************************************************************** -Visitor Pattern Implementation -***********************************************************************/ - - void XmlText::Accept(XmlNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void XmlCData::Accept(XmlNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void XmlAttribute::Accept(XmlNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void XmlComment::Accept(XmlNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void XmlElement::Accept(XmlNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void XmlInstruction::Accept(XmlNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - void XmlDocument::Accept(XmlNode::IVisitor* visitor) - { - visitor->Visit(this); - } - - } - } -} -namespace vl -{ - namespace reflection - { - namespace description - { -#ifndef VCZH_DEBUG_NO_REFLECTION - using namespace vl::parsing::xml; - -#define PARSING_TOKEN_FIELD(NAME)\ - CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(get_##NAME, NO_PARAMETER, vl::WString(ClassType::*)(), [](ClassType* node) { return node->NAME.value; }, L"*", L"*")\ - CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(set_##NAME, { L"value" }, void(ClassType::*)(const vl::WString&), [](ClassType* node, const vl::WString& value) { node->NAME.value = value; }, L"*", L"*")\ - CLASS_MEMBER_PROPERTY_REFERENCETEMPLATE(NAME, get_##NAME, set_##NAME, L"$This->$Name.value")\ - - IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlNode, system::XmlNode) - IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlText, system::XmlText) - IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlCData, system::XmlCData) - IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlAttribute, system::XmlAttribute) - IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlComment, system::XmlComment) - IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlElement, system::XmlElement) - IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlInstruction, system::XmlInstruction) - IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlDocument, system::XmlDocument) - IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlNode::IVisitor, system::XmlNode::IVisitor) - - BEGIN_CLASS_MEMBER(XmlNode) - CLASS_MEMBER_METHOD_OVERLOAD(Accept, {L"visitor"}, void(XmlNode::*)(XmlNode::IVisitor* visitor)) - END_CLASS_MEMBER(XmlNode) - - BEGIN_CLASS_MEMBER(XmlText) - CLASS_MEMBER_BASE(XmlNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - PARSING_TOKEN_FIELD(content) - END_CLASS_MEMBER(XmlText) - - BEGIN_CLASS_MEMBER(XmlCData) - CLASS_MEMBER_BASE(XmlNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - PARSING_TOKEN_FIELD(content) - END_CLASS_MEMBER(XmlCData) - - BEGIN_CLASS_MEMBER(XmlAttribute) - CLASS_MEMBER_BASE(XmlNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - PARSING_TOKEN_FIELD(name) - PARSING_TOKEN_FIELD(value) - END_CLASS_MEMBER(XmlAttribute) - - BEGIN_CLASS_MEMBER(XmlComment) - CLASS_MEMBER_BASE(XmlNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - PARSING_TOKEN_FIELD(content) - END_CLASS_MEMBER(XmlComment) - - BEGIN_CLASS_MEMBER(XmlElement) - CLASS_MEMBER_BASE(XmlNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - PARSING_TOKEN_FIELD(name) - PARSING_TOKEN_FIELD(closingName) - CLASS_MEMBER_FIELD(attributes) - CLASS_MEMBER_FIELD(subNodes) - END_CLASS_MEMBER(XmlElement) - - BEGIN_CLASS_MEMBER(XmlInstruction) - CLASS_MEMBER_BASE(XmlNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - PARSING_TOKEN_FIELD(name) - CLASS_MEMBER_FIELD(attributes) - END_CLASS_MEMBER(XmlInstruction) - - BEGIN_CLASS_MEMBER(XmlDocument) - CLASS_MEMBER_BASE(XmlNode) - - CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) - - CLASS_MEMBER_FIELD(prologs) - CLASS_MEMBER_FIELD(rootElement) - END_CLASS_MEMBER(XmlDocument) - - BEGIN_INTERFACE_MEMBER(XmlNode::IVisitor) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlText* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlCData* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlAttribute* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlComment* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlElement* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlInstruction* node)) - CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlDocument* node)) - END_INTERFACE_MEMBER(XmlNode) - -#undef PARSING_TOKEN_FIELD - - class XmlTypeLoader : public vl::Object, public ITypeLoader - { - public: - void Load(ITypeManager* manager) - { - ADD_TYPE_INFO(vl::parsing::xml::XmlNode) - ADD_TYPE_INFO(vl::parsing::xml::XmlText) - ADD_TYPE_INFO(vl::parsing::xml::XmlCData) - ADD_TYPE_INFO(vl::parsing::xml::XmlAttribute) - ADD_TYPE_INFO(vl::parsing::xml::XmlComment) - ADD_TYPE_INFO(vl::parsing::xml::XmlElement) - ADD_TYPE_INFO(vl::parsing::xml::XmlInstruction) - ADD_TYPE_INFO(vl::parsing::xml::XmlDocument) - ADD_TYPE_INFO(vl::parsing::xml::XmlNode::IVisitor) - } - - void Unload(ITypeManager* manager) - { - } - }; -#endif - - bool XmlLoadTypes() - { -#ifndef VCZH_DEBUG_NO_REFLECTION - ITypeManager* manager=GetGlobalTypeManager(); - if(manager) - { - Ptr loader=new XmlTypeLoader; - return manager->AddTypeLoader(loader); - } -#endif - return false; - } - } - } -} - - -/*********************************************************************** -.\PARSING\XML\PARSINGXML_PARSER.CPP -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parser::ParsingXml.parser.txt - -This file is generated by: Vczh Parser Generator -***********************************************************************/ - - -namespace vl -{ - namespace parsing - { - namespace xml - { -/*********************************************************************** -ParserText -***********************************************************************/ - -const wchar_t* const parserTextBuffer[] = { - L"" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"// AST" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"" L"\r\n" -, L"class Node" L"\r\n" -, L"{" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class Text : Node" L"\r\n" -, L"{" L"\r\n" -, L"\ttoken content;" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class CData : Node" L"\r\n" -, L"{" L"\r\n" -, L"\ttoken content (XmlUnescapeCData);" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class Attribute : Node" L"\r\n" -, L"{" L"\r\n" -, L"\ttoken name\t\t\t\t\t\t\t\t\t@Color(\"AttName\");" L"\r\n" -, L"\ttoken value (XmlUnescapeAttributeValue)\t\t@Color(\"AttValue\");" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class Comment : Node" L"\r\n" -, L"{" L"\r\n" -, L"\ttoken content (XmlUnescapeComment);" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class Element : Node" L"\r\n" -, L"{" L"\r\n" -, L"\ttoken name\t\t\t\t\t\t\t\t\t@Color(\"TagName\");" L"\r\n" -, L"\ttoken closingName\t\t\t\t\t\t\t@Color(\"TagName\");" L"\r\n" -, L"\tAttribute[] attributes;" L"\r\n" -, L"\tNode[] subNodes (XmlMergeTextFragment);" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class Instruction : Node" L"\r\n" -, L"{" L"\r\n" -, L"\ttoken name\t\t\t\t\t\t\t\t\t@Color(\"TagName\");" L"\r\n" -, L"\tAttribute[] attributes;" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"class Document : Node" L"\r\n" -, L"{" L"\r\n" -, L"\tNode[] prologs;" L"\r\n" -, L"\tElement rootElement;" L"\r\n" -, L"}" L"\r\n" -, L"" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"// Lexer" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"" L"\r\n" -, L"token INSTRUCTION_OPEN = \"/\"\t\t@Color(\"Boundary\");" L"\r\n" -, L"token COMPLEX_ELEMENT_OPEN = \"/\"\t\t@Color(\"Boundary\");" L"\r\n" -, L"token ELEMENT_OPEN = \"/<\"\t\t\t\t@Color(\"Boundary\");" L"\r\n" -, L"token ELEMENT_CLOSE = \"/>\"\t\t\t\t@Color(\"Boundary\");" L"\r\n" -, L"token EQUAL = \"/=\";" L"\r\n" -, L"" L"\r\n" -, L"token NAME = \"[a-zA-Z0-9:._/-]+\"\t\t\t\t\t\t\t\t@ContextColor();" L"\r\n" -, L"token ATTVALUE = \"\"\"[^<>\"\"]*\"\"|\'[^<>\']*\'\"\t\t\t\t\t\t@ContextColor();" L"\r\n" -, L"token COMMENT = \"/]|-[^/->]|--[^>])*--/>\"\t\t\t@Color(\"Comment\");" L"\r\n" -, L"token CDATA = \"/])*/]/]/>\";" L"\r\n" -, L"token TEXT = \"([^<>=\"\"\' /r/n/ta-zA-Z0-9:._/-])+|\"\"|\'\";" L"\r\n" -, L"" L"\r\n" -, L"discardtoken SPACE = \"/s+\";" L"\r\n" -, L"" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"// Rules" L"\r\n" -, L"//////////////////////////////////////////////////////////////////" L"\r\n" -, L"" L"\r\n" -, L"rule Attribute XAttribute = NAME:name \"=\" ATTVALUE:value as Attribute;" L"\r\n" -, L"rule Text XText = (NAME:content | EQUAL:content | ATTVALUE:content | TEXT:content) as Text;" L"\r\n" -, L"rule CData XCData = CDATA:content as CData;" L"\r\n" -, L"rule Comment XComment = COMMENT:content as Comment;" L"\r\n" -, L"rule Element XElement = \"<\" NAME:name {XAttribute:attributes} (\"/>\" | \">\" {XSubNode:subNodes} \"\") as Element;" L"\r\n" -, L"rule Node XSubNode = !XText | !XCData | !XComment | !XElement;" L"\r\n" -, L"rule Instruction XInstruction = \"\" as Instruction;" L"\r\n" -, L"rule Document XDocument = {XInstruction:prologs | XComment:prologs} XElement:rootElement as Document;" L"\r\n" -}; -const vint lengthTextBuffer[] = { - 2, 68, 8, 68, 2, 12, 3, 3, 2, 19, 3, 17, 3, 2, 20, 3, 36, 3, 2, 24, 3, 40, 63, 3, 2, 22, 3, 38, 3, 2, 22, 3 -, 40, 45, 26, 42, 3, 2, 26, 3, 40, 26, 3, 2, 23, 3, 18, 23, 3, 2, 68, 10, 68, 2, 55, 55, 58, 58, 50, 51, 21, 2, 58, 65 -, 75, 63, 56, 2, 29, 2, 68, 10, 68, 2, 72, 93, 45, 53, 134, 64, 93, 103 -}; -const vint lengthTextBufferTotal = 2487; - - vl::WString XmlGetParserTextBuffer() - { - vl::collections::Array textBuffer(lengthTextBufferTotal + 1); - wchar_t* reading = &textBuffer[0]; - for(vint i = 0; i < sizeof(parserTextBuffer) / sizeof(*parserTextBuffer); i++) - { - memcpy(reading, parserTextBuffer[i], lengthTextBuffer[i] * sizeof(wchar_t)); - reading += lengthTextBuffer[i]; - } - *reading = 0; - return &textBuffer[0]; - } - -/*********************************************************************** -SerializedTable -***********************************************************************/ - -const vint parserBufferLength = 4440; // 18926 bytes before compressing -const vint parserBufferBlock = 1024; -const vint parserBufferRemain = 344; -const vint parserBufferRows = 5; -const char* const parserBuffer[] = { -"\x00\x0E\x00\x02\x83\x80\x07\x7D\x00\x82\x03\xFF\x45\x08\x82\x83\x86\x81\x21\x6F\x6C\x2F\x32\x37\x84\x87\x02\x86\x00\x17\x82\x81\x24\x3C\x3A\x27\x30\x6D\x65\x06\x98\x8A\x80\x8E\x86\x00\x10\x92\x94\x98\x88\x04\x97\x80\x8E\x74\x56\x21\x2C\x35\x3A\x91\x8A\x84\x25\x8C\xA7\x89\x93\x8F\x98\x82\x8D\x08\xC0\x94\x21\x37\x37\x8D\x91\x91\x0C\xB9\x88\x9B\x91\x8D\x9C\x8C\xA0\x3F\x83\x83\xA5\xA0\x96\x98\x93\x93\x04\xCC\xAA\x9E\x93\x80\xA9\xAE\xA9\x44\xC6\x96\xA9\xA8\xAB\x82\xAC\xA7\x0C\xAD\xA9\xA3\x82\x27\x35\x3A\x37\x64\x61\x32\x39\x38\xA0\x9D\xB3\x86\x03\xBC\xAB\x8B\xBC\xB8\x01\xB7\xB7\x71\xF3\xB5\xA4\x8A\xA1\xAD\xBD\xA6\x7B\x88\xAA\xAA\xCC\xB6\xB4\xB8\xB9\x74\xDC\x82\x85\xC6\xB7\xC3\xAC\x97\x7D\xFF\x8F\xC2\xC2\xCD\x83\xBA\x00\x67\x89\xC4\x8B\xC3\xD5\xC4\xC0\xC8\x83\x89\x9F\xC1\xDD\xCC\xD3\x81\xC5\x9A\x81\xD1\xC4\x9C\x00\x8D\xDB\x87\x6F\x6E\x34\x25\x38\x3C\x3A\xBC\x8C\x05\x9D\xFF\x77\xD8\x84\xE0\x88\xDD\xBC\xBE\xC8\xC0\xE9\xD3\xCB\xD4\xCB\x68\xC1\x8F\xA7\xCD\x31\x92\xDC\xD7\x02\x89\x18\x9A\xEB\x8D\x8E\x39\x34\x62\x75\x3B\xDF\x74\xF5\xF0\xF3\xE7\x0F\xC4\x21\x34\x31\x36\xF2\xF2\xAF\x02\xC0\x90\x95\xE5\x32\xDE\xF7\xF2\xD8\x80\x0B\xC4\x2F\x33\x31\x3A\xEB\x74\x37\x74\x78\x7C\x19\x43\x45\x10\x1B\x65\x00\x82\x83\x3F\x0B\x18\x4D\x82\x40\x49\x2E\x13\x1C\x1D\x72\x35\x13\x18\x1D\x69\x39\x6B\x80\x01\x18\x5C\x82\x42\x13\x6F\x24\x12\x4A\x80\x1E\x88\x45\x88\x15\xC9\x4B\x8D\x03\x76\x2C\x9D\x74\x84\x78\xE2\x65\x15\x88\x41\x25\xAE\x15\x54\x70\xDC\x48\x49\x8C\x4C\xDF\x61\x7B\x6C\x7A\x00\x36\x13\x4D\x4D\x9D\x40\x93\x12\x7A\xEC\x44\x80\x53\x18\xB9\x7B\x66\x7E\x80\x4A\x94\x70\x81\x94\x02\x4C\x98\x73\x93\xF7\x79\x7B\x7D\x7F\xFF\x75\x74\x1C\x95\x00\x30\x12\x1D\x53\x67\x33\x1B\x82\x96\x03\x7C\x7E\x7C\x80\x0F\x88\x4D\x9B\x98\x6F\x34\x17\x81\x82\x5E\x8B\x80\x9B\x9C\x00\x8A\x08\x46\x9E\x02\x6B\x7F\x8A\x8F\x65\x26\x90\x97\x74\x02\x78\x9E\x95\x9B\x04\x6D\x93\x1A\x44\x73\x29\x1E\x18\x55\x21\x43\x04\xA2\x74\x85\x88\x80\x83\x8C\x03\x75\x85\x56\x00\x93\x91\x55\xA4\x9D\xD7\x58\x60\x03\x1C\x75\x22\x10\x8A\x88\x82\xB7\x78\xA3\x40\x6D\x91\x83\x85\x85\x17\x99\x8E\x18\x9F\x08\x74\xAE\x9D\x8F\x31\xA9\xAE\x7B\xAA\x02\x6D\xA2\x84\x85\x16\x98\x89\x6C\xA6\x02\x5A\xA1\x48\xB1\x00\x08\xB7\x89\x72\x60\x96\x9E\x91\x80\x02\x90\x08\x45\x0C\x18\x52\xB0\x73\xB5\x38\x4B\x82\x80\xB6\x49\x5A\xB7\x7C\xB7\xD9\x9E\xB6\x78\xB8\x84\x62\xB6\x7A\xB5\x08\x68\xB9\x12\x13\x53\x14\x12\x15\x15\x43\x14\x19\x13\x13\x4E\x1F\x1F\x10\x14\x45\x0E\x1A\xB3\x40\x2F\x3C\x0F\x0B\x0F\xC0\x5F\x61\x04\x46\x03\xD0\x8C\xBA\xBB\xF0\xB2\xB4\xBF\x17\x43\x0C\x1F\x13\x14\x45\x3B\xB2\x43\xBF\x2F\x3E\x0D\x66\x01\x18\x54\x09\xC5\x5E\x4F\x0D\x10\x14\x13\x45\x18\x1F\x15\x11\x20\xCD\x19\xBC\x15\xF6\xB8\xBA\xBD\x87\xFC\xBE\xBF\x08\xA7\x16\x5B\xCC\x42\xC6\x02\x53\x1B\xBB\x11\x20\xE3\xC5\xCB\xC9\x0C\xCE\xC0\xC6\xC4\x00\x2F\x02\xD2\x0F\x92\xBD\x54\x40\x71\x47\xC6\x8B\xCE\x13\x28\xF7\xB9\xBC\xCC\x08\x50\xDD\xBC\xB2\x39\x84\x4B\x88\x43\x57\xC0\x04\xC9\x11\x26\xCC\xDD\xCF\xC3\x45\x10\xD4\x42\xD4\x3E\x1F\x64\xAE\x61\x3A\x46\x81\x15\x15\x41\x0C\x12\xDB\x40\x52\xFD\x08\xC5\xB7\xF7\x40\xDE\x11\x10\x26\xC5\xC8\x42\xDE\x5B\x21\x1D\x0A\x1E\x41\x2D\x0A\x14\x0C\x2D\x39\x0A\x0E\x0B\x5F\x2F\x0D\x09\x17\x2B\x04\x8C\xAE\x7E\xA2\x81\x14\x14\x15\x56\x2D\xD5\x15\x11\x13\x18\x49\xE6\x40\x22\x1B\x1E\x14\x0F\x3E\x22\x0D\x16\x0A\x22\x3C\x17\x0A\xE7\xA0\xE7\x03\xEB\x09\xF9\x48\xDF\x55\xCC\x0F\x5D\xCD\xD4\x15\x22\x18\x45\xEF\xC4\xFE\xA1\x0D\x09\x0B\x28\x1E\xEA\xE2\x0F\x5D\x3C\x1D\x0A\xEF\x2D\x00\xF2\xF3\xF0\x5E\x00\xF9\x0A\x0A\xBB\xD5\xC5\xD7\x40\x59\xE8\xDB\x51\x5E\x44\x12\xE1\x10\x0B\x18\x58\xF8\xEF\x0B\x21\x2F\x0B\x17\x91\xD6\xDE\xFD\xEE\x17\x2F\x1D\x11\xF1\xF9\xBE\xE6\xFC\x1D\xF9\xE8\xC9\xFD\x17\xF2\xEC\xDD\x15\xC7\xD9\x09\x64\x8C\xCA\x40\x54\x21\xC4\x14\x09\x18\x7C\xF2\x43\xF8\xA0\x7D\x06\x08\x27\x00\x05\x17\x32\x0F\x05\x6E\x0F\x04\x7B\x7F\x61\x71\xC1\x45\x77\x70\x89\x6B\x71\x0A\x2B\x0C\x0F\xD2\x67\x07\x71\x0B\x45\x4A\x49\x03\x23\x0A\x28\x01\x0B\x08\x45\x05\x68\x42\x22\x8F\x05\x39\x2B\x06\x75\x93\x22\x40\xB5\x0C\x24\x7E\x81\x34\x50\x0B\x3C\x50\x47\x6E\x34\x68\x20\x1A\xB0\x86\x3B\x32\x85\x0E\x0B\x52\x0F\x0D\x38\x53\x0C\x3D\x72\x14\x0F\x03\x18\x23\x88", -"\x81\x00\x08\x04\x24\x1C\x07\x0D\xFF\x41\x46\x1F\x2D\x80\x00\x2F\x91\x84\xA0\x68\x54\x20\x74\x4B\x88\x57\xBB\x2E\x07\x0F\xF2\x24\x0F\x80\x0C\x26\x8B\x00\x07\x8A\x12\xD2\x8D\x89\x27\x91\x88\x87\x80\x48\x84\x00\x44\x37\x8B\x1C\xAE\x01\x06\x3C\x18\x21\x1C\x82\x23\x8C\x34\x8D\x8A\x07\x20\x17\x6E\xC9\x20\x08\x8E\x1B\x61\x27\x88\x22\x02\x80\x08\x12\x74\x72\xCB\x45\x0C\x8F\x20\x02\x48\x4D\x65\x00\x05\x30\x33\x0B\x90\x76\x9B\x36\x19\x83\x2D\x8D\x34\xB6\x34\x92\x64\x99\x8A\x0C\x73\x88\x20\x4E\xB5\x8C\x89\xBB\x3E\x04\x1E\xFA\x87\x91\x3E\x95\x28\x04\x81\x82\x07\x11\x84\x95\x72\x26\x17\x70\x91\x8A\x95\x25\x23\x8F\x99\x93\x32\x13\x92\x20\x95\x91\x46\x1A\xEC\x85\x96\x17\x33\x04\x93\x04\x3E\x91\x2E\xA1\x93\x94\xBC\x65\x90\x04\x7E\x8C\x91\x2A\x83\x93\x73\x56\xAF\x90\x8F\xB1\x8C\x92\x23\x90\x90\x95\x32\x00\x0F\x96\x00\x03\x99\x19\x12\x08\x22\x6E\xB8\x95\x97\x3C\x91\x4D\x11\x70\x25\x88\x84\x25\x99\x89\xDA\x9E\x04\x08\x40\x08\x4C\x5C\x86\x52\x37\xD8\x98\x0B\x3B\xF4\x0E\x04\x19\x0E\x02\x32\xF7\x94\x8E\x3C\x96\x5E\x4A\x51\xA8\x94\x07\x22\x19\x8E\x31\x88\x99\x99\x23\xBB\x08\x04\xDA\x88\x93\xAD\x39\x8F\x91\x3E\x20\x00\x05\xA8\x95\x61\x40\xFC\x08\x95\xD0\x60\x07\xA0\x58\x13\x09\xA9\x27\x5C\x90\x3C\xA4\x56\x54\x21\x41\x50\x08\x0E\xA2\x04\x7F\x41\xA4\x94\x88\x8B\x53\x1B\x0D\x5F\x50\xB1\x15\xA1\xA0\x29\x13\x94\x08\x73\x9D\x00\x05\x0A\x8B\x9E\xFE\x85\xA7\x49\x83\xA6\x95\x90\x2B\x98\xA3\xB5\x8A\xA1\x24\xA2\xAE\xA0\x88\xA2\x02\xA2\x20\x14\xA2\x08\x16\xA8\xA2\x8D\xA0\xA2\x44\x88\x9F\xA0\x47\x8D\xAF\x9F\x17\x3B\xA3\x8F\x78\x8A\xA4\x4B\x90\x5A\x98\x8B\xB1\xA3\x9A\xF3\x9B\x94\x25\xAE\x50\x59\x58\x79\x30\x8C\x04\x20\x8C\x16\x64\xA0\x56\x61\x6E\x0D\x9E\xA4\x18\x21\x5C\xFA\x9C\xAD\x60\x72\x51\xA7\x3C\x1F\x07\x55\xC7\x95\xA1\x8B\x88\xA1\xA8\x78\x8B\xA0\xA0\x54\xA2\x05\x1F\x16\xA3\x9A\x75\xA6\xAE\x1B\x35\xAA\x89\xC4\xAE\xA8\xAF\x7A\xA2\xA0\x56\xC8\x97\x94\x20\x00\xAB\xA8\x42\xB5\x98\x61\x86\xB1\xA0\xC4\xBF\x55\xAD\xB2\x4D\x9D\x36\xF3\x91\x9F\x79\xAE\x04\x06\xF9\x88\x21\x6A\xB7\xAC\x9E\xDD\x38\xAB\xAF\x04\xA7\x97\x65\xD5\x99\xB2\x2C\x84\xAF\xA1\x11\xB6\xA2\x52\xA1\x76\xA0\x84\x8E\xAC\xA3\x51\xBB\xA1\x48\x84\xB6\xA4\xC9\x87\x9A\xAB\x8E\x5C\xAB\x4B\xA0\x0F\xAB\x47\xB4\xA6\xA6\xFB\x80\x54\x1D\x2F\xB6\xB9\xD8\xBE\xA3\xB6\xB6\xB5\xB4\x43\xA3\xA8\xB7\xA3\xBA\xB3\xB9\x96\xBE\xB6\x70\xD0\xAE\xA3\xF1\xB7\xB5\xA4\x56\xB5\xB9\x56\x8C\x59\xB8\x97\x8B\xA8\xA6\x32\xB3\x9E\x68\xD1\xB9\x4F\x3D\x54\x96\xB4\x33\x06\x10\x46\x7A\xBA\x9E\x9C\xB8\x8A\xA7\xEA\xB4\xB3\x75\xFF\xA8\xB3\xC0\x83\xAC\xAA\x46\xA8\xAB\x6E\x81\xAD\xA8\xF3\x81\xBF\xA9\xE7\xA5\xB8\x4A\xEB\xBB\xA5\xF6\xA7\x97\xBD\xCC\xB1\xBD\x6B\xF4\x00\x08\xB1\xB8\x96\xB1\xB2\x48\xAF\x40\x6A\xA0\xC5\xDC\x3E\x91\x0A\x18\x28\xC4\x5D\x9F\xB6\xAF\xDC\x10\xB0\xB6\x3D\xAC\x90\x76\xB9\x8A\xBB\xC1\x9C\xBD\xB0\x87\xAF\x91\x89\xEE\x0C\x9C\x51\x74\xBE\x4B\xA5\xBB\xC2\x0B\x36\x0C\xBE\x84\x05\xCC\xB5\xD2\xB4\xBB\x84\x82\xC2\xC6\x02\xF4\xB6\xC0\x9A\xBC\xB9\x82\xDF\xB8\xC3\x06\xD0\xC7\xC1\x53\xB7\xC6\x49\xC7\x8B\xC8\xE4\xAD\xA7\xC2\x5E\xBA\xC2\x74\xC0\x48\x0A\x14\x7D\x30\x4C\x65\xC9\x3B\x1B\xD8\x08\x22\x36\xFA\x9E\xCC\xD3\xA5\x9B\x64\xCE\x5E\x4B\xA4\xB3\xA3\x6D\x6D\x69\xA5\x93\x75\xC4\xA2\x56\x86\x92\xCF\x57\x54\x0E\x9D\xF9\x75\xCC\x40\xCF\x5A\xA6\x70\xC0\x0B\xDC\x08\x2B\xD0\x2C\x07\x4B\x3D\x61\x13\xBF\xA3\xEC\x3F\x8D\x11\x18\x26\xD2\xFA\x93\xD1\x18\x7E\x90\x7C\x2A\x01\x0E\xD0\x75\xD3\x9A\xA6\xBD\xCD\x2E\x47\xEF\x0C\x3E\xF0\x96\xBC\x2E\xF3\x30\x41\x37\xA9\x00\x23\xAF\xD9\xD3\xA9\x80\x4C\xD2\xD9\x67\x60\xD4\xBA\x32\xA4\xAB\xDE\x44\xD4\xC6\x2E\x9B\xC3\x41\xD2\xBB\x1B\xC5\xC4\x21\x23\xFF\xC6\xB5\xFF\xA0\xA0\x97\xBC\xAC\xC8\xBF\x89\xA0\xCA\xB6\xA8\xC1\x6E\x93\xAB\xB8\x2B\xC0\xBD\xBC\x10\xC4\xB9\x7A\xDD\xCC\xBD\x2F\xFE\xA0\xC3\xCD\xB3\xA7\x86\xF3\xB3\x9E\x2A\x83\x26\x8A\xA6\xA1\x9E\x9C\x70\x21\x7A\xE8\x43\x20\x9D\x38\xAB\x9F\x7C\xBF\xB1\xA5\x78\xB4\xDA\x44\x6F\x95\x04\x46\x7A\xDA\x9F\x7B\xE5\x0E\x9F\x21\x09\xCD\x6F\x76\xC1\xE0\x4D\xC4\xE6\xD4\xA8\xC2\xD0\x45\x81\xE3\x9E\x20\x0F\x79\x3B\x94\x8A\x4D\x97\x3A\x3F\x71\x36\x58\x0A\xE2\xAD\xD1\x04\x18\x18\x2B\xE2\x7D\x98\xE5\x9F\x78\x98\xA3\x8E\x88\x92\x4C\x32\x4F\x94\xA2\x08\xE0\x40\xC9\xE3\x42\x23\x32", -"\x5C\xBF\xD8\x82\xD8\x8C\x9C\x72\x4B\xC2\x99\x9F\xE2\x37\x1D\xD7\x93\x87\xAC\xCA\xB0\x1A\x84\x26\x86\x3B\xDB\x85\x0F\xEB\xD4\x0C\xBD\x44\x22\x6F\xE8\x9B\xC6\x3A\x8E\xED\x45\x6C\xB7\xE4\x0E\x15\xF1\xE0\x97\x2D\xD2\x07\x8E\xC8\x26\xEA\x4A\x8F\xEA\x3F\xE1\xBB\xAC\x9E\xEE\xAB\xE5\x26\xF6\xCD\xCA\xF5\xC8\x8F\x92\xED\xE4\xAA\x30\xE8\x93\xCC\xF3\x96\xE7\xA9\xDE\x4C\xDC\xC0\xCA\xD7\x68\xC2\xC7\x06\x62\xC3\x26\xD8\xFE\xBF\x9C\x8C\xCD\xD3\xC6\x40\x75\xC1\x57\x52\xD3\xDA\x9D\xD5\xC2\xBD\x2B\xD8\xD9\xCB\x24\xB2\xC0\xB3\xDE\xCC\xAA\x40\xA1\xC8\xAC\x1B\xC4\xCC\x9C\xED\xD2\x21\xAC\x42\xE4\x9E\xEA\xC3\x9C\x19\x58\x98\x9C\x38\xCB\xEB\xD1\x04\x2D\xD2\xA6\xA2\xC2\x20\xB5\x9A\xD2\xE8\xE2\x90\x2D\xD4\x82\x28\x9C\x4D\xCB\xEA\xD2\xB3\xDE\x4A\xB9\x82\x26\x8B\x5D\xFA\x30\xF5\x44\xF4\xF0\x00\x59\x6D\xF5\xD8\xEE\xB2\xDE\x3E\xDE\xDF\xEC\x80\x06\x8A\x7F\xF8\xF2\xF3\xBA\xFC\xF6\x12\xFE\xDB\xE9\x87\xC0\x01\x47\x17\xEE\xEE\x6E\x46\xE3\x20\xBD\x51\xFB\x4D\x5E\x47\xF8\x5C\x24\xF0\x21\x77\xD9\xEA\xFA\xD3\xAB\x9E\x87\xD9\x9B\xC6\xEE\xE4\xC6\xEB\xB2\x4F\x8E\x8A\x88\x2B\xFD\xC6\xA8\xFE\xC5\xC9\xDA\xAF\xB2\x93\xB9\x98\x67\xC0\xB5\x91\x07\xD7\xC4\x67\xB2\xAB\xC6\xC9\xC9\x3D\x9C\x04\x15\x4E\x97\x78\x7B\x5B\x41\x44\xD8\x47\x44\x9D\x79\x1C\x65\x3B\x41\xB8\x40\x67\xAB\x79\x4D\x70\x6A\x45\x40\x44\x07\xCE\x79\x23\x62\x47\x79\x3E\x00\x7A\x03\x12\x7A\x48\x21\x06\xC3\x75\x7B\x1D\x84\x80\x13\x8F\x80\x08\x8A\x44\xAE\x7A\x81\x02\x1C\x81\x90\x63\x7E\x8E\x61\x82\x05\x84\x07\x07\x80\x02\x26\x8D\x81\x3E\x00\x7B\x09\x7E\x4D\x08\x18\x83\x63\x77\x7B\xEA\x6F\x82\xC9\x73\x10\x25\x8B\x83\xD3\x56\x83\x00\x26\x7E\x94\x46\x7B\xF4\x4F\x82\xE3\x77\x81\x48\x85\x83\x3E\x63\x4F\x38\x84\x10\x3A\x89\x6E\x43\x7E\x83\x18\x19\x35\x41\x88\x53\x70\x72\x5D\x46\x8F\x6B\xC2\x6A\x84\x3A\x71\x46\x32\x80\x73\x4E\x85\x6A\xFE\x61\x85\x03\x1A\x83\xC6\x7D\x83\x13\x8F\x83\x46\x48\x44\xCB\x76\x5E\x65\x8E\x6B\xD9\x4E\x6F\x5D\x85\x87\xE6\x52\x81\x5C\x4B\x84\x63\x8C\x7C\x2C\x8B\x63\x16\x08\x11\x81\x8B\x73\xAF\x2D\x62\x6F\x5C\x86\x5C\x44\x7D\x02\x1A\x37\x41\x8A\x74\x7F\x8F\x7E\x6E\x08\x86\x02\x1A\x83\x41\x7F\x82\x1F\x80\x84\x63\x8A\x74\x15\x82\x75\xD8\x7A\x1B\x9B\x38\x10\x9F\x87\x7D\x13\x78\x79\x55\x83\x81\x77\x81\x84\x5A\x7B\x89\xB8\x4F\x74\x00\x83\x10\x02\x8F\x74\x7A\x81\x44\x6E\x82\x86\xDF\x7D\x89\xD3\x51\x4F\xB5\x4C\x82\xBD\x44\x03\xC0\x43\x10\xC2\x45\x4B\xFE\x4B\x64\xF5\x7B\x4C\x7E\x6E\x4A\xC7\x41\x4D\x32\x55\x4B\x40\x0E\x7F\x67\x63\x29\x03\x82\x03\x6E\x68\x10\xD1\x8A\x44\x9E\x72\x67\xC7\x5B\x67\xB9\x64\x51\x45\x08\x67\x4C\x08\x6B\x0A\x7C\x4C\x85\x46\x8C\xDE\x83\x68\xFA\x33\x8E\xD3\x49\x68\x28\x80\x00\x2A\x8C\x1E\x92\x61\x82\x32\x08\x69\x08\x10\x8F\x33\x80\x69\x9C\x65\x3D\x9E\x66\x8E\x8F\x43\x6A\x44\x80\x64\x72\x72\x84\xF5\x41\x6B\x08\x10\x90\x26\x8E\x7B\x71\x60\x02\x43\x06\x6B\x4C\x38\x8F\x06\x94\x90\xBD\x65\x1A\x5E\x85\x5F\x2C\x47\x5F\x42\x65\x03\x76\x72\x10\x78\x7B\x61\x4A\x6C\x6C\xF5\x7D\x77\x31\x2F\x77\xBB\x12\x6D\xDE\x54\x6D\x84\x79\x51\x0E\x67\x78\xC3\x5A\x65\xDB\x6B\x78\xDD\x6A\x5C\xE0\x62\x66\x00\x29\x73\x0C\x1C\x46\xE5\x78\x11\xE7\x75\x88\x8A\x57\x5A\xEB\x74\x10\xED\x7D\x75\x36\x9F\x58\xF1\x7B\x77\x1B\x9E\x64\xD9\x50\x6D\xDB\x54\x52\xFB\x7E\x59\x3D\x92\x2B\x4C\x7C\x10\xD0\x7F\x74\x0F\x82\x8A\xAD\x63\x03\x56\x74\x10\x58\x70\x95\x20\x7E\x6C\x23\x75\x76\x2C\x7F\x06\x2E\x78\x72\x48\x80\x76\x67\x7F\x72\x6C\x72\x73\x43\x7C\x76\xD3\x4F\x74\x0D\x93\x10\xB8\x83\x54\xAA\x80\x00\xB5\x44\x2E\xF5\x37\x1F\xCC\x84\x07\x40\x30\x67\xC0\x1C\x01\x24\x12\x20\xE9\x8B\x8E\x61\x06\x24\x1D\x80\x1C\x1E\x09\x97\x59\x2E\x63\x48\x80\x26\x48\x80\x1C\x20\x02\x98\xEE\x1B\x85\x53\x23\x29\xF3\x40\x1C\xB7\x31\x2E\x8B\x91\x7C\xE6\x56\x37\x21\x50\x1C\xFE\x32\x99\xE6\x1F\x88\x49\x99\x1B\x0F\x8B\x63\xC0\x16\x02\x8A\x96\x1E\x6D\x96\x95\xA1\x2D\x17\x4F\x70\x1C\x28\x03\x9A\xE5\x10\x01\x22\x49\x10\xC2\x10\x1C\x9D\x10\x97\xB4\x95\x9B\x38\x12\x1C\x8F\x3F\x36\xB6\x90\x00\x9D\x13\x9B\xF7\x36\x22\x03\x19\x4C\xC0\x1B\x96\xD5\x40\x97\xCD\x15\x10\x4F\x4F\x9A\xBB\x9B\x9C\x24\x12\x1C\x6A\x48\x2C\xB5\x9D\x9B\xB4\x90\x24\xD1\x43\x9C\xFD\x8F\x96\xB0\x9D\x9C\x0C\x8C\x9C\xBC\x9C\x9D\x10\x7C\x94\x2F\x13\x54\xD6\x91\x91\xDF\x43\x54\xFF\x0A\x9B\x05\x18\x9E", -"\x04\x22\x9B\x9D\x23\x10\xCA\x9B\x9B\x6D\x98\x9D\xE4\x95\x2B\x98\x43\x54\xE9\x8B\x9E\xB4\x94\x9C\xB6\x58\x9E\xE3\x94\x9F\x7D\x27\x60\xC0\x1C\x99\x65\x5E\x56\xE7\x98\x11\xE9\x8C\x9E\x0C\x19\x8E\xEF\x96\x9B\xF1\x92\x9E\x72\x74\x10\x67\x45\x4D\x7B\x9E\x9D\x50\x47\x9D\x43\x5C\x9F\x0F\xAA\x96\x03\x12\x58\xB9\x20\x1C\x8C\x9E\x25\x14\xA4\x2E\xC7\x9F\x0F\x04\x2E\x7C\x21\xA1\x1C\x24\x1E\x7C\xF9\x17\xA2\x23\xA9\x9B\x14\xA8\x9E\x9F\x17\xA0\xB4\x9F\xA1\xBA\x1E\x9B\x0C\x10\x34\xC2\x99\xA1\x2E\x45\x9F\xC5\x9C\x1C\xC2\x16\x36\x27\xAC\x2D\x2D\xA8\x11\x18\xA0\x97\x30\xAD\x9E\xBB\x92\xA0\xA0\x59\x1B\x36\xA0\x9C\x37\xA1\x9C\x37\x2A\xA3\x15\xA5\x9E\x3D\xAE\xA3\x24\x19\x8E\x8F\x3C\xA2\xC2\x19\x1F\xAD\x8B\x9B\x47\xA6\x34\xCB\x94\xA3\x74\x0F\x19\x25\x04\xA1\xF3\x66\x5E\x28\xA9\x14\x4F\x4A\x46\xB5\x9B\xA0\x9F\x1B\xA2\x33\xAF\x84\x91\x78\x11\x65\xAE\x9D\x67\xA0\x61\x4D\xAE\x29\x94\x20\x00\x74\x6A\x1B\x01\x3B\x9D\x97\x73\xA4\x31\x94\xA1\x6E\xA2\x2A\xCC\x92\xA6\x64\xA6\xA6\x94\x98\xA7\xB4\x9D\x2C\xD8\x84\x07\x7F\xA9\x36\x0D\x89\x22\xCE\x91\x86\xCC\x95\xA8\x60\xAB\x9B\x88\xA4\xA7\x8A\xA6\x86\xE6\x59\xA7\xAF\x3B\xA7\x7D\xA0\xA9\xDB\x92\x3D\x81\xA2\x1C\xBA\x7C\x7D\x6D\xA5\xAA\xAF\x1D\xA9\x74\x80\x73\x89\xA6\xA7\x8B\xAC\x51\xA0\xA1\x1F\x93\x23\xAA\x1E\xA4\x98\x04\x93\xA2\xDC\x7A\x7B\xAB\xA2\xA9\x74\x87\xA8\x72\xA3\x66\x9C\xA2\xAB\x9E\xAC\xA8\x70\x9E\xA8\x81\x60\x1C\x13\xAB\x6A\x1D\x83\xA2\x5D\xAB\x46\x84\xAC\xAA\x02\x10\xA7\x70\x9B\xA9\x0C\x15\xA7\xDC\x97\xA7\xB4\xAD\xA8\xB7\xAF\xA8\x91\xA3\x3D\x93\xAD\x1B\x69\xA7\x9B\xD5\x24\xA1\xB5\xA7\x2D\x77\x2B\x61\xB9\xA5\x6A\xF3\x4F\x0F\x0B\xA5\xA0\x0C\x12\x89\xD7\x2D\x19\x00\x94\x10\x0B\xA5\x9B\xEB\xA2\x5D\xED\xAF\xAA\xF3\x49\x8E\xF7\xA1\xA6\xC3\xA0\x20\xE9\xAF\x80\x6B\x7C\xAE\x4D\x74\x10\x4D\x90\x7E\xF2\xAB\x37\xB4\x9D\x19\xDA\xA8\xAF\x14\xAB\xAF\x00\x2D\xAF\x0E\x93\x77\xD2\x59\x8E\x11\xB2\xB0\xEE\xAB\x61\xF9\xAE\xAA\x17\xB4\x92\x10\x6D\xB0\x52\x8F\xB0\x32\x33\x42\x13\xBE\x98\x08\xB9\xA9\x90\x3F\x90\x5E\x29\x8E\x3E\x7C\xB1\xFE\xAB\x61\x05\xBE\x20\x03\x17\xB0\xFC\xA9\xB0\x03\x1B\xB0\xB6\x86\x9C\xC2\x1D\x19\x9F\x8C\x9C\xE9\xA0\x1C\x9F\x90\x89\x01\xA1\x86\x3C\x93\xA0\xB2\x24\xB2\x09\x18\x9E\x31\xB8\x2D\xF6\xA8\x11\x1F\xB0\x97\x45\xBD\x99\x6E\x07\xB4\x83\xA4\x88\x4A\xB9\x1B\x00\xB4\xA1\x4A\xA6\x88\x45\xAB\xA7\x7A\xA6\x76\x5C\x93\x07\x38\x2D\x74\xA6\x91\x20\x4E\xB6\xB2\x33\x32\xB5\x14\xA5\xB5\x5B\xB7\xB5\x96\xA3\x10\x32\x90\x89\x30\xBE\xB5\x48\xBB\x63\x61\xBA\xA7\x63\xBB\x95\x65\x27\xB6\xE0\x9B\x8A\xE0\x71\xA2\x82\xA8\x10\x15\x08\xAE\x18\x15\xB3\x0C\x1A\x28\x2B\x92\x16\x16\xBD\xAA\x2E\xBE\xA7\x84\x1F\xB3\x82\x88\xB8\xDE\x95\x97\xC9\x11\xAE\xA6\xA0\x67\x23\xA8\x9E\x8A\x85\xAF\xC5\xA8\xB2\x97\xBF\x9B\x76\x94\xAD\xA0\x14\x49\x70\x6A\xB1\x14\xA3\x97\x53\xBB\xAD\xB3\xA7\x99\x22\xA4\xB9\x0C\x17\x01\x96\xBC\x9D\x7E\x90\x69\xCC\xA6\xA0\x47\x8F\xAC\xC2\x1E\xB9\x6C\xB8\x10\x1B\xB2\x10\xAD\xB0\x2E\xB7\xBC\x1E\xB9\xB9\xA0\xBB\xB0\x69\xAA\xBE\x9D\xCD\xA9\x4D\x9A\x63\xBC\x32\xB1\xB2\xFE\x6E\xB3\xDA\x9C\x10\x18\x05\xBB\xCC\x96\x98\x04\x9F\xB8\xD5\xA7\x84\xBB\xA1\xAF\x6B\xB0\x97\x51\xBC\x10\xD0\xB8\x2D\xDA\xB9\x70\xDC\xBD\xB2\xCE\xB4\x90\x5D\xB6\xAC\xAF\xA8\x84\x7B\xB1\xAA\x7D\xB6\x72\x80\xBA\x23\x9C\x83\x8A\x4C\xBB\x88\xBF\xB4\x10\xC1\xB0\x00\xE5\xBA\xAE\x93\x27\x98\x86\xA0\xB9\xEB\xB9\x70\xCB\xBE\xBA\xA5\x68\x84\xFF\xB5\x9B\xDC\xA1\x52\xF9\xB0\x00\x4F\xB0\xBA\x6D\xB4\xBE\x29\xB0\x3B\x28\x1B\xBD\x03\xCD\xBD\xAB\x6C\xBE\x27\xB2\xAC\x09\xC4\x90\xF1\xB6\xAB\x16\xC4\xB6\x7F\xBA\xB3\xDF\x9E\x74\x83\xB4\xA1\x85\xB1\x7A\xD8\xB3\x10\xE9\xA8\xA3\x51\xAC\xB2\x8B\x10\x73\xDC\x93\xA2\x9D\x19\x01\x41\xA6\xAE\x49\x18\x9E\xD6\xA8\x10\xAD\x14\xA4\xBA\xBC\xB2\x0C\xCF\xBA\x22\x21\xC2\xEA\xB7\xB1\x52\x53\x5C\xE9\xB3\xC3\x8F\x91\xBB\xD5\xB8\x10\x1A\x0D\xC2\x9A\xA2\x2A\xA9\x96\xC2\xCF\x77\xBF\x15\xB9\xC3\x49\x12\x1C\xC8\x2B\x01\x52\xC7\xBA\x13\xCC\x9D\xA5\x95\xC5\xE5\xA4\x18\x5C\xAF\xC5\x9F\x11\xC1\xB5\x93\xC6\x29\xC3\x19\xA8\xA4\x93\x2F\xA6\xBA\x6A\xC4\x9B\x6C\xC6\x8B\xE9\xAA\xAC\xCF\x2B\xC4\xDE\xB8\xBE\xD8\x23\xA2\x6D\x9A\xC5\x80\xC1\xC8\x82\xCF\xC4\x84\x1F\x38\xF8\x92\xBE\x89\xB4\x9B\x30\xC1\x12\x58\xB5\x1C\x63\x56\xB4\xD9\x99\x14\xC0\x1D\x01\x83", -"\xC4\xB8\xC2\x1B\xA6\x5F\xC7\xC7\xDF\xAB\xAC\xA6\xB7\x12\xA7\xA4\x12\x8F\x3C\xA6\xFB\xBE\xC2\xDE\xA6\xC1\xB8\xAD\xC9\xA8\xB4\xA9\xB4\x13\xB7\xBB\x92\x9D\xC9\xAB\xC9\x79\xC8\xCA\xE3\xA4\xAA\xD0\xAC\xCA\xB6\x9E\xCA\xE4\x28\xC7\x20\xA2\xCB\x10\x8A\xCA\x92\xC8\x11\x1F\x05\xC9\x39\xCC\xAB\x57\x89\xC9\xA5\xC2\xAA\xE0\xA1\xC4\x8C\x69\xBC\xC6\xB3\xA2\xC0\x11\x02\xC2\xCA\xA5\x24\x19\xAA\xC6\xCF\xCA\xA6\xC9\xCC\x32\xCB\xC7\x59\xCE\xCC\x97\x61\xCD\xCB\x93\xA2\x67\xCE\xCD\x65\xC9\x10\xC0\x1D\xBF\xE2\xCD\xC7\x5B\xA4\x44\x68\xC1\xBA\x1E\xCF\xAA\xD3\xB3\xA2\x98\xCE\x9D\x5F\xA0\xBC\x20\xB4\xC0\x22\xBD\xAD\xD6\xC8\xCC\x9C\xC0\xAC\x9B\xBE\xCB\x38\x11\xCA\x71\xCC\xCF\x03\x16\xCE\x71\xA7\xAC\xF8\xC9\xCB\xB0\xCB\xCB\x02\xD8\x17\xB3\xC3\xA2\xE3\x7C\x9C\xF3\xCC\xBF\xF5\xCA\xC1\x78\x88\xAC\x08\xD7\xCD\xFB\xC2\xAE\x1A\xDF\xC9\x49\x14\xCD\xF2\xC6\xBA\x04\xD7\xAD\x44\xC5\x06\x9A\xC8\xD1\xB1\xC9\xCD\x1B\xC9\x70\xC4\xC8\x35\x01\xDA\xD1\x12\xDE\xBE\xD2\xBF\xA9\xC7\xCA\xA7\xA7\xC8\xBC\x36\xDE\xBC\xBC\xB4\x12\xD1\xA2\xCA\x46\xA0\xD2\x13\xDA\xBE\xF7\xC1\x52\x25\xDA\xCF\x27\xDE\xD2\x95\x1D\xD0\xB1\x98\x11\x27\x07\xCE\xE0\x23\xA2\x5D\xCC\xD4\x91\xC8\x13\xC0\x11\xB0\x50\xDA\xC3\x38\x1F\xD4\xDE\x9A\x41\x0C\x14\xD5\x0C\xA8\xB6\x64\xC0\xCE\xEA\xC9\xD5\xA6\xBC\xD5\x6B\xCE\xD5\x6D\xC3\xCE\x93\x1E\xD1\xDC\x91\xD1\x03\x14\xD6\x74\xC6\xD6\x76\xC3\xD3\xA1\xA5\xD3\xC1\xA6\xCF\x02\xC5\xD5\x78\xD0\xC8", -}; - - void XmlGetParserBuffer(vl::stream::MemoryStream& stream) - { - vl::stream::MemoryStream compressedStream; - for (vint i = 0; i < parserBufferRows; i++) - { - vint size = i == parserBufferRows - 1 ? parserBufferRemain : parserBufferBlock; - compressedStream.Write((void*)parserBuffer[i], size); - } - compressedStream.SeekFromBegin(0); - vl::stream::LzwDecoder decoder; - vl::stream::DecoderStream decoderStream(compressedStream, decoder); - vl::collections::Array buffer(65536); - while (true) - { - vl::vint size = decoderStream.Read(&buffer[0], 65536); - if (size == 0) break; - stream.Write(&buffer[0], size); - } - stream.SeekFromBegin(0); - } -/*********************************************************************** -Unescaping Function Foward Declarations -***********************************************************************/ - - extern void XmlMergeTextFragment(vl::collections::List>& value, const vl::collections::List& tokens); - extern void XmlUnescapeAttributeValue(vl::parsing::ParsingToken& value, const vl::collections::List& tokens); - extern void XmlUnescapeCData(vl::parsing::ParsingToken& value, const vl::collections::List& tokens); - extern void XmlUnescapeComment(vl::parsing::ParsingToken& value, const vl::collections::List& tokens); - -/*********************************************************************** -Parsing Tree Conversion Driver Implementation -***********************************************************************/ - - class XmlTreeConverter : public vl::parsing::ParsingTreeConverter - { - public: - using vl::parsing::ParsingTreeConverter::SetMember; - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - SetMember(tree->content, obj->GetMember(L"content"), tokens); - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - if(SetMember(tree->content, obj->GetMember(L"content"), tokens)) - { - XmlUnescapeCData(tree->content, tokens); - } - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - SetMember(tree->name, obj->GetMember(L"name"), tokens); - if(SetMember(tree->value, obj->GetMember(L"value"), tokens)) - { - XmlUnescapeAttributeValue(tree->value, tokens); - } - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - if(SetMember(tree->content, obj->GetMember(L"content"), tokens)) - { - XmlUnescapeComment(tree->content, tokens); - } - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - SetMember(tree->name, obj->GetMember(L"name"), tokens); - SetMember(tree->closingName, obj->GetMember(L"closingName"), tokens); - SetMember(tree->attributes, obj->GetMember(L"attributes"), tokens); - if(SetMember(tree->subNodes, obj->GetMember(L"subNodes"), tokens)) - { - XmlMergeTextFragment(tree->subNodes, tokens); - } - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - SetMember(tree->name, obj->GetMember(L"name"), tokens); - SetMember(tree->attributes, obj->GetMember(L"attributes"), tokens); - } - - void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) - { - SetMember(tree->prologs, obj->GetMember(L"prologs"), tokens); - SetMember(tree->rootElement, obj->GetMember(L"rootElement"), tokens); - } - - vl::Ptr ConvertClass(vl::Ptr obj, const TokenList& tokens)override - { - if(obj->GetType()==L"Text") - { - vl::Ptr tree = new XmlText; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"CData") - { - vl::Ptr tree = new XmlCData; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"Attribute") - { - vl::Ptr tree = new XmlAttribute; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"Comment") - { - vl::Ptr tree = new XmlComment; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"Element") - { - vl::Ptr tree = new XmlElement; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"Instruction") - { - vl::Ptr tree = new XmlInstruction; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else if(obj->GetType()==L"Document") - { - vl::Ptr tree = new XmlDocument; - vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); - Fill(tree, obj, tokens); - Fill(tree.Cast(), obj, tokens); - return tree; - } - else - return 0; - } - }; - - vl::Ptr XmlConvertParsingTreeNode(vl::Ptr node, const vl::collections::List& tokens) - { - XmlTreeConverter converter; - vl::Ptr tree; - converter.SetMember(tree, node, tokens); - return tree; - } - -/*********************************************************************** -Parsing Tree Conversion Implementation -***********************************************************************/ - - vl::Ptr XmlText::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return XmlConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr XmlCData::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return XmlConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr XmlAttribute::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return XmlConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr XmlComment::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return XmlConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr XmlElement::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return XmlConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr XmlInstruction::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return XmlConvertParsingTreeNode(node, tokens).Cast(); - } - - vl::Ptr XmlDocument::Convert(vl::Ptr node, const vl::collections::List& tokens) - { - return XmlConvertParsingTreeNode(node, tokens).Cast(); - } - -/*********************************************************************** -Parser Function -***********************************************************************/ - - vl::Ptr XmlParseDocumentAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) - { - vl::parsing::tabling::ParsingState state(input, table, codeIndex); - state.Reset(L"XDocument"); - vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); - vl::Ptr node=parser->Parse(state, errors); - return node; - } - - vl::Ptr XmlParseDocumentAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) - { - vl::collections::List> errors; - return XmlParseDocumentAsParsingTreeNode(input, table, errors, codeIndex); - } - - vl::Ptr XmlParseDocument(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) - { - vl::parsing::tabling::ParsingState state(input, table, codeIndex); - state.Reset(L"XDocument"); - vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); - vl::Ptr node=parser->Parse(state, errors); - if(node && errors.Count()==0) - { - return XmlConvertParsingTreeNode(node, state.GetTokens()).Cast(); - } - return 0; - } - - vl::Ptr XmlParseDocument(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) - { - vl::collections::List> errors; - return XmlParseDocument(input, table, errors, codeIndex); - } - - vl::Ptr XmlParseElementAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) - { - vl::parsing::tabling::ParsingState state(input, table, codeIndex); - state.Reset(L"XElement"); - vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); - vl::Ptr node=parser->Parse(state, errors); - return node; - } - - vl::Ptr XmlParseElementAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) - { - vl::collections::List> errors; - return XmlParseElementAsParsingTreeNode(input, table, errors, codeIndex); - } - - vl::Ptr XmlParseElement(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) - { - vl::parsing::tabling::ParsingState state(input, table, codeIndex); - state.Reset(L"XElement"); - vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); - vl::Ptr node=parser->Parse(state, errors); - if(node && errors.Count()==0) - { - return XmlConvertParsingTreeNode(node, state.GetTokens()).Cast(); - } - return 0; - } - - vl::Ptr XmlParseElement(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) - { - vl::collections::List> errors; - return XmlParseElement(input, table, errors, codeIndex); - } - -/*********************************************************************** -Table Generation -***********************************************************************/ - - vl::Ptr XmlLoadTable() - { - vl::stream::MemoryStream stream; - XmlGetParserBuffer(stream); - vl::Ptr table=new vl::parsing::tabling::ParsingTable(stream); - table->Initialize(); - return table; - } - - } - } -} - - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTOR.CPP -***********************************************************************/ - -namespace vl -{ - using namespace collections; - - namespace reflection - { - -/*********************************************************************** -DescriptableObject -***********************************************************************/ - -#ifndef VCZH_DEBUG_NO_REFLECTION - - bool DescriptableObject::IsAggregated() - { - return aggregationInfo != nullptr; - } - - vint DescriptableObject::GetAggregationSize() - { - CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::GetAggregationSize()#This function should not be called on non-aggregated objects."); - return aggregationSize; - } - - DescriptableObject* DescriptableObject::GetAggregationRoot() - { - CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::GetAggregationRoot()#This function should not be called on non-aggregated objects."); - return aggregationInfo[aggregationSize]; - } - - void DescriptableObject::SetAggregationRoot(DescriptableObject* value) - { - CHECK_ERROR(value != nullptr, L"vl::reflection::DescriptableObject::SetAggregationRoot(Descriptable*)#The root object should not null."); - CHECK_ERROR(value->IsAggregated() && value->GetAggregationRoot() == nullptr, L"vl::reflection::DescriptableObject::SetAggregationRoot(Descriptable*)#The root object should not have an aggregation root."); - if (!IsAggregated()) - { - InitializeAggregation(0); - } - aggregationInfo[aggregationSize] = value; - aggregationInfo[aggregationSize + 1] = value; - for (vint i = 0; i < aggregationSize; i++) - { - if (aggregationInfo[i]) - { - aggregationInfo[i]->SetAggregationRoot(value); - } - } - } - - DescriptableObject* DescriptableObject::GetAggregationParent(vint index) - { - CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::GetAggregationParent(vint)#This function should not be called on non-aggregated objects."); - CHECK_ERROR(0 <= index && index < aggregationSize, L"vl::reflection::DescriptableObject::GetAggregationParent(vint)#Index out of range."); - return aggregationInfo[index]; - } - - void DescriptableObject::SetAggregationParent(vint index, DescriptableObject* value) - { - CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#This function should not be called on non-aggregated objects."); - CHECK_ERROR(0 <= index && index < aggregationSize, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Index out of range."); - CHECK_ERROR(aggregationInfo[index] == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#This index has been used."); - CHECK_ERROR(value != nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent should not be null."); - CHECK_ERROR(!value->IsAggregated() || value->GetAggregationRoot() == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent already has a aggregation root."); - CHECK_ERROR(value->referenceCounter == 0, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent should not be contained in any smart pointer."); - value->SetAggregationRoot(this); - aggregationInfo[index] = value; - } - - void DescriptableObject::SetAggregationParent(vint index, Ptr& value) - { - CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#This function should not be called on non-aggregated objects."); - CHECK_ERROR(0 <= index && index < aggregationSize, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#Index out of range."); - CHECK_ERROR(aggregationInfo[index] == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#This index has been used."); - CHECK_ERROR(value, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#Parent should not be null"); - CHECK_ERROR(!value->IsAggregated() || value->GetAggregationRoot() == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#Parent already has a aggregation root."); - CHECK_ERROR(value->referenceCounter == 1, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#Parent should not be contained in any other smart pointer."); - value->SetAggregationRoot(this); - - auto parent = value.Detach(); - aggregationInfo[index] = parent; - } - - void DescriptableObject::InitializeAggregation(vint size) - { - CHECK_ERROR(!IsAggregated(), L"vl::reflection::DescriptableObject::InitializeAggregation(vint)#This function should not be called on aggregated objects."); - CHECK_ERROR(size >= 0, L"vl::reflection::DescriptableObject::InitializeAggregation(vint)#Size shout not be negative."); - aggregationSize = size; - aggregationInfo = new DescriptableObject*[size + 2]; - memset(aggregationInfo, 0, sizeof(*aggregationInfo) * (size + 2)); - } -#endif - - void DescriptableObject::FinalizeAggregation() - { -#ifndef VCZH_DEBUG_NO_REFLECTION - if (IsAggregated()) - { - if (auto root = GetAggregationRoot()) - { - if (aggregationInfo[aggregationSize + 1] == nullptr) - { - return; - } - else - { - aggregationInfo[aggregationSize + 1] = nullptr; - } - - if (!root->destructing) - { - destructing = true; - delete root; - } - } - } -#endif - } - - DescriptableObject::DescriptableObject() - :referenceCounter(0) - , sharedPtrDestructorProc(0) -#ifndef VCZH_DEBUG_NO_REFLECTION - , objectSize(0) - , typeDescriptor(0) - , destructing(false) - , aggregationInfo(nullptr) - , aggregationSize(-1) -#endif - { - } - -#if defined(VCZH_GCC) && defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wexceptions" -#endif - DescriptableObject::~DescriptableObject() - { -#ifndef VCZH_DEBUG_NO_REFLECTION - destructing = true; - if (IsAggregated()) - { - if (auto root = GetAggregationRoot()) - { - if (aggregationInfo[aggregationSize + 1] != nullptr) - { -#pragma warning (push) -#pragma warning (disable: 4297) - // Your class should call FinalizeAggregation in the destructor if it inherits from AggregatableDescription. - CHECK_ERROR(!IsAggregated(), L"vl::reflection::DescriptableObject::~DescriptableObject0()#FinalizeAggregation function should be called."); -#pragma warning (pop) - } - } - for (vint i = 0; i < aggregationSize; i++) - { - if (auto parent = GetAggregationParent(i)) - { - if (!parent->destructing) - { - delete parent; - } - } - } - delete[] aggregationInfo; - } -#endif - } -#if defined(VCZH_GCC) && defined(__clang__) -#pragma clang diagnostic pop -#endif - -#ifndef VCZH_DEBUG_NO_REFLECTION - - description::ITypeDescriptor* DescriptableObject::GetTypeDescriptor() - { - return typeDescriptor?*typeDescriptor:0; - } - -#endif - - Ptr DescriptableObject::GetInternalProperty(const WString& name) - { - if(!internalProperties) return 0; - vint index=internalProperties->Keys().IndexOf(name); - if(index==-1) return 0; - return internalProperties->Values().Get(index); - } - - void DescriptableObject::SetInternalProperty(const WString& name, Ptr value) - { - if(internalProperties) - { - vint index=internalProperties->Keys().IndexOf(name); - if(index==-1) - { - if(value) - { - internalProperties->Add(name, value); - } - } - else - { - if(value) - { - internalProperties->Set(name, value); - } - else - { - internalProperties->Remove(name); - if(internalProperties->Count()==0) - { - internalProperties=0; - } - } - } - } - else - { - if(value) - { - internalProperties=new InternalPropertyMap; - internalProperties->Add(name, value); - } - } - } - - bool DescriptableObject::Dispose(bool forceDisposing) - { -#ifndef VCZH_DEBUG_NO_REFLECTION - if (IsAggregated()) - { - if (auto root = GetAggregationRoot()) - { - return root->Dispose(forceDisposing); - } - } -#endif - - if (referenceCounter > 0 && forceDisposing) - { - throw description::ValueNotDisposableException(); - } - - if (sharedPtrDestructorProc) - { - return sharedPtrDestructorProc(this, forceDisposing); - } - else - { - delete this; - return true; - } - } - -#ifndef VCZH_DEBUG_NO_REFLECTION - - DescriptableObject* DescriptableObject::SafeGetAggregationRoot() - { - if (IsAggregated()) - { - if (auto root = GetAggregationRoot()) - { - return root; - } - } - return this; - } - -#endif - -/*********************************************************************** -description::Value -***********************************************************************/ - - namespace description - { - Value::Value(DescriptableObject* value) - :valueType(value ? RawPtr :Null) - ,rawPtr(nullptr) -#ifndef VCZH_DEBUG_NO_REFLECTION - ,typeDescriptor(0) -#endif - { -#ifndef VCZH_DEBUG_NO_REFLECTION - if (value) - { - rawPtr = value->SafeGetAggregationRoot(); - } -#else - rawPtr = value; -#endif - } - - Value::Value(Ptr value) - :valueType(value ? SharedPtr : Null) - ,rawPtr(nullptr) -#ifndef VCZH_DEBUG_NO_REFLECTION - ,typeDescriptor(0) -#endif - { -#ifndef VCZH_DEBUG_NO_REFLECTION - if (value) - { - rawPtr = value->SafeGetAggregationRoot(); - sharedPtr = rawPtr; - } -#else - rawPtr = value.Obj(); - sharedPtr = value; -#endif - } - - Value::Value(Ptr value, ITypeDescriptor* associatedTypeDescriptor) - :valueType(value ? BoxedValue : Null) - , rawPtr(nullptr) - , boxedValue(value) -#ifndef VCZH_DEBUG_NO_REFLECTION - , typeDescriptor(associatedTypeDescriptor) -#endif - { - } - - vint Value::Compare(const Value& a, const Value& b)const - { - switch (a.GetValueType()) - { - case Value::RawPtr: - case Value::SharedPtr: - switch (b.GetValueType()) - { - case Value::RawPtr: - case Value::SharedPtr: - { - auto pa = a.GetRawPtr(); - auto pb = b.GetRawPtr(); - if (pa < pb) return -1; - if (pa > pb) return 1; - return 0; - } - case Value::BoxedValue: - return -1; - default: - return 1; - } - case Value::BoxedValue: - switch (b.GetValueType()) - { - case Value::RawPtr: - case Value::SharedPtr: - return 1; - case Value::BoxedValue: - { -#ifndef VCZH_DEBUG_NO_REFLECTION - auto aSt = a.GetTypeDescriptor()->GetSerializableType(); - auto bSt = b.GetTypeDescriptor()->GetSerializableType(); - if (aSt) - { - if (bSt) - { - auto aSt = a.GetTypeDescriptor()->GetSerializableType(); - auto bSt = b.GetTypeDescriptor()->GetSerializableType(); - - WString aText; - WString bText; - aSt->Serialize(a, aText); - bSt->Serialize(b, bText); - if (aText < bText) return -1; - if (aText > bText) return 1; - return 0; - } - else - { - return 1; - } - } - else - { - if (bSt) - { - return -1; - } - else - { - if (a.GetTypeDescriptor() != b.GetTypeDescriptor()) - { - auto aText = a.GetTypeDescriptor()->GetTypeName(); - auto bText = b.GetTypeDescriptor()->GetTypeName(); - if (aText < bText) return -1; - if (aText > bText) return 1; - return 0; - } - - switch (a.GetTypeDescriptor()->GetTypeDescriptorFlags()) - { - case TypeDescriptorFlags::Struct: - { - auto td = a.GetTypeDescriptor(); - vint count = td->GetPropertyCount(); - for (vint i = 0; i < count; i++) - { - auto prop = td->GetProperty(i); - auto ap = prop->GetValue(a); - auto bp = prop->GetValue(b); - vint result = Compare(ap, bp); - if (result != 0) - { - return result; - } - } - } - return 0; - case TypeDescriptorFlags::FlagEnum: - case TypeDescriptorFlags::NormalEnum: - { - auto ai = a.GetTypeDescriptor()->GetEnumType()->FromEnum(a); - auto bi = a.GetTypeDescriptor()->GetEnumType()->FromEnum(b); - if (ai < bi) return -1; - if (ai > bi) return 1; - return 0; - } - default: - return 0; - } - } - } -#else - auto pa = a.GetBoxedValue(); - auto pb = b.GetBoxedValue(); - switch (pa->ComparePrimitive(pb)) - { - case IBoxedValue::Smaller: return -1; - case IBoxedValue::Greater: return 1; - case IBoxedValue::Equal: return 0; - default:; - } - if (pa.Obj() < pb.Obj()) return -1; - if (pa.Obj() > pb.Obj()) return 1; - return 0; -#endif - } - default: - return 1; - } - default: - switch (b.GetValueType()) - { - case Value::RawPtr: - case Value::SharedPtr: - case Value::BoxedValue: - return -1; - default: - return 0; - } - } - } - - Value::Value() - :valueType(Null) - ,rawPtr(0) -#ifndef VCZH_DEBUG_NO_REFLECTION - ,typeDescriptor(0) -#endif - { - } - - Value::Value(const Value& value) - :valueType(value.valueType) - ,rawPtr(value.rawPtr) - ,sharedPtr(value.sharedPtr) - ,boxedValue(value.boxedValue ? value.boxedValue->Copy() : nullptr) -#ifndef VCZH_DEBUG_NO_REFLECTION - ,typeDescriptor(value.typeDescriptor) -#endif - { - } - - Value& Value::operator=(const Value& value) - { - valueType = value.valueType; - rawPtr = value.rawPtr; - sharedPtr = value.sharedPtr; - boxedValue = value.boxedValue ? value.boxedValue->Copy() : nullptr; -#ifndef VCZH_DEBUG_NO_REFLECTION - typeDescriptor = value.typeDescriptor; -#endif - return *this; - } - - Value::ValueType Value::GetValueType()const - { - return valueType; - } - - DescriptableObject* Value::GetRawPtr()const - { - return rawPtr; - } - - Ptr Value::GetSharedPtr()const - { - return sharedPtr; - } - - Ptr Value::GetBoxedValue()const - { - return boxedValue; - } - - bool Value::IsNull()const - { - return valueType == Null; - } - -#ifndef VCZH_DEBUG_NO_REFLECTION - - ITypeDescriptor* Value::GetTypeDescriptor()const - { - switch(valueType) - { - case RawPtr: - case SharedPtr: - return rawPtr?rawPtr->GetTypeDescriptor():0; - case BoxedValue: - return typeDescriptor; - default:; - } - return 0; - } - - WString Value::GetTypeFriendlyName()const - { - switch(valueType) - { - case RawPtr: - return GetTypeDescriptor()->GetTypeName()+L"*"; - case SharedPtr: - return L"Ptr<"+GetTypeDescriptor()->GetTypeName()+L">"; - case BoxedValue: - return GetTypeDescriptor()->GetTypeName(); - default: - return L"null"; - } - } - - bool Value::CanConvertTo(ITypeDescriptor* targetType, ValueType targetValueType)const - { - if(targetType==GetGlobalTypeManager()->GetRootType()) - { - return true; - } - switch(valueType) - { - case Null: - return targetValueType != BoxedValue; - case RawPtr: - case SharedPtr: - if (targetValueType != RawPtr && targetValueType != SharedPtr) return false; - break; - case BoxedValue: - return targetValueType == BoxedValue; - } - return GetTypeDescriptor()->CanConvertTo(targetType); - } - - bool Value::CanConvertTo(ITypeInfo* targetType)const - { - if(valueType==Null && targetType->GetDecorator()==ITypeInfo::Nullable) - { - return true; - } - ValueType targetValueType=ValueType::Null; - { - ITypeInfo* currentType=targetType; - while(currentType) - { - switch(targetType->GetDecorator()) - { - case ITypeInfo::RawPtr: - targetValueType=RawPtr; - currentType=0; - break; - case ITypeInfo::SharedPtr: - targetValueType=SharedPtr; - currentType=0; - break; - case ITypeInfo::TypeDescriptor: - case ITypeInfo::Nullable: - targetValueType=BoxedValue; - currentType=0; - break; - default: - currentType=currentType->GetElementType(); - } - } - } - return CanConvertTo(targetType->GetTypeDescriptor(), targetValueType); - } - -#endif - - Value Value::From(DescriptableObject* value) - { - return Value(value); - } - - Value Value::From(Ptr value) - { - return Value(value); - } - - Value Value::From(Ptr value, ITypeDescriptor* type) - { - return Value(value, type); - } - -#ifndef VCZH_DEBUG_NO_REFLECTION - - IMethodInfo* Value::SelectMethod(IMethodGroupInfo* methodGroup, collections::Array& arguments) - { - if(methodGroup->GetMethodCount()==1) - { - return methodGroup->GetMethod(0); - } - - List methods; - for(vint i=0;iGetMethodCount();i++) - { - IMethodInfo* method=methodGroup->GetMethod(i); - if(method->GetParameterCount()==arguments.Count()) - { - methods.Add(method); - } - } - - if(methods.Count()==0) - { - throw ArgumentCountMismtatchException(methodGroup); - } - else if(methods.Count()==1) - { - return methods[0]; - } - else - { - for(vint i=0;iCheckArguments(arguments); - return method; - } - catch(const TypeDescriptorException&) - { - } - } - return methods[0]; - } - } - - Value Value::Create(ITypeDescriptor* type) - { - Array arguments; - return Create(type, arguments); - } - - Value Value::Create(ITypeDescriptor* type, collections::Array& arguments) - { - IMethodGroupInfo* methodGroup=type->GetConstructorGroup(); - if(!methodGroup) throw ConstructorNotExistsException(type); - - IMethodInfo* method=SelectMethod(methodGroup, arguments); - return method->Invoke(Value(), arguments); - } - - Value Value::Create(const WString& typeName) - { - Array arguments; - return Create(typeName, arguments); - } - - Value Value::Create(const WString& typeName, collections::Array& arguments) - { - ITypeDescriptor* type = vl::reflection::description::GetTypeDescriptor(typeName); - if(!type) throw TypeNotExistsException(typeName); - return Create(type, arguments); - } - - Value Value::InvokeStatic(const WString& typeName, const WString& name) - { - Array arguments; - return InvokeStatic(typeName, name, arguments); - } - - Value Value::InvokeStatic(const WString& typeName, const WString& name, collections::Array& arguments) - { - ITypeDescriptor* type=vl::reflection::description::GetTypeDescriptor(typeName); - if(!type) throw TypeNotExistsException(typeName); - - IMethodGroupInfo* methodGroup=type->GetMethodGroupByName(name, true); - if(!methodGroup) throw MemberNotExistsException(name, type); - - IMethodInfo* method=SelectMethod(methodGroup, arguments); - return method->Invoke(Value(), arguments); - } - - Value Value::GetProperty(const WString& name)const - { - ITypeDescriptor* type=GetTypeDescriptor(); - if(!type) throw ArgumentNullException(L"thisObject", name); - - IPropertyInfo* prop=type->GetPropertyByName(name, true); - if(!prop) throw MemberNotExistsException(name, type); - - return prop->GetValue(*this); - } - - void Value::SetProperty(const WString& name, const Value& newValue) - { - ITypeDescriptor* type=GetTypeDescriptor(); - if(!type) throw ArgumentNullException(L"thisObject", name); - - IPropertyInfo* prop=type->GetPropertyByName(name, true); - if(!prop) throw MemberNotExistsException(name, type); - - prop->SetValue(*this, newValue); - } - - Value Value::Invoke(const WString& name)const - { - Array arguments; - return Invoke(name, arguments); - } - - Value Value::Invoke(const WString& name, collections::Array& arguments)const - { - ITypeDescriptor* type=GetTypeDescriptor(); - if(!type) throw ArgumentNullException(L"thisObject", name); - - IMethodGroupInfo* methodGroup=type->GetMethodGroupByName(name, true); - if(!methodGroup) throw MemberNotExistsException(name, type); - - IMethodInfo* method=SelectMethod(methodGroup, arguments); - return method->Invoke(*this, arguments); - } - - Ptr Value::AttachEvent(const WString& name, const Value& function)const - { - ITypeDescriptor* type=GetTypeDescriptor(); - if(!type) throw ArgumentNullException(L"thisObject", name); - - IEventInfo* eventInfo=type->GetEventByName(name, true); - if(!eventInfo) throw MemberNotExistsException(name, type); - - Ptr proxy=UnboxValue>(function, Description::GetAssociatedTypeDescriptor(), L"function"); - return eventInfo->Attach(*this, proxy); - } - - bool Value::DetachEvent(const WString& name, Ptr handler)const - { - ITypeDescriptor* type = GetTypeDescriptor(); - if (!type) throw ArgumentNullException(L"thisObject", name); - - IEventInfo* eventInfo = type->GetEventByName(name, true); - if (!eventInfo) throw MemberNotExistsException(name, type); - - return eventInfo->Detach(*this, handler); - } - -#endif - - bool Value::DeleteRawPtr() - { - if(valueType!=RawPtr) return false; - if(!rawPtr) return false; - rawPtr->Dispose(true); - *this=Value(); - return true; - } - -#ifndef VCZH_DEBUG_NO_REFLECTION - -/*********************************************************************** -description::TypeManager -***********************************************************************/ - - class TypeManager : public Object, public ITypeManager - { - protected: - Dictionary> typeDescriptors; - List> typeLoaders; - ITypeDescriptor* rootType; - bool loaded; - - public: - TypeManager() - :rootType(0) - ,loaded(false) - { - } - - ~TypeManager() - { - Unload(); - } - - vint GetTypeDescriptorCount()override - { - return typeDescriptors.Values().Count(); - } - - ITypeDescriptor* GetTypeDescriptor(vint index)override - { - return typeDescriptors.Values().Get(index).Obj(); - } - - ITypeDescriptor* GetTypeDescriptor(const WString& name)override - { - vint index=typeDescriptors.Keys().IndexOf(name); - return index==-1?0:typeDescriptors.Values().Get(index).Obj(); - } - - bool SetTypeDescriptor(const WString& name, Ptr typeDescriptor)override - { - if(typeDescriptor && name!=typeDescriptor->GetTypeName()) - { - return false; - } - if(!typeDescriptors.Keys().Contains(name)) - { - if(typeDescriptor) - { - typeDescriptors.Add(name, typeDescriptor); - return true; - } - } - else - { - if(!typeDescriptor) - { - typeDescriptors.Remove(name); - return true; - } - } - return false; - } - - bool AddTypeLoader(Ptr typeLoader)override - { - vint index=typeLoaders.IndexOf(typeLoader.Obj()); - if(index==-1) - { - typeLoaders.Add(typeLoader); - if(loaded) - { - typeLoader->Load(this); - } - return true; - } - else - { - return false; - } - } - - bool RemoveTypeLoader(Ptr typeLoader)override - { - vint index=typeLoaders.IndexOf(typeLoader.Obj()); - if(index!=-1) - { - if(loaded) - { - typeLoader->Unload(this); - } - typeLoaders.RemoveAt(index); - return true; - } - else - { - return false; - } - } - - bool Load()override - { - if(!loaded) - { - loaded=true; - for(vint i=0;iLoad(this); - } - return true; - } - else - { - return false; - } - } - - bool Unload()override - { - if(loaded) - { - loaded=false; - rootType=0; - for(vint i=0;iUnload(this); - } - typeDescriptors.Clear(); - return true; - } - else - { - return false; - } - } - - bool Reload()override - { - Unload(); - Load(); - return true; - } - - bool IsLoaded()override - { - return loaded; - } - - ITypeDescriptor* GetRootType()override - { - if (!rootType) - { - rootType=description::GetTypeDescriptor(); - } - return rootType; - } - }; - -/*********************************************************************** -description::TypeManager helper functions -***********************************************************************/ - - ITypeManager* globalTypeManager=0; - bool initializedGlobalTypeManager=false; - - ITypeManager* GetGlobalTypeManager() - { - if(!initializedGlobalTypeManager) - { - initializedGlobalTypeManager=true; - globalTypeManager=new TypeManager; - } - return globalTypeManager; - } - - bool DestroyGlobalTypeManager() - { - if(initializedGlobalTypeManager && globalTypeManager) - { - delete globalTypeManager; - globalTypeManager=0; - return true; - } - else - { - return false; - } - } - - bool ResetGlobalTypeManager() - { - if(!DestroyGlobalTypeManager()) return false; - initializedGlobalTypeManager=false; - return true; - } - - ITypeDescriptor* GetTypeDescriptor(const WString& name) - { - if(globalTypeManager) - { - if(!globalTypeManager->IsLoaded()) - { - globalTypeManager->Load(); - } - return globalTypeManager->GetTypeDescriptor(name); - } - return 0; - } - -/*********************************************************************** -Cpp Helper Functions -***********************************************************************/ - - WString CppGetFullName(ITypeDescriptor* type) - { - if (auto cpp = type->GetCpp()) - { - if (cpp->GetFullName() == L"void" || cpp->GetFullName() == L"vl::reflection::description::VoidValue") - { - return L"void"; - } - else if (cpp->GetFullName() == L"float") - { - return L"float"; - } - else if (cpp->GetFullName() == L"double") - { - return L"double"; - } - else if (cpp->GetFullName() == L"bool") - { - return L"bool"; - } - else if (cpp->GetFullName() == L"wchar_t") - { - return L"wchar_t"; - } - else - { - return L"::" + cpp->GetFullName(); - } - } - else - { - return L"::vl::" + type->GetTypeName(); - } - } - - WString CppGetReferenceTemplate(IPropertyInfo* prop) - { - if (auto cpp = prop->GetCpp()) - { - return cpp->GetReferenceTemplate(); - } - else if ((prop->GetOwnerTypeDescriptor()->GetTypeDescriptorFlags() & TypeDescriptorFlags::ReferenceType) != TypeDescriptorFlags::Undefined) - { - return WString(L"$This->$Name", false); - } - else - { - return WString(L"$This.$Name", false); - } - } - - WString CppGetClosureTemplate(IMethodInfo* method) - { - if (auto cpp = method->GetCpp()) - { - return cpp->GetClosureTemplate(); - } - - if (method->IsStatic()) - { - return WString(L"::vl::Func<$Func>(&$Type::$Name)", false); - } - else - { - return WString(L"::vl::Func<$Func>($This, &$Type::$Name)", false); - } - } - - WString CppGetInvokeTemplate(IMethodInfo* method) - { - if (auto cpp = method->GetCpp()) - { - return cpp->GetInvokeTemplate(); - } - - if (method->GetOwnerMethodGroup() == method->GetOwnerTypeDescriptor()->GetConstructorGroup()) - { - return WString(L"new $Type($Arguments)", false); - } - else if (method->IsStatic()) - { - return WString(L"$Type::$Name($Arguments)", false); - } - else - { - return WString(L"$This->$Name($Arguments)", false); - } - } - - WString CppGetAttachTemplate(IEventInfo* ev) - { - auto cpp = ev->GetCpp(); - return cpp == nullptr ? WString(L"::vl::__vwsn::EventAttach($This->$Name, $Handler)", false) : cpp->GetAttachTemplate(); - } - - WString CppGetDetachTemplate(IEventInfo* ev) - { - auto cpp = ev->GetCpp(); - return cpp == nullptr ? WString(L"::vl::__vwsn::EventDetach($This->$Name, $Handler)", false) : cpp->GetDetachTemplate(); - } - - WString CppGetInvokeTemplate(IEventInfo* ev) - { - auto cpp = ev->GetCpp(); - return cpp == nullptr ? WString(L"::vl::__vwsn::EventInvoke($This->$Name)($Arguments)", false) : cpp->GetInvokeTemplate(); - } - - bool CppExists(ITypeDescriptor* type) - { - auto cpp = type->GetCpp(); - return cpp == nullptr || cpp->GetFullName() != L"*"; - } - - bool CppExists(IPropertyInfo* prop) - { - if (auto cpp = prop->GetCpp()) - { - return cpp->GetReferenceTemplate() != L"*"; - } - else if (auto method = prop->GetGetter()) - { - return CppExists(method); - } - else - { - return true; - } - } - - bool CppExists(IMethodInfo* method) - { - auto cpp = method->GetCpp(); - return cpp == nullptr || cpp->GetInvokeTemplate() != L"*"; - } - - bool CppExists(IEventInfo* ev) - { - auto cpp = ev->GetCpp(); - return cpp == nullptr || cpp->GetInvokeTemplate() != L"*"; - } - -#endif - } - } -} - - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTORBUILDER.CPP -***********************************************************************/ - -namespace vl -{ - using namespace collections; - - namespace reflection - { - namespace description - { - -#ifndef VCZH_DEBUG_NO_REFLECTION - -/*********************************************************************** -TypeDescriptorImplBase -***********************************************************************/ - - const WString& TypeDescriptorImplBase::GetFullName() - { - return cppFullTypeName; - } - - const TypeInfoContent* TypeDescriptorImplBase::GetTypeInfoContentInternal() - { - return typeInfoContent; - } - - TypeDescriptorImplBase::TypeDescriptorImplBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent) - :typeDescriptorFlags(_typeDescriptorFlags) - , typeInfoContent(_typeInfoContent) - , typeName(_typeInfoContent->typeName, false) - { - switch (typeInfoContent->cppName) - { - case TypeInfoContent::VlppType: - break; - case TypeInfoContent::CppType: - cppFullTypeName = WString(typeInfoContent->typeName, false); - break; - case TypeInfoContent::Renamed: - cppFullTypeName = WString(typeInfoContent->cppFullTypeName, false); - break; - } - } - - TypeDescriptorImplBase::~TypeDescriptorImplBase() - { - } - - ITypeDescriptor::ICpp* TypeDescriptorImplBase::GetCpp() - { - return typeInfoContent->cppName == TypeInfoContent::VlppType ? nullptr : this; - } - - TypeDescriptorFlags TypeDescriptorImplBase::GetTypeDescriptorFlags() - { - return typeDescriptorFlags; - } - - const WString& TypeDescriptorImplBase::GetTypeName() - { - return typeName; - } - -/*********************************************************************** -ValueTypeDescriptorBase -***********************************************************************/ - - void ValueTypeDescriptorBase::LoadInternal() - { - } - - void ValueTypeDescriptorBase::Load() - { - if (!loaded) - { - loaded = true; - LoadInternal(); - } - } - - ValueTypeDescriptorBase::ValueTypeDescriptorBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent) - :TypeDescriptorImplBase(_typeDescriptorFlags, _typeInfoContent) - , loaded(false) - { - } - - ValueTypeDescriptorBase::~ValueTypeDescriptorBase() - { - } - - bool ValueTypeDescriptorBase::IsAggregatable() - { - return false; - } - - IValueType* ValueTypeDescriptorBase::GetValueType() - { - Load(); - return valueType.Obj(); - } - - IEnumType* ValueTypeDescriptorBase::GetEnumType() - { - Load(); - return enumType.Obj(); - } - - ISerializableType* ValueTypeDescriptorBase::GetSerializableType() - { - Load(); - return serializableType.Obj(); - } - - vint ValueTypeDescriptorBase::GetBaseTypeDescriptorCount() - { - return 0; - } - - ITypeDescriptor* ValueTypeDescriptorBase::GetBaseTypeDescriptor(vint index) - { - return 0; - } - - bool ValueTypeDescriptorBase::CanConvertTo(ITypeDescriptor* targetType) - { - return this == targetType; - } - - vint ValueTypeDescriptorBase::GetPropertyCount() - { - return 0; - } - - IPropertyInfo* ValueTypeDescriptorBase::GetProperty(vint index) - { - return 0; - } - - bool ValueTypeDescriptorBase::IsPropertyExists(const WString& name, bool inheritable) - { - return false; - } - - IPropertyInfo* ValueTypeDescriptorBase::GetPropertyByName(const WString& name, bool inheritable) - { - return 0; - } - - vint ValueTypeDescriptorBase::GetEventCount() - { - return 0; - } - - IEventInfo* ValueTypeDescriptorBase::GetEvent(vint index) - { - return 0; - } - - bool ValueTypeDescriptorBase::IsEventExists(const WString& name, bool inheritable) - { - return false; - } - - IEventInfo* ValueTypeDescriptorBase::GetEventByName(const WString& name, bool inheritable) - { - return 0; - } - - vint ValueTypeDescriptorBase::GetMethodGroupCount() - { - return 0; - } - - IMethodGroupInfo* ValueTypeDescriptorBase::GetMethodGroup(vint index) - { - return 0; - } - - bool ValueTypeDescriptorBase::IsMethodGroupExists(const WString& name, bool inheritable) - { - return false; - } - - IMethodGroupInfo* ValueTypeDescriptorBase::GetMethodGroupByName(const WString& name, bool inheritable) - { - return 0; - } - - IMethodGroupInfo* ValueTypeDescriptorBase::GetConstructorGroup() - { - return 0; - } - -/*********************************************************************** -TypeDescriptorTypeInfo -***********************************************************************/ - - TypeDescriptorTypeInfo::TypeDescriptorTypeInfo(ITypeDescriptor* _typeDescriptor, TypeInfoHint _hint) - :typeDescriptor(_typeDescriptor) - , hint(_hint) - { - } - - TypeDescriptorTypeInfo::~TypeDescriptorTypeInfo() - { - } - - ITypeInfo::Decorator TypeDescriptorTypeInfo::GetDecorator() - { - return ITypeInfo::TypeDescriptor; - } - - TypeInfoHint TypeDescriptorTypeInfo::GetHint() - { - return hint; - } - - ITypeInfo* TypeDescriptorTypeInfo::GetElementType() - { - return nullptr; - } - - ITypeDescriptor* TypeDescriptorTypeInfo::GetTypeDescriptor() - { - return typeDescriptor; - } - - vint TypeDescriptorTypeInfo::GetGenericArgumentCount() - { - return 0; - } - - ITypeInfo* TypeDescriptorTypeInfo::GetGenericArgument(vint index) - { - return nullptr; - } - - WString TypeDescriptorTypeInfo::GetTypeFriendlyName() - { - return typeDescriptor->GetTypeName(); - } - -/*********************************************************************** -DecoratedTypeInfo -***********************************************************************/ - - DecoratedTypeInfo::DecoratedTypeInfo(Ptr _elementType) - :elementType(_elementType) - { - } - - DecoratedTypeInfo::~DecoratedTypeInfo() - { - } - - TypeInfoHint DecoratedTypeInfo::GetHint() - { - return elementType->GetHint(); - } - - ITypeInfo* DecoratedTypeInfo::GetElementType() - { - return elementType.Obj(); - } - - ITypeDescriptor* DecoratedTypeInfo::GetTypeDescriptor() - { - return elementType->GetTypeDescriptor(); - } - - vint DecoratedTypeInfo::GetGenericArgumentCount() - { - return 0; - } - - ITypeInfo* DecoratedTypeInfo::GetGenericArgument(vint index) - { - return nullptr; - } - -/*********************************************************************** -RawPtrTypeInfo -***********************************************************************/ - - RawPtrTypeInfo::RawPtrTypeInfo(Ptr _elementType) - :DecoratedTypeInfo(_elementType) - { - } - - RawPtrTypeInfo::~RawPtrTypeInfo() - { - } - - ITypeInfo::Decorator RawPtrTypeInfo::GetDecorator() - { - return ITypeInfo::RawPtr; - } - - WString RawPtrTypeInfo::GetTypeFriendlyName() - { - return elementType->GetTypeFriendlyName() + L"*"; - } - -/*********************************************************************** -SharedPtrTypeInfo -***********************************************************************/ - - SharedPtrTypeInfo::SharedPtrTypeInfo(Ptr _elementType) - :DecoratedTypeInfo(_elementType) - { - } - - SharedPtrTypeInfo::~SharedPtrTypeInfo() - { - } - - ITypeInfo::Decorator SharedPtrTypeInfo::GetDecorator() - { - return ITypeInfo::SharedPtr; - } - - WString SharedPtrTypeInfo::GetTypeFriendlyName() - { - return elementType->GetTypeFriendlyName() + L"^"; - } - -/*********************************************************************** -NullableTypeInfo -***********************************************************************/ - - NullableTypeInfo::NullableTypeInfo(Ptr _elementType) - :DecoratedTypeInfo(_elementType) - { - } - - NullableTypeInfo::~NullableTypeInfo() - { - } - - ITypeInfo::Decorator NullableTypeInfo::GetDecorator() - { - return ITypeInfo::Nullable; - } - - WString NullableTypeInfo::GetTypeFriendlyName() - { - return elementType->GetTypeFriendlyName() + L"?"; - } - -/*********************************************************************** -GenericTypeInfo -***********************************************************************/ - - GenericTypeInfo::GenericTypeInfo(Ptr _elementType) - :DecoratedTypeInfo(_elementType) - { - } - - GenericTypeInfo::~GenericTypeInfo() - { - } - - ITypeInfo::Decorator GenericTypeInfo::GetDecorator() - { - return ITypeInfo::Generic; - } - - vint GenericTypeInfo::GetGenericArgumentCount() - { - return genericArguments.Count(); - } - - ITypeInfo* GenericTypeInfo::GetGenericArgument(vint index) - { - return genericArguments[index].Obj(); - } - - WString GenericTypeInfo::GetTypeFriendlyName() - { - WString result = elementType->GetTypeFriendlyName() + L"<"; - FOREACH_INDEXER(Ptr, type, i, genericArguments) - { - WString result = elementType->GetTypeFriendlyName() + L"<"; - FOREACH_INDEXER(Ptr, type, i, genericArguments) - { - if (i>0) result += L", "; - result += type->GetTypeFriendlyName(); - } - result += L">"; - return result; - if (i>0) result += L", "; - result += type->GetTypeFriendlyName(); - } - result += L">"; - return result; - } - - void GenericTypeInfo::AddGenericArgument(Ptr value) - { - genericArguments.Add(value); - } - -/*********************************************************************** -ParameterInfoImpl -***********************************************************************/ - - ParameterInfoImpl::ParameterInfoImpl(IMethodInfo* _ownerMethod, const WString& _name, Ptr _type) - :ownerMethod(_ownerMethod) - ,name(_name) - ,type(_type) - { - } - - ParameterInfoImpl::~ParameterInfoImpl() - { - } - - ITypeDescriptor* ParameterInfoImpl::GetOwnerTypeDescriptor() - { - return ownerMethod->GetOwnerTypeDescriptor(); - } - - const WString& ParameterInfoImpl::GetName() - { - return name; - } - - ITypeInfo* ParameterInfoImpl::GetType() - { - return type.Obj(); - } - - IMethodInfo* ParameterInfoImpl::GetOwnerMethod() - { - return ownerMethod; - } - -/*********************************************************************** -MethodInfoImpl -***********************************************************************/ - - MethodInfoImpl::MethodInfoImpl(IMethodGroupInfo* _ownerMethodGroup, Ptr _return, bool _isStatic) - :ownerMethodGroup(_ownerMethodGroup) - ,ownerProperty(0) - ,returnInfo(_return) - ,isStatic(_isStatic) - { - } - - MethodInfoImpl::~MethodInfoImpl() - { - } - - ITypeDescriptor* MethodInfoImpl::GetOwnerTypeDescriptor() - { - return ownerMethodGroup->GetOwnerTypeDescriptor(); - } - - IPropertyInfo* MethodInfoImpl::GetOwnerProperty() - { - return ownerProperty; - } - - const WString& MethodInfoImpl::GetName() - { - return ownerMethodGroup->GetName(); - } - - IMethodGroupInfo* MethodInfoImpl::GetOwnerMethodGroup() - { - return ownerMethodGroup; - } - - vint MethodInfoImpl::GetParameterCount() - { - return parameters.Count(); - } - - IParameterInfo* MethodInfoImpl::GetParameter(vint index) - { - if(0<=index && index& arguments) - { - if(arguments.Count()!=parameters.Count()) - { - throw ArgumentCountMismtatchException(ownerMethodGroup); - } - for(vint i=0;iGetType())) - { - throw ArgumentTypeMismtatchException(parameters[i]->GetName(), parameters[i]->GetType(), arguments[i]); - } - } - } - - Value MethodInfoImpl::Invoke(const Value& thisObject, collections::Array& arguments) - { - if(thisObject.IsNull()) - { - if(!isStatic) - { - throw ArgumentNullException(L"thisObject", this); - } - } - else if(!thisObject.CanConvertTo(ownerMethodGroup->GetOwnerTypeDescriptor(), Value::RawPtr)) - { - throw ArgumentTypeMismtatchException(L"thisObject", ownerMethodGroup->GetOwnerTypeDescriptor(), Value::RawPtr, thisObject); - } - CheckArguments(arguments); - return InvokeInternal(thisObject, arguments); - } - - Value MethodInfoImpl::CreateFunctionProxy(const Value& thisObject) - { - if(thisObject.IsNull()) - { - if(!isStatic) - { - throw ArgumentNullException(L"thisObject", this); - } - } - else if(!thisObject.CanConvertTo(ownerMethodGroup->GetOwnerTypeDescriptor(), Value::RawPtr)) - { - throw ArgumentTypeMismtatchException(L"thisObject", ownerMethodGroup->GetOwnerTypeDescriptor(), Value::RawPtr, thisObject); - } - return CreateFunctionProxyInternal(thisObject); - } - - bool MethodInfoImpl::AddParameter(Ptr parameter) - { - for(vint i=0;iGetName()==parameter->GetName()) - { - return false; - } - } - parameters.Add(parameter); - return true; - } - - bool MethodInfoImpl::SetOwnerMethodgroup(IMethodGroupInfo* _ownerMethodGroup) - { - if(ownerMethodGroup) return false; - ownerMethodGroup=_ownerMethodGroup; - return true; - } - -/*********************************************************************** -MethodGroupInfoImpl -***********************************************************************/ - - MethodGroupInfoImpl::MethodGroupInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name) - :ownerTypeDescriptor(_ownerTypeDescriptor) - ,name(_name) - { - } - - MethodGroupInfoImpl::~MethodGroupInfoImpl() - { - } - - ITypeDescriptor* MethodGroupInfoImpl::GetOwnerTypeDescriptor() - { - return ownerTypeDescriptor; - } - - const WString& MethodGroupInfoImpl::GetName() - { - return name; - } - - vint MethodGroupInfoImpl::GetMethodCount() - { - return methods.Count(); - } - - IMethodInfo* MethodGroupInfoImpl::GetMethod(vint index) - { - if(0<=index && index _method) - { - methods.Add(_method); - return true; - } - -/*********************************************************************** -EventInfoImpl -***********************************************************************/ - - EventInfoImpl::EventInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name) - :ownerTypeDescriptor(_ownerTypeDescriptor) - ,name(_name) - { - } - - EventInfoImpl::~EventInfoImpl() - { - } - - ITypeDescriptor* EventInfoImpl::GetOwnerTypeDescriptor() - { - return ownerTypeDescriptor; - } - - ITypeInfo* EventInfoImpl::GetHandlerType() - { - if(!handlerType) - { - handlerType=GetHandlerTypeInternal(); - } - return handlerType.Obj(); - } - - vint EventInfoImpl::GetObservingPropertyCount() - { - return observingProperties.Count(); - } - - IPropertyInfo* EventInfoImpl::GetObservingProperty(vint index) - { - return observingProperties[index]; - } - - const WString& EventInfoImpl::GetName() - { - return name; - } - - Ptr EventInfoImpl::Attach(const Value& thisObject, Ptr handler) - { - if(thisObject.IsNull()) - { - throw ArgumentNullException(L"thisObject", this); - } - else if(!thisObject.CanConvertTo(ownerTypeDescriptor, Value::RawPtr)) - { - throw ArgumentTypeMismtatchException(L"thisObject", ownerTypeDescriptor, Value::RawPtr, thisObject); - } - - DescriptableObject* rawThisObject=thisObject.GetRawPtr(); - if(rawThisObject) - { - return AttachInternal(rawThisObject, handler); - } - else - { - return nullptr; - } - } - - bool EventInfoImpl::Detach(const Value& thisObject, Ptr handler) - { - if (thisObject.IsNull()) - { - throw ArgumentNullException(L"thisObject", this); - } - else if (!thisObject.CanConvertTo(ownerTypeDescriptor, Value::RawPtr)) - { - throw ArgumentTypeMismtatchException(L"thisObject", ownerTypeDescriptor, Value::RawPtr, thisObject); - } - - DescriptableObject* rawThisObject = thisObject.GetRawPtr(); - if (rawThisObject) - { - return DetachInternal(rawThisObject, handler); - } - else - { - return false; - } - } - - void EventInfoImpl::Invoke(const Value& thisObject, Ptr arguments) - { - if(thisObject.IsNull()) - { - throw ArgumentNullException(L"thisObject", this); - } - else if(!thisObject.CanConvertTo(ownerTypeDescriptor, Value::RawPtr)) - { - throw ArgumentTypeMismtatchException(L"thisObject", ownerTypeDescriptor, Value::RawPtr, thisObject); - } - - DescriptableObject* rawThisObject=thisObject.GetRawPtr(); - if(rawThisObject) - { - InvokeInternal(rawThisObject, arguments); - } - else - { - return; - } - } - -/*********************************************************************** -PropertyInfoImpl -***********************************************************************/ - - PropertyInfoImpl::PropertyInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, MethodInfoImpl* _getter, MethodInfoImpl* _setter, EventInfoImpl* _valueChangedEvent) - :ownerTypeDescriptor(_ownerTypeDescriptor) - ,name(_name) - ,getter(_getter) - ,setter(_setter) - ,valueChangedEvent(_valueChangedEvent) - { - if(getter) getter->ownerProperty=this; - if(setter) setter->ownerProperty=this; - if(valueChangedEvent) - { - valueChangedEvent->observingProperties.Add(this); - } - } - - PropertyInfoImpl::~PropertyInfoImpl() - { - } - - ITypeDescriptor* PropertyInfoImpl::GetOwnerTypeDescriptor() - { - return ownerTypeDescriptor; - } - - const WString& PropertyInfoImpl::GetName() - { - return name; - } - - IPropertyInfo::ICpp* PropertyInfoImpl::GetCpp() - { - return nullptr; - } - - bool PropertyInfoImpl::IsReadable() - { - return getter!=0; - } - - bool PropertyInfoImpl::IsWritable() - { - return setter!=0; - } - - ITypeInfo* PropertyInfoImpl::GetReturn() - { - return getter?getter->GetReturn():0; - } - - IMethodInfo* PropertyInfoImpl::GetGetter() - { - return getter; - } - - IMethodInfo* PropertyInfoImpl::GetSetter() - { - return setter; - } - - IEventInfo* PropertyInfoImpl::GetValueChangedEvent() - { - return valueChangedEvent; - } - - Value PropertyInfoImpl::GetValue(const Value& thisObject) - { - if(getter) - { - Array arguments; - return getter->Invoke(thisObject, arguments); - } - else - { - throw PropertyIsNotReadableException(this); - } - } - - void PropertyInfoImpl::SetValue(Value& thisObject, const Value& newValue) - { - if(setter) - { - Array arguments(1); - arguments[0]=newValue; - setter->Invoke(thisObject, arguments); - } - else - { - throw PropertyIsNotWritableException(this); - } - } - -/*********************************************************************** -PropertyInfoImpl_StaticCpp -***********************************************************************/ - - const WString& PropertyInfoImpl_StaticCpp::GetReferenceTemplate() - { - return referenceTemplate; - } - - PropertyInfoImpl_StaticCpp::PropertyInfoImpl_StaticCpp(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, MethodInfoImpl* _getter, MethodInfoImpl* _setter, EventInfoImpl* _valueChangedEvent, const WString& _referenceTemplate) - :PropertyInfoImpl(_ownerTypeDescriptor, _name, _getter, _setter, _valueChangedEvent) - , referenceTemplate(_referenceTemplate) - { - } - - PropertyInfoImpl_StaticCpp::~PropertyInfoImpl_StaticCpp() - { - } - - IPropertyInfo::ICpp* PropertyInfoImpl_StaticCpp::GetCpp() - { - return this; - } - -/*********************************************************************** -FieldInfoImpl -***********************************************************************/ - - FieldInfoImpl::FieldInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, Ptr _returnInfo) - :ownerTypeDescriptor(_ownerTypeDescriptor) - ,name(_name) - ,returnInfo(_returnInfo) - { - } - - FieldInfoImpl::~FieldInfoImpl() - { - } - - ITypeDescriptor* FieldInfoImpl::GetOwnerTypeDescriptor() - { - return ownerTypeDescriptor; - } - - const WString& FieldInfoImpl::GetName() - { - return name; - } - - bool FieldInfoImpl::IsReadable() - { - return true; - } - - bool FieldInfoImpl::IsWritable() - { - return true; - } - - ITypeInfo* FieldInfoImpl::GetReturn() - { - return returnInfo.Obj(); - } - - IMethodInfo* FieldInfoImpl::GetGetter() - { - return 0; - } - - IMethodInfo* FieldInfoImpl::GetSetter() - { - return 0; - } - - IEventInfo* FieldInfoImpl::GetValueChangedEvent() - { - return 0; - } - - Value FieldInfoImpl::GetValue(const Value& thisObject) - { - if(thisObject.IsNull()) - { - throw ArgumentNullException(L"thisObject", this); - } - else - { - auto td = thisObject.GetTypeDescriptor(); - auto valueType = td->GetValueType() ? Value::BoxedValue : Value::RawPtr; - if(!thisObject.CanConvertTo(ownerTypeDescriptor, valueType)) - { - throw ArgumentTypeMismtatchException(L"thisObject", ownerTypeDescriptor, valueType, thisObject); - } - } - return GetValueInternal(thisObject); - } - - void FieldInfoImpl::SetValue(Value& thisObject, const Value& newValue) - { - if(thisObject.IsNull()) - { - throw ArgumentNullException(L"thisObject", this); - } - else - { - auto td = thisObject.GetTypeDescriptor(); - auto valueType = td->GetValueType() ? Value::BoxedValue : Value::RawPtr; - if(!thisObject.CanConvertTo(ownerTypeDescriptor, valueType)) - { - throw ArgumentTypeMismtatchException(L"thisObject", ownerTypeDescriptor, valueType, thisObject); - } - } - if(!newValue.CanConvertTo(returnInfo.Obj())) - { - throw ArgumentTypeMismtatchException(L"newValue", returnInfo.Obj(), newValue); - } - SetValueInternal(thisObject, newValue); - } - -/*********************************************************************** -TypeDescriptorImpl -***********************************************************************/ - - MethodGroupInfoImpl* TypeDescriptorImpl::PrepareMethodGroup(const WString& name) - { - vint index=methodGroups.Keys().IndexOf(name); - if(index==-1) - { - Ptr methodGroup=new MethodGroupInfoImpl(this, name); - methodGroups.Add(name, methodGroup); - return methodGroup.Obj(); - } - else - { - return methodGroups.Values().Get(index).Obj(); - } - } - - MethodGroupInfoImpl* TypeDescriptorImpl::PrepareConstructorGroup() - { - if(!constructorGroup) - { - constructorGroup=new MethodGroupInfoImpl(this, L""); - } - return constructorGroup.Obj(); - } - - IPropertyInfo* TypeDescriptorImpl::AddProperty(Ptr value) - { - properties.Add(value->GetName(), value); - return value.Obj(); - } - - IEventInfo* TypeDescriptorImpl::AddEvent(Ptr value) - { - events.Add(value->GetName(), value); - return value.Obj(); - } - - IMethodInfo* TypeDescriptorImpl::AddMethod(const WString& name, Ptr value) - { - MethodGroupInfoImpl* methodGroup=PrepareMethodGroup(name); - value->SetOwnerMethodgroup(methodGroup); - methodGroup->AddMethod(value); - return value.Obj(); - } - - IMethodInfo* TypeDescriptorImpl::AddConstructor(Ptr value) - { - MethodGroupInfoImpl* methodGroup=PrepareConstructorGroup(); - value->SetOwnerMethodgroup(methodGroup); - methodGroup->AddMethod(value); - return value.Obj(); - } - - void TypeDescriptorImpl::AddBaseType(ITypeDescriptor* value) - { - baseTypeDescriptors.Add(value); - } - - void TypeDescriptorImpl::Load() - { - if(!loaded) - { - loaded=true; - LoadInternal(); - } - } - - TypeDescriptorImpl::TypeDescriptorImpl(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent) - :TypeDescriptorImplBase(_typeDescriptorFlags, _typeInfoContent) - ,loaded(false) - { - } - - TypeDescriptorImpl::~TypeDescriptorImpl() - { - } - - bool TypeDescriptorImpl::IsAggregatable() - { - return false; - } - - IValueType* TypeDescriptorImpl::GetValueType() - { - return nullptr; - } - - IEnumType* TypeDescriptorImpl::GetEnumType() - { - return nullptr; - } - - ISerializableType* TypeDescriptorImpl::GetSerializableType() - { - return nullptr; - } - - vint TypeDescriptorImpl::GetBaseTypeDescriptorCount() - { - Load(); - return baseTypeDescriptors.Count(); - } - - ITypeDescriptor* TypeDescriptorImpl::GetBaseTypeDescriptor(vint index) - { - Load(); - if(0<=index && indexCanConvertTo(targetType)) return true; - } - return false; - } - - vint TypeDescriptorImpl::GetPropertyCount() - { - Load(); - return properties.Count(); - } - - IPropertyInfo* TypeDescriptorImpl::GetProperty(vint index) - { - Load(); - if(0<=index && indexIsPropertyExists(name, true)) - { - return true; - } - } - } - return false; - } - - IPropertyInfo* TypeDescriptorImpl::GetPropertyByName(const WString& name, bool inheritable) - { - Load(); - vint index=properties.Keys().IndexOf(name); - if(index!=-1) - { - return properties.Values().Get(index).Obj(); - } - if(inheritable) - { - for(vint i=0;iGetPropertyByName(name, true); - if(result) - { - return result; - } - } - } - return 0; - } - - vint TypeDescriptorImpl::GetEventCount() - { - Load(); - return events.Count(); - } - - IEventInfo* TypeDescriptorImpl::GetEvent(vint index) - { - Load(); - if(0<=index && indexIsEventExists(name, true)) - { - return true; - } - } - } - return false; - } - - IEventInfo* TypeDescriptorImpl::GetEventByName(const WString& name, bool inheritable) - { - Load(); - vint index=events.Keys().IndexOf(name); - if(index!=-1) - { - return events.Values().Get(index).Obj(); - } - if(inheritable) - { - for(vint i=0;iGetEventByName(name, true); - if(result) - { - return result; - } - } - } - return 0; - } - - vint TypeDescriptorImpl::GetMethodGroupCount() - { - Load(); - return methodGroups.Count(); - } - - IMethodGroupInfo* TypeDescriptorImpl::GetMethodGroup(vint index) - { - Load(); - if(0<=index && indexIsMethodGroupExists(name, true)) - { - return true; - } - } - } - return false; - } - - IMethodGroupInfo* TypeDescriptorImpl::GetMethodGroupByName(const WString& name, bool inheritable) - { - Load(); - vint index=methodGroups.Keys().IndexOf(name); - if(index!=-1) - { - return methodGroups.Values().Get(index).Obj(); - } - if(inheritable) - { - for(vint i=0;iGetMethodGroupByName(name, true); - if(result) - { - return result; - } - } - } - return 0; - } - - IMethodGroupInfo* TypeDescriptorImpl::GetConstructorGroup() - { - Load(); - return constructorGroup.Obj(); - } -#endif - -/*********************************************************************** -Function Related -***********************************************************************/ - - namespace internal_helper - { - void UnboxSpecifiedParameter(Ptr arguments, vint index) - { - } - -#ifndef VCZH_DEBUG_NO_REFLECTION - void UnboxSpecifiedParameter(MethodInfoImpl* methodInfo, collections::Array& arguments, vint index) - { - } -#endif - - void AddValueToList(Ptr arguments) - { - } - } - } - } -} - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTORPREDEFINED.CPP -***********************************************************************/ - -namespace vl -{ - using namespace collections; - - namespace reflection - { - namespace description - { - -/*********************************************************************** -IValueEnumerable -***********************************************************************/ - - Ptr IValueEnumerable::Create(collections::LazyList values) - { - Ptr> enumerable = new LazyList(values); - return new ValueEnumerableWrapper>>(enumerable); - } - -/*********************************************************************** -IValueList -***********************************************************************/ - - Ptr IValueList::Create() - { - return Create(LazyList()); - } - - Ptr IValueList::Create(Ptr values) - { - return Create(GetLazyList(values)); - } - - Ptr IValueList::Create(collections::LazyList values) - { - Ptr> list = new List; - CopyFrom(*list.Obj(), values); - return new ValueListWrapper>>(list); - } - -/*********************************************************************** -IObservableList -***********************************************************************/ - - class ReversedObservableList : public ObservableListBase - { - protected: - - void NotifyUpdateInternal(vint start, vint count, vint newCount)override - { - if (observableList) - { - observableList->ItemChanged(start, count, newCount); - } - } - public: - IValueObservableList* observableList = nullptr; - }; - - Ptr IValueObservableList::Create() - { - return Create(LazyList()); - } - - Ptr IValueObservableList::Create(Ptr values) - { - return Create(GetLazyList(values)); - } - - Ptr IValueObservableList::Create(collections::LazyList values) - { - auto list = MakePtr(); - CopyFrom(*list.Obj(), values); - auto wrapper = MakePtr>>(list); - list->observableList = wrapper.Obj(); - return wrapper; - } - -/*********************************************************************** -IValueDictionary -***********************************************************************/ - - Ptr IValueDictionary::Create() - { - Ptr> dictionary = new Dictionary; - return new ValueDictionaryWrapper>>(dictionary); - } - - Ptr IValueDictionary::Create(Ptr values) - { - Ptr> dictionary = new Dictionary; - CopyFrom(*dictionary.Obj(), GetLazyList(values)); - return new ValueDictionaryWrapper>>(dictionary); - } - - Ptr IValueDictionary::Create(collections::LazyList> values) - { - Ptr> dictionary = new Dictionary; - CopyFrom(*dictionary.Obj(), values); - return new ValueDictionaryWrapper>>(dictionary); - } - -/*********************************************************************** -IValueException -***********************************************************************/ - - class DefaultValueException : public Object, public IValueException - { - protected: - WString message; - - public: - DefaultValueException(const WString& _message) - :message(_message) - { - } - -#pragma push_macro("GetMessage") -#if defined GetMessage -#undef GetMessage -#endif - WString GetMessage()override - { - return message; - } -#pragma pop_macro("GetMessage") - - bool GetFatal()override - { - return false; - } - - Ptr GetCallStack()override - { - return nullptr; - } - }; - - Ptr IValueException::Create(const WString& message) - { - return new DefaultValueException(message); - } - } - } -} - - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTORREFLECTION.CPP -***********************************************************************/ -#include -#include - -namespace vl -{ - using namespace collections; - using namespace regex; - - namespace reflection - { - namespace description - { - -/*********************************************************************** -TypeName -***********************************************************************/ - -#ifndef VCZH_DEBUG_NO_REFLECTION - - IMPL_TYPE_INFO_RENAME(void, system::Void) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::VoidValue, system::Void) - IMPL_TYPE_INFO_RENAME(vl::reflection::IDescriptable, system::Interface) - IMPL_TYPE_INFO_RENAME(vl::reflection::DescriptableObject, system::ReferenceType) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::Value, system::Object) - IMPL_TYPE_INFO_RENAME(vl::vuint8_t, system::UInt8) - IMPL_TYPE_INFO_RENAME(vl::vuint16_t, system::UInt16) - IMPL_TYPE_INFO_RENAME(vl::vuint32_t, system::UInt32) - IMPL_TYPE_INFO_RENAME(vl::vuint64_t, system::UInt64) - IMPL_TYPE_INFO_RENAME(vl::vint8_t, system::Int8) - IMPL_TYPE_INFO_RENAME(vl::vint16_t, system::Int16) - IMPL_TYPE_INFO_RENAME(vl::vint32_t, system::Int32) - IMPL_TYPE_INFO_RENAME(vl::vint64_t, system::Int64) - IMPL_TYPE_INFO_RENAME(float, system::Single) - IMPL_TYPE_INFO_RENAME(double, system::Double) - IMPL_TYPE_INFO_RENAME(bool, system::Boolean) - IMPL_TYPE_INFO_RENAME(wchar_t, system::Char) - IMPL_TYPE_INFO_RENAME(vl::WString, system::String) - IMPL_TYPE_INFO_RENAME(vl::DateTime, system::DateTime) - IMPL_TYPE_INFO_RENAME(vl::Locale, system::Locale) - - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueEnumerator, system::Enumerator) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueEnumerable, system::Enumerable) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueReadonlyList, system::ReadonlyList) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueList, system::List) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueObservableList, system::ObservableList) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueReadonlyDictionary, system::ReadonlyDictionary) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueDictionary, system::Dictionary) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueInterfaceProxy, system::InterfaceProxy) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueFunctionProxy, system::Function) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueSubscription, system::Subscription) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueCallStack, system::CallStack) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueException, system::Exception) - - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IBoxedValue, system::reflection::BoxedValue) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IBoxedValue::CompareResult, system::reflection::ValueType::CompareResult) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueType, system::reflection::ValueType) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IEnumType, system::reflection::EnumType) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::ISerializableType, system::reflection::SerializableType) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::ITypeInfo, system::reflection::TypeInfo) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::ITypeInfo::Decorator, system::reflection::TypeInfo::Decorator) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IMemberInfo, system::reflection::MemberInfo) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IEventHandler, system::reflection::EventHandler) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IEventInfo, system::reflection::EventInfo) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IPropertyInfo, system::reflection::PropertyInfo) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IParameterInfo, system::reflection::ParameterInfo) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IMethodInfo, system::reflection::MethodInfo) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::IMethodGroupInfo, system::reflection::MethodGroupInfo) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::TypeDescriptorFlags, system::reflection::TypeDescriptorFlags) - IMPL_TYPE_INFO_RENAME(vl::reflection::description::ITypeDescriptor, system::reflection::TypeDescriptor) - -#endif - -/*********************************************************************** -TypedValueSerializerProvider -***********************************************************************/ - -#define DEFINE_COMPARE(TYPENAME)\ - IBoxedValue::CompareResult TypedValueSerializerProvider::Compare(const TYPENAME& a, const TYPENAME& b)\ - {\ - if (a < b) return IBoxedValue::Smaller;\ - if (a > b) return IBoxedValue::Greater;\ - return IBoxedValue::Equal;\ - }\ - - REFLECTION_PREDEFINED_PRIMITIVE_TYPES(DEFINE_COMPARE) - -#undef DEFINE_COMPARE - - vuint8_t TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const vuint8_t& input, WString& output) - { - output = u64tow(input); - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, vuint8_t& output) - { - bool success = false; - vuint64_t result = wtou64_test(input, success); - if (!success) return false; - if (result>_UI8_MAX) return false; - output = (vuint8_t)result; - return true; - } - - //--------------------------------------- - - vuint16_t TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const vuint16_t& input, WString& output) - { - output = u64tow(input); - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, vuint16_t& output) - { - bool success = false; - vuint64_t result = wtou64_test(input, success); - if (!success) return false; - if (result>_UI16_MAX) return false; - output = (vuint16_t)result; - return true; - } - - //--------------------------------------- - - vuint32_t TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const vuint32_t& input, WString& output) - { - output = u64tow(input); - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, vuint32_t& output) - { - bool success = false; - vuint64_t result = wtou64_test(input, success); - if (!success) return false; - if (result>_UI32_MAX) return false; - output = (vuint32_t)result; - return true; - } - - //--------------------------------------- - - vuint64_t TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const vuint64_t& input, WString& output) - { - output = u64tow(input); - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, vuint64_t& output) - { - bool success = false; - vuint64_t result = wtou64_test(input, success); - if (!success) return false; - output = result; - return true; - } - - //--------------------------------------- - - vint8_t TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const vint8_t& input, WString& output) - { - output = i64tow(input); - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, vint8_t& output) - { - bool success = false; - vint64_t result = wtoi64_test(input, success); - if (!success) return false; - if (result<_I8_MIN || result>_I8_MAX) return false; - output = (vint8_t)result; - return true; - } - - //--------------------------------------- - - vint16_t TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const vint16_t& input, WString& output) - { - output = i64tow(input); - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, vint16_t& output) - { - bool success = false; - vint64_t result = wtoi64_test(input, success); - if (!success) return false; - if (result<_I16_MIN || result>_I16_MAX) return false; - output = (vint16_t)result; - return true; - } - - //--------------------------------------- - - vint32_t TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const vint32_t& input, WString& output) - { - output = i64tow(input); - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, vint32_t& output) - { - bool success = false; - vint64_t result = wtoi64_test(input, success); - if (!success) return false; - if (result<_I32_MIN || result>_I32_MAX) return false; - output = (vint32_t)result; - return true; - } - - //--------------------------------------- - - vint64_t TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const vint64_t& input, WString& output) - { - output = i64tow(input); - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, vint64_t& output) - { - bool success = false; - vint64_t result = wtoi64_test(input, success); - if (!success) return false; - output = result; - return true; - } - - //--------------------------------------- - - float TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const float& input, WString& output) - { - output = ftow(input); - if (output == L"-0") output = L"0"; - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, float& output) - { - bool success = false; - double result = wtof_test(input, success); - if (!success) return false; - if (result<-FLT_MAX || result>FLT_MAX) return false; - output = (float)result; - return true; - } - - //--------------------------------------- - - double TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const double& input, WString& output) - { - output = ftow(input); - if (output == L"-0") output = L"0"; - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, double& output) - { - bool success = false; - double result = wtof_test(input, success); - if (!success) return false; - output = result; - return true; - } - - //--------------------------------------- - - wchar_t TypedValueSerializerProvider::GetDefaultValue() - { - return 0; - } - - bool TypedValueSerializerProvider::Serialize(const wchar_t& input, WString& output) - { - output = input ? WString(input) : L""; - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, wchar_t& output) - { - if (input.Length()>1) return false; - output = input.Length() == 0 ? 0 : input[0]; - return true; - } - - //--------------------------------------- - - WString TypedValueSerializerProvider::GetDefaultValue() - { - return L""; - } - - bool TypedValueSerializerProvider::Serialize(const WString& input, WString& output) - { - output = input; - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, WString& output) - { - output = input; - return true; - } - - //--------------------------------------- - - bool TypedValueSerializerProvider::GetDefaultValue() - { - return false; - } - - bool TypedValueSerializerProvider::Serialize(const bool& input, WString& output) - { - output = input ? L"true" : L"false"; - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, bool& output) - { - output = input == L"true"; - return input == L"true" || input == L"false"; - } - - //--------------------------------------- - - Locale TypedValueSerializerProvider::GetDefaultValue() - { - return Locale(); - } - - bool TypedValueSerializerProvider::Serialize(const Locale& input, WString& output) - { - output = input.GetName(); - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, Locale& output) - { - output = Locale(input); - return true; - } - -/*********************************************************************** -DateTimeValueSerializer -***********************************************************************/ - - BEGIN_GLOBAL_STORAGE_CLASS(DateTimeSerializerStorage) - Regex* regexDateTime = nullptr; - - INITIALIZE_GLOBAL_STORAGE_CLASS - regexDateTime = new Regex(L"(/d/d/d/d)-(/d/d)-(/d/d) (/d/d):(/d/d):(/d/d).(/d/d/d)"); - - FINALIZE_GLOBAL_STORAGE_CLASS - delete regexDateTime; - regexDateTime = nullptr; - - END_GLOBAL_STORAGE_CLASS(DateTimeSerializerStorage) - - DateTime TypedValueSerializerProvider::GetDefaultValue() - { - return DateTime(); - } - - WString FormatDigits(vint number, vint length) - { - WString result = itow(number); - while (result.Length() < length) - { - result = L"0" + result; - } - return result; - } - - bool TypedValueSerializerProvider::Serialize(const DateTime& input, WString& output) - { - output = - FormatDigits(input.year, 4) + L"-" + FormatDigits(input.month, 2) + L"-" + FormatDigits(input.day, 2) + L" " + - FormatDigits(input.hour, 2) + L":" + FormatDigits(input.minute, 2) + L":" + FormatDigits(input.second, 2) + L"." + - FormatDigits(input.milliseconds, 3); - return true; - } - - bool TypedValueSerializerProvider::Deserialize(const WString& input, DateTime& output) - { - Ptr match = GetDateTimeSerializerStorage().regexDateTime->Match(input); - if (!match) return false; - if (!match->Success()) return false; - if (match->Result().Start() != 0) return false; - if (match->Result().Length() != input.Length()) return false; - - vint year = wtoi(match->Groups()[L"Y"].Get(0).Value()); - vint month = wtoi(match->Groups()[L"M"].Get(0).Value()); - vint day = wtoi(match->Groups()[L"D"].Get(0).Value()); - vint hour = wtoi(match->Groups()[L"h"].Get(0).Value()); - vint minute = wtoi(match->Groups()[L"m"].Get(0).Value()); - vint second = wtoi(match->Groups()[L"s"].Get(0).Value()); - vint milliseconds = wtoi(match->Groups()[L"ms"].Get(0).Value()); - - output = DateTime::FromDateTime(year, month, day, hour, minute, second, milliseconds); - return true; - } - - IBoxedValue::CompareResult TypedValueSerializerProvider::Compare(const DateTime& a, const DateTime& b) - { - auto ta = a.filetime; - auto tb = b.filetime; - if (ta < tb) return IBoxedValue::Smaller; - if (ta > tb) return IBoxedValue::Greater; - return IBoxedValue::Equal; - } - -/*********************************************************************** -Helper Functions -***********************************************************************/ - -#ifndef VCZH_DEBUG_NO_REFLECTION - - vint ITypeDescriptor_GetTypeDescriptorCount() - { - return GetGlobalTypeManager()->GetTypeDescriptorCount(); - } - - ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(vint index) - { - return GetGlobalTypeManager()->GetTypeDescriptor(index); - } - - ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const WString& name) - { - return GetGlobalTypeManager()->GetTypeDescriptor(name); - } - - ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const Value& value) - { - return value.GetTypeDescriptor(); - } - -#else - - vint ITypeDescriptor_GetTypeDescriptorCount() - { - return 0; - } - - ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(vint index) - { - return nullptr; - } - - ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const WString& name) - { - return nullptr; - } - - ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const Value& value) - { - return nullptr; - } - -#endif - -/*********************************************************************** -LoadPredefinedTypes -***********************************************************************/ - -#ifndef VCZH_DEBUG_NO_REFLECTION - -#define _ , - - template<> - struct CustomTypeDescriptorSelector - { - public: - class CustomTypeDescriptorImpl : public TypeDescriptorImpl - { - public: - CustomTypeDescriptorImpl() - :TypeDescriptorImpl(TypeDescriptorFlags::Class, &TypeInfo::content) - { - Description::SetAssociatedTypeDescroptor(this); - } - ~CustomTypeDescriptorImpl() - { - Description::SetAssociatedTypeDescroptor(0); - } - protected: - void LoadInternal()override - { - } - }; - }; - - BEGIN_STRUCT_MEMBER_FLAG(VoidValue, TypeDescriptorFlags::Primitive) - END_STRUCT_MEMBER(VoidValue) - - BEGIN_INTERFACE_MEMBER_NOPROXY_FLAG(IDescriptable, TypeDescriptorFlags::IDescriptable) - END_INTERFACE_MEMBER(IDescriptable) - - BEGIN_STRUCT_MEMBER(DateTime) - valueType = new SerializableValueType(); - serializableType = new SerializableType(); - STRUCT_MEMBER(year) - STRUCT_MEMBER(month) - STRUCT_MEMBER(dayOfWeek) - STRUCT_MEMBER(day) - STRUCT_MEMBER(hour) - STRUCT_MEMBER(minute) - STRUCT_MEMBER(second) - STRUCT_MEMBER(milliseconds) - STRUCT_MEMBER(totalMilliseconds) - STRUCT_MEMBER(filetime) - END_STRUCT_MEMBER(DateTime) - - BEGIN_INTERFACE_MEMBER(IValueEnumerator) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Current) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Index) - CLASS_MEMBER_METHOD(Next, NO_PARAMETER) - END_INTERFACE_MEMBER(IValueEnumerator) - - BEGIN_INTERFACE_MEMBER(IValueEnumerable) - CLASS_MEMBER_METHOD(CreateEnumerator, NO_PARAMETER) - END_INTERFACE_MEMBER(IValueEnumerable) - - BEGIN_INTERFACE_MEMBER(IValueReadonlyList) - CLASS_MEMBER_BASE(IValueEnumerable) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Count) - CLASS_MEMBER_METHOD(Get, { L"index" }) - CLASS_MEMBER_METHOD(Contains, { L"value" }) - CLASS_MEMBER_METHOD(IndexOf, { L"value" }) - END_INTERFACE_MEMBER(IValueReadonlyList) - - BEGIN_INTERFACE_MEMBER(IValueList) - CLASS_MEMBER_BASE(IValueReadonlyList) - CLASS_MEMBER_EXTERNALCTOR(Ptr(), NO_PARAMETER, vl::reflection::description::IValueList::Create) - CLASS_MEMBER_EXTERNALCTOR(Ptr(Ptr), { L"values" }, vl::reflection::description::IValueList::Create) - - CLASS_MEMBER_METHOD(Set, { L"index" _ L"value" }) - CLASS_MEMBER_METHOD(Add, { L"value" }) - CLASS_MEMBER_METHOD(Insert, { L"index" _ L"value" }) - CLASS_MEMBER_METHOD(Remove, { L"value" }) - CLASS_MEMBER_METHOD(RemoveAt, { L"index" }) - CLASS_MEMBER_METHOD(Clear, NO_PARAMETER) - END_INTERFACE_MEMBER(IValueList) - - BEGIN_INTERFACE_MEMBER(IValueObservableList) - CLASS_MEMBER_BASE(IValueList) - CLASS_MEMBER_EXTERNALCTOR(Ptr(), NO_PARAMETER, vl::reflection::description::IValueObservableList::Create) - CLASS_MEMBER_EXTERNALCTOR(Ptr(Ptr), { L"values" }, vl::reflection::description::IValueObservableList::Create) - - CLASS_MEMBER_EVENT(ItemChanged) - END_INTERFACE_MEMBER(IValueObservableList) - - BEGIN_INTERFACE_MEMBER(IValueReadonlyDictionary) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Keys) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Values) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Count) - CLASS_MEMBER_METHOD(Get, { L"key" }) - END_INTERFACE_MEMBER(IValueReadonlyDictionary) - - BEGIN_INTERFACE_MEMBER(IValueDictionary) - CLASS_MEMBER_BASE(IValueReadonlyDictionary) - CLASS_MEMBER_EXTERNALCTOR(Ptr(), NO_PARAMETER, vl::reflection::description::IValueDictionary::Create) - CLASS_MEMBER_EXTERNALCTOR(Ptr(Ptr), { L"values" }, vl::reflection::description::IValueDictionary::Create) - CLASS_MEMBER_METHOD(Set, { L"key" _ L"value" }) - CLASS_MEMBER_METHOD(Remove, { L"key" }) - CLASS_MEMBER_METHOD(Clear, NO_PARAMETER) - END_INTERFACE_MEMBER(IValueDictionary) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IValueInterfaceProxy) - CLASS_MEMBER_METHOD(Invoke, { L"methodInfo" _ L"arguments" }) - END_INTERFACE_MEMBER(IValueInterfaceProxy) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IValueFunctionProxy) - CLASS_MEMBER_METHOD(Invoke, { L"arguments" }) - END_INTERFACE_MEMBER(IValueFunctionProxy) - - BEGIN_INTERFACE_MEMBER(IValueSubscription) - CLASS_MEMBER_EVENT(ValueChanged) - CLASS_MEMBER_METHOD(Open, NO_PARAMETER) - CLASS_MEMBER_METHOD(Update, NO_PARAMETER) - CLASS_MEMBER_METHOD(Close, NO_PARAMETER) - END_CLASS_MEMBER(IValueSubscription) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IValueCallStack) - CLASS_MEMBER_PROPERTY_READONLY_FAST(LocalVariables) - CLASS_MEMBER_PROPERTY_READONLY_FAST(LocalArguments) - CLASS_MEMBER_PROPERTY_READONLY_FAST(CapturedVariables) - CLASS_MEMBER_PROPERTY_READONLY_FAST(GlobalVariables) - CLASS_MEMBER_PROPERTY_READONLY_FAST(FunctionName) - CLASS_MEMBER_PROPERTY_READONLY_FAST(SourceCodeBeforeCodegen) - CLASS_MEMBER_PROPERTY_READONLY_FAST(SourceCodeAfterCodegen) - CLASS_MEMBER_PROPERTY_READONLY_FAST(RowBeforeCodegen) - CLASS_MEMBER_PROPERTY_READONLY_FAST(RowAfterCodegen) - END_INTERFACE_MEMBER(IValueCallStack) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IValueException) -#pragma push_macro("GetMessage") -#if defined GetMessage -#undef GetMessage -#endif - CLASS_MEMBER_PROPERTY_READONLY_FAST(Message) -#pragma pop_macro("GetMessage") - CLASS_MEMBER_PROPERTY_READONLY_FAST(Fatal) - CLASS_MEMBER_PROPERTY_READONLY_FAST(CallStack) - END_INTERFACE_MEMBER(IValueException) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IBoxedValue) - CLASS_MEMBER_METHOD(Copy, NO_PARAMETER) - END_INTERFACE_MEMBER(IBoxedValue) - - BEGIN_ENUM_ITEM(IBoxedValue::CompareResult) - ENUM_ITEM_NAMESPACE(IBoxedValue) - - ENUM_NAMESPACE_ITEM(Smaller) - ENUM_NAMESPACE_ITEM(Greater) - ENUM_NAMESPACE_ITEM(Equal) - ENUM_NAMESPACE_ITEM(NotComparable) - END_ENUM_ITEM(ITypeInfo::Decorator) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IValueType) - CLASS_MEMBER_METHOD(CreateDefault, NO_PARAMETER) - CLASS_MEMBER_METHOD(Compare, { L"a" _ L"b" }) - END_INTERFACE_MEMBER(IValueType) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IEnumType) - CLASS_MEMBER_METHOD(IsFlagEnum, NO_PARAMETER) - CLASS_MEMBER_METHOD(GetItemCount, NO_PARAMETER) - CLASS_MEMBER_METHOD(GetItemName, { L"index" }) - CLASS_MEMBER_METHOD(GetItemValue, { L"index" }) - CLASS_MEMBER_METHOD(IndexOfItem, { L"name" }) - CLASS_MEMBER_METHOD(ToEnum, { L"value" }) - CLASS_MEMBER_METHOD(FromEnum, { L"value" }) - END_INTERFACE_MEMBER(IEnumType) - - BEGIN_INTERFACE_MEMBER_NOPROXY(ISerializableType) - CLASS_MEMBER_METHOD(Serialize, { L"input" _ L"output" }) - CLASS_MEMBER_METHOD(Deserialize, { L"input" _ L"output" }) - END_INTERFACE_MEMBER(ISerializableType) - - BEGIN_INTERFACE_MEMBER_NOPROXY(ITypeInfo) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Decorator) - CLASS_MEMBER_PROPERTY_READONLY_FAST(ElementType) - CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeDescriptor) - CLASS_MEMBER_PROPERTY_READONLY_FAST(GenericArgumentCount) - CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeFriendlyName) - - CLASS_MEMBER_METHOD(GetGenericArgument, { L"index" }) - END_INTERFACE_MEMBER(ITypeInfo) - - BEGIN_ENUM_ITEM(ITypeInfo::Decorator) - ENUM_ITEM_NAMESPACE(ITypeInfo) - - ENUM_NAMESPACE_ITEM(RawPtr) - ENUM_NAMESPACE_ITEM(SharedPtr) - ENUM_NAMESPACE_ITEM(Nullable) - ENUM_NAMESPACE_ITEM(TypeDescriptor) - ENUM_NAMESPACE_ITEM(Generic) - END_ENUM_ITEM(ITypeInfo::Decorator) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IMemberInfo) - CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerTypeDescriptor) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Name) - END_INTERFACE_MEMBER(IMemberInfo) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IEventHandler) - CLASS_MEMBER_METHOD(IsAttached, NO_PARAMETER) - END_INTERFACE_MEMBER(IEventHandler) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IEventInfo) - CLASS_MEMBER_BASE(IMemberInfo) - - CLASS_MEMBER_PROPERTY_READONLY_FAST(HandlerType) - CLASS_MEMBER_PROPERTY_READONLY_FAST(ObservingPropertyCount) - - CLASS_MEMBER_METHOD(GetObservingProperty, { L"index" }) - CLASS_MEMBER_METHOD(Attach, { L"thisObject" _ L"handler" }) - CLASS_MEMBER_METHOD(Invoke, { L"thisObject" _ L"arguments" }) - END_INTERFACE_MEMBER(IEventInfo) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IPropertyInfo) - CLASS_MEMBER_BASE(IMemberInfo) - - CLASS_MEMBER_PROPERTY_READONLY_FAST(Return) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Getter) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Setter) - CLASS_MEMBER_PROPERTY_READONLY_FAST(ValueChangedEvent) - - CLASS_MEMBER_METHOD(IsReadable, NO_PARAMETER) - CLASS_MEMBER_METHOD(IsWritable, NO_PARAMETER) - CLASS_MEMBER_METHOD(GetValue, { L"thisObject" }) - CLASS_MEMBER_METHOD(SetValue, { L"thisObject" _ L"newValue" }) - END_INTERFACE_MEMBER(IPropertyInfo) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IParameterInfo) - CLASS_MEMBER_BASE(IMemberInfo) - - CLASS_MEMBER_PROPERTY_READONLY_FAST(Type) - CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerMethod) - END_CLASS_MEMBER(IParameterInfo) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IMethodInfo) - CLASS_MEMBER_BASE(IMemberInfo) - - CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerMethodGroup) - CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerProperty) - CLASS_MEMBER_PROPERTY_READONLY_FAST(ParameterCount) - CLASS_MEMBER_PROPERTY_READONLY_FAST(Return) - - CLASS_MEMBER_METHOD(GetParameter, { L"index" }) - CLASS_MEMBER_METHOD(IsStatic, NO_PARAMETER) - CLASS_MEMBER_METHOD(CheckArguments, { L"arguments" }) - CLASS_MEMBER_METHOD(Invoke, { L"thisObject" _ L"arguments" }) - CLASS_MEMBER_BASE(IMemberInfo) - END_INTERFACE_MEMBER(IMethodInfo) - - BEGIN_INTERFACE_MEMBER_NOPROXY(IMethodGroupInfo) - CLASS_MEMBER_BASE(IMemberInfo) - - CLASS_MEMBER_PROPERTY_READONLY_FAST(MethodCount) - - CLASS_MEMBER_METHOD(GetMethod, { L"index" }) - END_INTERFACE_MEMBER(IMethodGroupInfo) - - BEGIN_ENUM_ITEM_MERGABLE(TypeDescriptorFlags) - ENUM_CLASS_ITEM(Object) - ENUM_CLASS_ITEM(IDescriptable) - ENUM_CLASS_ITEM(Class) - ENUM_CLASS_ITEM(Interface) - ENUM_CLASS_ITEM(Primitive) - ENUM_CLASS_ITEM(Struct) - ENUM_CLASS_ITEM(FlagEnum) - ENUM_CLASS_ITEM(NormalEnum) - END_ENUM_ITEM(TypeDescriptorFlags) - - BEGIN_INTERFACE_MEMBER_NOPROXY(ITypeDescriptor) - CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeDescriptorFlags) - CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeName) - CLASS_MEMBER_PROPERTY_READONLY_FAST(ValueType) - CLASS_MEMBER_PROPERTY_READONLY_FAST(EnumType) - CLASS_MEMBER_PROPERTY_READONLY_FAST(SerializableType) - CLASS_MEMBER_PROPERTY_READONLY_FAST(BaseTypeDescriptorCount) - CLASS_MEMBER_PROPERTY_READONLY_FAST(PropertyCount) - CLASS_MEMBER_PROPERTY_READONLY_FAST(EventCount) - CLASS_MEMBER_PROPERTY_READONLY_FAST(MethodGroupCount) - CLASS_MEMBER_PROPERTY_READONLY_FAST(ConstructorGroup) - - CLASS_MEMBER_METHOD(GetBaseTypeDescriptor, { L"index" }) - CLASS_MEMBER_METHOD(CanConvertTo, { L"targetType" }) - CLASS_MEMBER_METHOD(GetProperty, { L"index" }) - CLASS_MEMBER_METHOD(IsPropertyExists, { L"name" _ L"inheritable" }) - CLASS_MEMBER_METHOD(GetPropertyByName, { L"name" _ L"inheritable" }) - CLASS_MEMBER_METHOD(GetEvent, { L"index" }) - CLASS_MEMBER_METHOD(IsEventExists, { L"name" _ L"inheritable" }) - CLASS_MEMBER_METHOD(GetEventByName, { L"name" _ L"inheritable" }) - CLASS_MEMBER_METHOD(GetMethodGroup, { L"index" }) - CLASS_MEMBER_METHOD(IsMethodGroupExists, { L"name" _ L"inheritable" }) - CLASS_MEMBER_METHOD(GetMethodGroupByName, { L"name" _ L"inheritable" }) - - CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptorCount, NO_PARAMETER, vint(*)(), vl::reflection::description::ITypeDescriptor_GetTypeDescriptorCount) - CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptor, { L"index" }, ITypeDescriptor*(*)(vint), vl::reflection::description::ITypeDescriptor_GetTypeDescriptor) - CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptor, { L"name" }, ITypeDescriptor*(*)(const WString&), vl::reflection::description::ITypeDescriptor_GetTypeDescriptor) - CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptor, { L"value" }, ITypeDescriptor*(*)(const Value&), vl::reflection::description::ITypeDescriptor_GetTypeDescriptor) - END_INTERFACE_MEMBER(ITypeDescriptor) -#undef _ - - class PredefinedTypeLoader : public Object, public ITypeLoader - { - public: - void Load(ITypeManager* manager)override - { - manager->SetTypeDescriptor(TypeInfo::content.typeName, new TypedValueTypeDescriptorBase); -#define ADD_PRIMITIVE_TYPE(TYPE) manager->SetTypeDescriptor(TypeInfo::content.typeName, new PrimitiveTypeDescriptor()); - REFLECTION_PREDEFINED_PRIMITIVE_TYPES(ADD_PRIMITIVE_TYPE) -#undef ADD_PRIMITIVE_TYPE - REFLECTION_PREDEFINED_COMPLEX_TYPES(ADD_TYPE_INFO, VoidValue) - } - - void Unload(ITypeManager* manager)override - { - } - }; - -#endif - - bool LoadPredefinedTypes() - { -#ifndef VCZH_DEBUG_NO_REFLECTION - ITypeManager* manager = GetGlobalTypeManager(); - if (manager) - { - Ptr loader = new PredefinedTypeLoader; - return manager->AddTypeLoader(loader); - } -#endif - return false; - } - } - } -} - - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTOR_LOG.CPP -***********************************************************************/ - -namespace vl -{ - namespace reflection - { - namespace description - { - using namespace collections; - -#ifndef VCZH_DEBUG_NO_REFLECTION - -/*********************************************************************** -LogTypeManager (enum) -***********************************************************************/ - - void LogTypeManager_Enum(stream::TextWriter& writer, ITypeDescriptor* type) - { - writer.WriteLine((type->GetTypeDescriptorFlags() == TypeDescriptorFlags::FlagEnum ? L"flags " : L"enum ") + type->GetTypeName()); - writer.WriteLine(L"{"); - - auto enumType = type->GetEnumType(); - for (vint j = 0; j < enumType->GetItemCount(); j++) - { - writer.WriteLine(L" " + enumType->GetItemName(j) + L" = " + u64tow(enumType->GetItemValue(j)) + L","); - } - - writer.WriteLine(L"}"); - } - -/*********************************************************************** -LogTypeManager (struct) -***********************************************************************/ - - void LogTypeManager_Struct(stream::TextWriter& writer, ITypeDescriptor* type) - { - writer.WriteLine(L"struct " + type->GetTypeName()); - writer.WriteLine(L"{"); - for (vint j = 0; jGetPropertyCount(); j++) - { - IPropertyInfo* info = type->GetProperty(j); - writer.WriteLine(L" " + info->GetReturn()->GetTypeFriendlyName() + L" " + info->GetName() + L";"); - } - writer.WriteLine(L"}"); - } - -/*********************************************************************** -LogTypeManager (data) -***********************************************************************/ - - void LogTypeManager_Data(stream::TextWriter& writer, ITypeDescriptor* type) - { - writer.WriteLine(L"primitive " + type->GetTypeName() + L";"); - } - -/*********************************************************************** -LogTypeManager (class) -***********************************************************************/ - - void LogTypeManager_PrintEvents(stream::TextWriter& writer, ITypeDescriptor* type) - { - bool printed = false; - for (vint j = 0; jGetEventCount(); j++) - { - printed = true; - IEventInfo* info = type->GetEvent(j); - writer.WriteString(L" event " + info->GetHandlerType()->GetTypeFriendlyName() + L" " + info->GetName() + L"{"); - if (info->GetObservingPropertyCount()>0) - { - writer.WriteString(L" observing "); - vint count = +info->GetObservingPropertyCount(); - for (vint i = 0; i0) writer.WriteString(L", "); - writer.WriteString(info->GetObservingProperty(i)->GetName()); - } - writer.WriteString(L";"); - } - writer.WriteLine(L"};"); - } - if (printed) - { - writer.WriteLine(L""); - } - } - - void LogTypeManager_PrintProperties(stream::TextWriter& writer, ITypeDescriptor* type, List& propertyAccessors) - { - bool printed = false; - for (vint j = 0; jGetPropertyCount(); j++) - { - printed = true; - IPropertyInfo* info = type->GetProperty(j); - writer.WriteString(L" property " + info->GetReturn()->GetTypeFriendlyName() + L" " + info->GetName() + L"{"); - if (info->GetGetter()) - { - propertyAccessors.Add(info->GetGetter()); - writer.WriteString(L" getter " + info->GetGetter()->GetName() + L";"); - } - if (info->GetSetter()) - { - propertyAccessors.Add(info->GetSetter()); - writer.WriteString(L" setter " + info->GetSetter()->GetName() + L";"); - } - if (info->GetValueChangedEvent()) - { - writer.WriteString(L" raising " + info->GetValueChangedEvent()->GetName() + L";"); - } - writer.WriteLine(L"}"); - } - if (printed) - { - writer.WriteLine(L""); - } - } - - void LogTypeManager_PrintMethods(stream::TextWriter& writer, ITypeDescriptor* type, const List& propertyAccessors, bool isPropertyAccessor) - { - bool printed = false; - for (vint j = 0; jGetMethodGroupCount(); j++) - { - IMethodGroupInfo* group = type->GetMethodGroup(j); - for (vint k = 0; kGetMethodCount(); k++) - { - IMethodInfo* info = group->GetMethod(k); - if (propertyAccessors.Contains(info) == isPropertyAccessor) - { - printed = true; - writer.WriteString(WString(L" ") + (info->IsStatic() ? L"static " : L"") + (isPropertyAccessor ? L"accessor " : L"function ") + info->GetReturn()->GetTypeFriendlyName()); - writer.WriteString(L" " + info->GetName() + L"("); - for (vint l = 0; lGetParameterCount(); l++) - { - if (l>0) writer.WriteString(L", "); - IParameterInfo* parameter = info->GetParameter(l); - writer.WriteString(parameter->GetType()->GetTypeFriendlyName() + L" " + parameter->GetName()); - } - writer.WriteLine(L");"); - } - } - } - if (printed) - { - writer.WriteLine(L""); - } - } - - void LogTypeManager_PrintConstructors(stream::TextWriter& writer, ITypeDescriptor* type) - { - if (IMethodGroupInfo* group = type->GetConstructorGroup()) - { - for (vint k = 0; kGetMethodCount(); k++) - { - IMethodInfo* info = group->GetMethod(k); - writer.WriteString(L" constructor " + info->GetReturn()->GetTypeFriendlyName()); - writer.WriteString(L" " + info->GetName() + L"("); - for (vint l = 0; lGetParameterCount(); l++) - { - if (l>0) writer.WriteString(L", "); - IParameterInfo* parameter = info->GetParameter(l); - writer.WriteString(parameter->GetType()->GetTypeFriendlyName() + L" " + parameter->GetName()); - } - writer.WriteLine(L");"); - } - } - } - - void LogTypeManager_Class(stream::TextWriter& writer, ITypeDescriptor* type) - { - bool acceptProxy = false; - bool isInterface = (type->GetTypeDescriptorFlags() & TypeDescriptorFlags::InterfaceType) != TypeDescriptorFlags::Undefined; - writer.WriteString((isInterface ? L"interface " : L"class ") + type->GetTypeName()); - for (vint j = 0; jGetBaseTypeDescriptorCount(); j++) - { - writer.WriteString(j == 0 ? L" : " : L", "); - writer.WriteString(type->GetBaseTypeDescriptor(j)->GetTypeName()); - } - writer.WriteLine(L""); - writer.WriteLine(L"{"); - - List propertyAccessors; - LogTypeManager_PrintEvents(writer, type); - LogTypeManager_PrintProperties(writer, type, propertyAccessors); - LogTypeManager_PrintMethods(writer, type, propertyAccessors, false); - LogTypeManager_PrintMethods(writer, type, propertyAccessors, true); - LogTypeManager_PrintConstructors(writer, type); - - writer.WriteLine(L"}"); - } - -/*********************************************************************** -LogTypeManager -***********************************************************************/ - - bool IsInterfaceType(ITypeDescriptor* typeDescriptor, bool& acceptProxy) - { - bool containsConstructor = false; - if (IMethodGroupInfo* group = typeDescriptor->GetConstructorGroup()) - { - containsConstructor = group->GetMethodCount() > 0; - if (group->GetMethodCount() == 1) - { - if (IMethodInfo* info = group->GetMethod(0)) - { - if (info->GetParameterCount() == 1 && info->GetParameter(0)->GetType()->GetTypeDescriptor()->GetTypeName() == TypeInfo::content.typeName) - { - acceptProxy = true; - return true; - } - } - } - } - - if (!containsConstructor) - { - if (typeDescriptor->GetTypeName() == TypeInfo::content.typeName) - { - return true; - } - else - { - for (vint i = 0; i < typeDescriptor->GetBaseTypeDescriptorCount(); i++) - { - bool _acceptProxy = false; - if (!IsInterfaceType(typeDescriptor->GetBaseTypeDescriptor(i), _acceptProxy)) - { - return false; - } - } - const wchar_t* name = typeDescriptor->GetTypeName().Buffer(); - while (const wchar_t* next = ::wcschr(name, L':')) - { - name = next + 1; - } - return name[0] == L'I' && (L'A' <= name[1] && name[1] <= L'Z'); - } - } - return false; - } - - void LogTypeManager(stream::TextWriter& writer) - { - for (vint i = 0; i < GetGlobalTypeManager()->GetTypeDescriptorCount(); i++) - { - ITypeDescriptor* type = GetGlobalTypeManager()->GetTypeDescriptor(i); - - switch (type->GetTypeDescriptorFlags()) - { - case TypeDescriptorFlags::Object: - case TypeDescriptorFlags::IDescriptable: - case TypeDescriptorFlags::Class: - case TypeDescriptorFlags::Interface: - LogTypeManager_Class(writer, type); - break; - case TypeDescriptorFlags::FlagEnum: - case TypeDescriptorFlags::NormalEnum: - LogTypeManager_Enum(writer, type); - break; - case TypeDescriptorFlags::Primitive: - LogTypeManager_Data(writer, type); - break; - case TypeDescriptorFlags::Struct: - LogTypeManager_Struct(writer, type); - break; - default:; - } - writer.WriteLine(L""); - } - } - -#endif - } - } -} - - -/*********************************************************************** -.\REGEX\REGEX.CPP -***********************************************************************/ - -namespace vl -{ - namespace regex - { - using namespace collections; - using namespace regex_internal; - -/*********************************************************************** -RegexString -***********************************************************************/ - - RegexString::RegexString(vint _start) - :start(_start) - ,length(0) - { - } - - RegexString::RegexString(const WString& _string, vint _start, vint _length) - :value(_length==0?L"":_string.Sub(_start, _length)) - ,start(_start) - ,length(_length) - { - } - - vint RegexString::Start()const - { - return start; - } - - vint RegexString::Length()const - { - return length; - } - - const WString& RegexString::Value()const - { - return value; - } - - bool RegexString::operator==(const RegexString& string)const - { - return start==string.start && length==string.length && value==string.value; - } - -/*********************************************************************** -RegexMatch -***********************************************************************/ - - RegexMatch::RegexMatch(const WString& _string, PureResult* _result) - :success(true) - ,result(_string, _result->start, _result->length) - { - } - - RegexMatch::RegexMatch(const WString& _string, RichResult* _result, RichInterpretor* _rich) - :success(true) - ,result(_string, _result->start, _result->length) - { - for(vint i=0;i<_result->captures.Count();i++) - { - CaptureRecord& capture=_result->captures[i]; - if(capture.capture==-1) - { - captures.Add(RegexString(_string, capture.start, capture.length)); - } - else - { - groups.Add(_rich->CaptureNames().Get(capture.capture), RegexString(_string, capture.start, capture.length)); - } - } - } - - RegexMatch::RegexMatch(const RegexString& _result) - :success(false) - ,result(_result) - { - } - - bool RegexMatch::Success()const - { - return success; - } - - const RegexString& RegexMatch::Result()const - { - return result; - } - - const RegexMatch::CaptureList& RegexMatch::Captures()const - { - return captures; - } - - const RegexMatch::CaptureGroup& RegexMatch::Groups()const - { - return groups; - } - -/*********************************************************************** -Regex -***********************************************************************/ - - void Regex::Process(const WString& text, bool keepEmpty, bool keepSuccess, bool keepFail, RegexMatch::List& matches)const - { - if(rich) - { - const wchar_t* start=text.Buffer(); - const wchar_t* input=start; - RichResult result; - while(rich->Match(input, start, result)) - { - vint offset=input-start; - if(keepFail) - { - if(result.start>offset || keepEmpty) - { - matches.Add(new RegexMatch(RegexString(text, offset, result.start-offset))); - } - } - if(keepSuccess) - { - matches.Add(new RegexMatch(text, &result, rich)); - } - input=start+result.start+result.length; - } - if(keepFail) - { - vint remain=input-start; - vint length=text.Length()-remain; - if(length || keepEmpty) - { - matches.Add(new RegexMatch(RegexString(text, remain, length))); - } - } - } - else - { - const wchar_t* start=text.Buffer(); - const wchar_t* input=start; - PureResult result; - while(pure->Match(input, start, result)) - { - vint offset=input-start; - if(keepFail) - { - if(result.start>offset || keepEmpty) - { - matches.Add(new RegexMatch(RegexString(text, offset, result.start-offset))); - } - } - if(keepSuccess) - { - matches.Add(new RegexMatch(text, &result)); - } - input=start+result.start+result.length; - } - if(keepFail) - { - vint remain=input-start; - vint length=text.Length()-remain; - if(length || keepEmpty) - { - matches.Add(new RegexMatch(RegexString(text, remain, length))); - } - } - } - } - - Regex::Regex(const WString& code, bool preferPure) - :pure(0) - ,rich(0) - { - CharRange::List subsets; - RegexExpression::Ref regex=ParseRegexExpression(code); - Expression::Ref expression=regex->Merge(); - expression->NormalizeCharSet(subsets); - - bool pureRequired=false; - bool richRequired=false; - if(preferPure) - { - if(expression->HasNoExtension()) - { - pureRequired=true; - } - else - { - if(expression->CanTreatAsPure()) - { - pureRequired=true; - richRequired=true; - } - else - { - richRequired=true; - } - } - } - else - { - richRequired=true; - } - - try - { - if(pureRequired) - { - Dictionary nfaStateMap; - Group dfaStateMap; - Automaton::Ref eNfa=expression->GenerateEpsilonNfa(); - Automaton::Ref nfa=EpsilonNfaToNfa(eNfa, PureEpsilonChecker, nfaStateMap); - Automaton::Ref dfa=NfaToDfa(nfa, dfaStateMap); - pure=new PureInterpretor(dfa, subsets); - } - if(richRequired) - { - Dictionary nfaStateMap; - Group dfaStateMap; - Automaton::Ref eNfa=expression->GenerateEpsilonNfa(); - Automaton::Ref nfa=EpsilonNfaToNfa(eNfa, RichEpsilonChecker, nfaStateMap); - Automaton::Ref dfa=NfaToDfa(nfa, dfaStateMap); - rich=new RichInterpretor(dfa); - } - } - catch(...) - { - if(pure)delete pure; - if(rich)delete rich; - throw; - } - } - - Regex::~Regex() - { - if(pure)delete pure; - if(rich)delete rich; - } - - bool Regex::IsPureMatch()const - { - return rich?false:true; - } - - bool Regex::IsPureTest()const - { - return pure?true:false; - } - - RegexMatch::Ref Regex::MatchHead(const WString& text)const - { - if(rich) - { - RichResult result; - if(rich->MatchHead(text.Buffer(), text.Buffer(), result)) - { - return new RegexMatch(text, &result, rich); - } - else - { - return 0; - } - } - else - { - PureResult result; - if(pure->MatchHead(text.Buffer(), text.Buffer(), result)) - { - return new RegexMatch(text, &result); - } - else - { - return 0; - } - } - } - - RegexMatch::Ref Regex::Match(const WString& text)const - { - if(rich) - { - RichResult result; - if(rich->Match(text.Buffer(), text.Buffer(), result)) - { - return new RegexMatch(text, &result, rich); - } - else - { - return 0; - } - } - else - { - PureResult result; - if(pure->Match(text.Buffer(), text.Buffer(), result)) - { - return new RegexMatch(text, &result); - } - else - { - return 0; - } - } - } - - bool Regex::TestHead(const WString& text)const - { - if(pure) - { - PureResult result; - return pure->MatchHead(text.Buffer(), text.Buffer(), result); - } - else - { - RichResult result; - return rich->MatchHead(text.Buffer(), text.Buffer(), result); - } - } - - bool Regex::Test(const WString& text)const - { - if(pure) - { - PureResult result; - return pure->Match(text.Buffer(), text.Buffer(), result); - } - else - { - RichResult result; - return rich->Match(text.Buffer(), text.Buffer(), result); - } - } - - void Regex::Search(const WString& text, RegexMatch::List& matches)const - { - Process(text, false, true, false, matches); - } - - void Regex::Split(const WString& text, bool keepEmptyMatch, RegexMatch::List& matches)const - { - Process(text, keepEmptyMatch, false, true, matches); - } - - void Regex::Cut(const WString& text, bool keepEmptyMatch, RegexMatch::List& matches)const - { - Process(text, keepEmptyMatch, true, true, matches); - } - -/*********************************************************************** -RegexTokens -***********************************************************************/ - - bool RegexToken::operator==(const RegexToken& _token)const - { - return length==_token.length && token==_token.token && reading==_token.reading; - } - - bool RegexToken::operator==(const wchar_t* _token)const - { - return wcslen(_token)==length && wcsncmp(reading, _token, length)==0; - } - - class RegexTokenEnumerator : public Object, public IEnumerator - { - protected: - RegexToken token; - vint index = -1; - - PureInterpretor* pure; - const Array& stateTokens; - const wchar_t* start; - vint codeIndex; - RegexProc proc; - - const wchar_t* reading; - vint rowStart = 0; - vint columnStart = 0; - bool cacheAvailable = false; - RegexToken cacheToken; - - public: - RegexTokenEnumerator(const RegexTokenEnumerator& enumerator) - :token(enumerator.token) - , index(enumerator.index) - , pure(enumerator.pure) - , stateTokens(enumerator.stateTokens) - , proc(enumerator.proc) - , reading(enumerator.reading) - , start(enumerator.start) - , rowStart(enumerator.rowStart) - , columnStart(enumerator.columnStart) - , codeIndex(enumerator.codeIndex) - , cacheAvailable(enumerator.cacheAvailable) - , cacheToken(enumerator.cacheToken) - { - } - - RegexTokenEnumerator(PureInterpretor* _pure, const Array& _stateTokens, const wchar_t* _start, vint _codeIndex, RegexProc _proc) - :index(-1) - , pure(_pure) - , stateTokens(_stateTokens) - , start(_start) - , codeIndex(_codeIndex) - , proc(_proc) - , reading(_start) - { - } - - IEnumerator* Clone()const - { - return new RegexTokenEnumerator(*this); - } - - const RegexToken& Current()const - { - return token; - } - - vint Index()const - { - return index; - } - - bool Next() - { - if (!cacheAvailable && !*reading) return false; - if (cacheAvailable) - { - token = cacheToken; - cacheAvailable = false; - } - else - { - token.reading = reading; - token.start = 0; - token.length = 0; - token.token = -2; - token.completeToken = true; - } - - token.rowStart = rowStart; - token.columnStart = columnStart; - token.rowEnd = rowStart; - token.columnEnd = columnStart; - token.codeIndex = codeIndex; - - PureResult result; - while (*reading) - { - vint id = -1; - bool completeToken = true; - if (!pure->MatchHead(reading, start, result)) - { - result.start = reading - start; - - if (id == -1 && result.terminateState != -1) - { - vint state = pure->GetRelatedFinalState(result.terminateState); - if (state != -1) - { - id = stateTokens[state]; - } - } - - if (id == -1) - { - result.length = 1; - } - else - { - completeToken = false; - } - } - else - { - id = stateTokens.Get(result.finalState); - } - - if (id != -1 && proc.extendProc) - { - RegexProcessingToken token(result.start, result.length, id, completeToken, nullptr); - proc.extendProc(proc.argument, reading, -1, true, token); -#if _DEBUG - CHECK_ERROR(token.interTokenState == nullptr, L"RegexTokenEnumerator::Next()#The extendProc is only allowed to create interTokenState in RegexLexerColorizer."); -#endif - result.length = token.length; - id = token.token; - completeToken = token.completeToken; - } - - if (token.token == -2) - { - token.start = result.start; - token.length = result.length; - token.token = id; - token.completeToken = completeToken; - } - else if (token.token == id && id == -1) - { - token.length += result.length; - } - else - { - cacheAvailable = true; - cacheToken.reading = reading; - cacheToken.start = result.start; - cacheToken.length = result.length; - cacheToken.codeIndex = codeIndex; - cacheToken.token = id; - cacheToken.completeToken = completeToken; - } - reading += result.length; - - if (cacheAvailable) - { - break; - } - } - - index++; - - for (vint i = 0; i < token.length; i++) - { - token.rowEnd = rowStart; - token.columnEnd = columnStart; - if (token.reading[i] == L'\n') - { - rowStart++; - columnStart = 0; - } - else - { - columnStart++; - } - } - return true; - } - - void Reset() - { - index = -1; - reading = start; - cacheAvailable = false; - } - - void ReadToEnd(List& tokens, bool(*discard)(vint)) - { - while (Next()) - { - if (!discard(token.token)) - { - tokens.Add(token); - } - } - } - }; - - RegexTokens::RegexTokens(PureInterpretor* _pure, const Array& _stateTokens, const WString& _code, vint _codeIndex, RegexProc _proc) - :pure(_pure) - , stateTokens(_stateTokens) - , code(_code) - , codeIndex(_codeIndex) - , proc(_proc) - { - } - - RegexTokens::RegexTokens(const RegexTokens& tokens) - :pure(tokens.pure) - , stateTokens(tokens.stateTokens) - , code(tokens.code) - , codeIndex(tokens.codeIndex) - , proc(tokens.proc) - { - } - - IEnumerator* RegexTokens::CreateEnumerator()const - { - return new RegexTokenEnumerator(pure, stateTokens, code.Buffer(), codeIndex, proc); - } - - bool DefaultDiscard(vint token) - { - return false; - } - - void RegexTokens::ReadToEnd(collections::List& tokens, bool(*discard)(vint))const - { - if(discard==0) - { - discard=&DefaultDiscard; - } - RegexTokenEnumerator(pure, stateTokens, code.Buffer(), codeIndex, proc).ReadToEnd(tokens, discard); - } - -/*********************************************************************** -RegexLexerWalker -***********************************************************************/ - - RegexLexerWalker::RegexLexerWalker(PureInterpretor* _pure, const Array& _stateTokens) - :pure(_pure) - , stateTokens(_stateTokens) - { - } - - RegexLexerWalker::RegexLexerWalker(const RegexLexerWalker& tokens) - : pure(tokens.pure) - , stateTokens(tokens.stateTokens) - { - } - - RegexLexerWalker::~RegexLexerWalker() - { - } - - RegexTokens::~RegexTokens() - { - } - - vint RegexLexerWalker::GetStartState()const - { - return pure->GetStartState(); - } - - vint RegexLexerWalker::GetRelatedToken(vint state)const - { - vint finalState=pure->GetRelatedFinalState(state); - return finalState==-1?-1:stateTokens.Get(finalState); - } - - void RegexLexerWalker::Walk(wchar_t input, vint& state, vint& token, bool& finalState, bool& previousTokenStop)const - { - vint previousState=state; - token=-1; - finalState=false; - previousTokenStop=false; - if(state==-1) - { - state=pure->GetStartState(); - previousTokenStop=true; - } - - state=pure->Transit(input, state); - if(state==-1) - { - previousTokenStop=true; - if(previousState==-1) - { - finalState=true; - return; - } - else if(pure->IsFinalState(previousState)) - { - state=pure->Transit(input, pure->GetStartState()); - } - } - if(pure->IsFinalState(state)) - { - token=stateTokens.Get(state); - finalState=true; - return; - } - else - { - finalState=state==-1; - return; - } - } - - vint RegexLexerWalker::Walk(wchar_t input, vint state)const - { - vint token=-1; - bool finalState=false; - bool previousTokenStop=false; - Walk(input, state, token, finalState, previousTokenStop); - return state; - } - - bool RegexLexerWalker::IsClosedToken(const wchar_t* input, vint length)const - { - vint state=pure->GetStartState(); - for(vint i=0;iTransit(input[i], state); - if(state==-1) return true; - if(pure->IsDeadState(state)) return true; - } - return false; - } - - bool RegexLexerWalker::IsClosedToken(const WString& input)const - { - return IsClosedToken(input.Buffer(), input.Length()); - } - -/*********************************************************************** -RegexLexerColorizer -***********************************************************************/ - - RegexLexerColorizer::RegexLexerColorizer(const RegexLexerWalker& _walker, RegexProc _proc) - :walker(_walker) - , proc(_proc) - { - internalState.currentState = walker.GetStartState(); - } - - RegexLexerColorizer::RegexLexerColorizer(const RegexLexerColorizer& colorizer) - :walker(colorizer.walker) - , proc(colorizer.proc) - , internalState(colorizer.internalState) - { - } - - RegexLexerColorizer::~RegexLexerColorizer() - { - } - - RegexLexerColorizer::InternalState RegexLexerColorizer::GetInternalState() - { - return internalState; - } - void RegexLexerColorizer::SetInternalState(InternalState state) - { - internalState = state; - } - - void RegexLexerColorizer::Pass(wchar_t input) - { - WalkOneToken(&input, 1, 0, false); - } - - vint RegexLexerColorizer::GetStartState()const - { - return walker.GetStartState(); - } - - void RegexLexerColorizer::CallExtendProcAndColorizeProc(const wchar_t* input, vint length, RegexProcessingToken& token, bool colorize) - { - vint oldTokenLength = token.length; - proc.extendProc(proc.argument, input + token.start, length - token.start, false, token); -#if _DEBUG - { - bool pausedAtTheEnd = token.start + token.length == length && !token.completeToken; - CHECK_ERROR( - token.completeToken || pausedAtTheEnd, - L"RegexLexerColorizer::WalkOneToken(const wchar_t*, vint, vint, bool)#The extendProc is not allowed pause before the end of the input." - ); - CHECK_ERROR( - token.completeToken || token.token != -1, - L"RegexLexerColorizer::WalkOneToken(const wchar_t*, vint, vint, bool)#The extendProc is not allowed to pause without a valid token id." - ); - CHECK_ERROR( - oldTokenLength <= token.length, - L"RegexLexerColorizer::WalkOneToken(const wchar_t*, vint, vint, bool)#The extendProc is not allowed to decrease the token length." - ); - CHECK_ERROR( - (token.interTokenState == nullptr) == !pausedAtTheEnd, - L"RegexLexerColorizer::Colorize(const wchar_t*, vint, void*)#The extendProc should return an inter token state object if and only if a valid token does not end at the end of the input." - ); - } -#endif - if ((internalState.interTokenState = token.interTokenState)) - { - internalState.interTokenId = token.token; - internalState.currentState = walker.GetStartState(); - } - if (colorize) - { - proc.colorizeProc(proc.argument, token.start, token.length, token.token); - } - } - - vint RegexLexerColorizer::WalkOneToken(const wchar_t* input, vint length, vint start, bool colorize) - { - if (internalState.interTokenState) - { - RegexProcessingToken token(-1, -1, internalState.interTokenId, false, internalState.interTokenState); - proc.extendProc(proc.argument, input, length, false, token); -#if _DEBUG - { - bool pausedAtTheEnd = token.length == length && !token.completeToken; - CHECK_ERROR( - token.completeToken || pausedAtTheEnd, - L"RegexLexerColorizer::WalkOneToken(const wchar_t*, vint, vint, bool)#The extendProc is not allowed to pause before the end of the input." - ); - CHECK_ERROR( - token.completeToken || token.token == internalState.interTokenId, - L"RegexLexerColorizer::WalkOneToken(const wchar_t*, vint, vint, bool)#The extendProc is not allowed to continue pausing with a different token id." - ); - CHECK_ERROR( - (token.interTokenState == nullptr) == !pausedAtTheEnd, - L"RegexLexerColorizer::Colorize(const wchar_t*, vint, void*)#The extendProc should return an inter token state object if and only if a valid token does not end at the end of the input." - ); - } -#endif - if (colorize) - { - proc.colorizeProc(proc.argument, 0, token.length, token.token); - } - if (!(internalState.interTokenState = token.interTokenState)) - { - internalState.interTokenId = -1; - } - return token.length; - } - - vint lastFinalStateLength = 0; - vint lastFinalStateToken = -1; - - for (vint i = start; i < length; i++) - { - vint currentToken = -1; - bool finalState = false; - bool previousTokenStop = false; - walker.Walk(input[i], internalState.currentState, currentToken, finalState, previousTokenStop); - - if (previousTokenStop) - { - internalState.currentState = walker.GetStartState(); - if (proc.extendProc && lastFinalStateToken != -1) - { - RegexProcessingToken token(start, lastFinalStateLength, lastFinalStateToken, true, nullptr); - CallExtendProcAndColorizeProc(input, length, token, colorize); - return start + token.length; - } - else if (i == start) - { - if (colorize) - { - proc.colorizeProc(proc.argument, start, 1, -1); - } - return i + 1; - } - else - { - if (colorize) - { - proc.colorizeProc(proc.argument, start, lastFinalStateLength, lastFinalStateToken); - } - return start + lastFinalStateLength; - } - } - - if (finalState) - { - lastFinalStateLength = i + 1 - start; - lastFinalStateToken = currentToken; - } - } - - if (lastFinalStateToken != -1 && start + lastFinalStateLength == length) - { - if (proc.extendProc) - { - RegexProcessingToken token(start, lastFinalStateLength, lastFinalStateToken, true, nullptr); - CallExtendProcAndColorizeProc(input, length, token, colorize); - } - else if (colorize) - { - proc.colorizeProc(proc.argument, start, lastFinalStateLength, lastFinalStateToken); - } - } - else if (colorize) - { - proc.colorizeProc(proc.argument, start, length - start, walker.GetRelatedToken(internalState.currentState)); - } - return length; - } - - void* RegexLexerColorizer::Colorize(const wchar_t* input, vint length) - { - vint index = 0; - while (index != length) - { - index = WalkOneToken(input, length, index, true); - } - return internalState.interTokenState; - } - -/*********************************************************************** -RegexLexer -***********************************************************************/ - - RegexLexer::RegexLexer(const collections::IEnumerable& tokens, RegexProc _proc) - :proc(_proc) - { - // Build DFA for all tokens - List expressions; - List dfas; - CharRange::List subsets; - Ptr> enumerator = tokens.CreateEnumerator(); - while (enumerator->Next()) - { - const WString& code = enumerator->Current(); - - RegexExpression::Ref regex = ParseRegexExpression(code); - Expression::Ref expression = regex->Merge(); - expression->CollectCharSet(subsets); - expressions.Add(expression); - } - for (vint i = 0; i < expressions.Count(); i++) - { - Dictionary nfaStateMap; - Group dfaStateMap; - Expression::Ref expression = expressions[i]; - expression->ApplyCharSet(subsets); - Automaton::Ref eNfa = expression->GenerateEpsilonNfa(); - Automaton::Ref nfa = EpsilonNfaToNfa(eNfa, PureEpsilonChecker, nfaStateMap); - Automaton::Ref dfa = NfaToDfa(nfa, dfaStateMap); - dfas.Add(dfa); - } - - // Mark all states in DFAs - for (vint i = 0; i < dfas.Count(); i++) - { - Automaton::Ref dfa = dfas[i]; - for (vint j = 0; j < dfa->states.Count(); j++) - { - if (dfa->states[j]->finalState) - { - dfa->states[j]->userData = (void*)i; - } - else - { - dfa->states[j]->userData = (void*)dfas.Count(); - } - } - } - - // Connect all DFAs to an e-NFA - Automaton::Ref bigEnfa = new Automaton; - for (vint i = 0; i < dfas.Count(); i++) - { - CopyFrom(bigEnfa->states, dfas[i]->states); - CopyFrom(bigEnfa->transitions, dfas[i]->transitions); - } - bigEnfa->startState = bigEnfa->NewState(); - for (vint i = 0; i < dfas.Count(); i++) - { - bigEnfa->NewEpsilon(bigEnfa->startState, dfas[i]->startState); - } - - // Build a single DFA out of the e-NFA - Dictionary nfaStateMap; - Group dfaStateMap; - Automaton::Ref bigNfa = EpsilonNfaToNfa(bigEnfa, PureEpsilonChecker, nfaStateMap); - for (vint i = 0; i < nfaStateMap.Keys().Count(); i++) - { - void* userData = nfaStateMap.Values().Get(i)->userData; - nfaStateMap.Keys()[i]->userData = userData; - } - Automaton::Ref bigDfa = NfaToDfa(bigNfa, dfaStateMap); - for (vint i = 0; i < dfaStateMap.Keys().Count(); i++) - { - void* userData = dfaStateMap.GetByIndex(i).Get(0)->userData; - for (vint j = 1; j < dfaStateMap.GetByIndex(i).Count(); j++) - { - void* newData = dfaStateMap.GetByIndex(i).Get(j)->userData; - if (userData > newData) - { - userData = newData; - } - } - dfaStateMap.Keys()[i]->userData = userData; - } - - // Build state machine - pure = new PureInterpretor(bigDfa, subsets); - stateTokens.Resize(bigDfa->states.Count()); - for (vint i = 0; i < stateTokens.Count(); i++) - { - void* userData = bigDfa->states[i]->userData; - stateTokens[i] = (vint)userData; - } - } - - RegexLexer::~RegexLexer() - { - if (pure)delete pure; - } - - RegexTokens RegexLexer::Parse(const WString& code, vint codeIndex)const - { - pure->PrepareForRelatedFinalStateTable(); - return RegexTokens(pure, stateTokens, code, codeIndex, proc); - } - - RegexLexerWalker RegexLexer::Walk()const - { - pure->PrepareForRelatedFinalStateTable(); - return RegexLexerWalker(pure, stateTokens); - } - - RegexLexerColorizer RegexLexer::Colorize()const - { - return RegexLexerColorizer(Walk(), proc); - } - } -} - -/*********************************************************************** -.\REGEX\REGEXAUTOMATON.CPP -***********************************************************************/ - -namespace vl -{ - namespace regex_internal - { - using namespace collections; - -/*********************************************************************** -Automaton -***********************************************************************/ - - Automaton::Automaton() - { - startState=0; - } - - State* Automaton::NewState() - { - State* state=new State; - state->finalState=false; - state->userData=0; - states.Add(state); - return state; - } - - Transition* Automaton::NewTransition(State* start, State* end) - { - Transition* transition=new Transition; - transition->source=start; - transition->target=end; - start->transitions.Add(transition); - end->inputs.Add(transition); - transitions.Add(transition); - return transition; - } - - Transition* Automaton::NewChars(State* start, State* end, CharRange range) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::Chars; - transition->range=range; - return transition; - } - - Transition* Automaton::NewEpsilon(State* start, State* end) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::Epsilon; - return transition; - } - - Transition* Automaton::NewBeginString(State* start, State* end) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::BeginString; - return transition; - } - - Transition* Automaton::NewEndString(State* start, State* end) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::EndString; - return transition; - } - - Transition* Automaton::NewNop(State* start, State* end) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::Nop; - return transition; - } - - Transition* Automaton::NewCapture(State* start, State* end, vint capture) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::Capture; - transition->capture=capture; - return transition; - } - - Transition* Automaton::NewMatch(State* start, State* end, vint capture, vint index) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::Match; - transition->capture=capture; - transition->index=index; - return transition; - } - - Transition* Automaton::NewPositive(State* start, State* end) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::Positive; - return transition; - } - - Transition* Automaton::NewNegative(State* start, State* end) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::Negative; - return transition; - } - - Transition* Automaton::NewNegativeFail(State* start, State* end) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::NegativeFail; - return transition; - } - - Transition* Automaton::NewEnd(State* start, State* end) - { - Transition* transition=NewTransition(start, end); - transition->type=Transition::End; - return transition; - } - -/*********************************************************************** -Helpers -***********************************************************************/ - - bool PureEpsilonChecker(Transition* transition) - { - switch(transition->type) - { - case Transition::Epsilon: - case Transition::Nop: - case Transition::Capture: - case Transition::End: - return true; - default: - return false; - } - } - - bool RichEpsilonChecker(Transition* transition) - { - switch(transition->type) - { - case Transition::Epsilon: - return true; - default: - return false; - } - } - - bool AreEqual(Transition* transA, Transition* transB) - { - if(transA->type!=transB->type)return false; - switch(transA->type) - { - case Transition::Chars: - return transA->range==transB->range; - case Transition::Capture: - return transA->capture==transB->capture; - case Transition::Match: - return transA->capture==transB->capture && transA->index==transB->index; - default: - return true; - } - } - - // Collect epsilon states and non-epsilon transitions, their order are maintained to match the e-NFA - void CollectEpsilon(State* targetState, State* sourceState, bool(*epsilonChecker)(Transition*), List& epsilonStates, List& transitions) - { - if(!epsilonStates.Contains(sourceState)) - { - epsilonStates.Add(sourceState); - for(vint i=0;itransitions.Count();i++) - { - Transition* transition=sourceState->transitions[i]; - if(epsilonChecker(transition)) - { - if(!epsilonStates.Contains(transition->target)) - { - if(transition->target->finalState) - { - targetState->finalState=true; - } - CollectEpsilon(targetState, transition->target, epsilonChecker, epsilonStates, transitions); - } - } - else - { - transitions.Add(transition); - } - } - } - } - - Automaton::Ref EpsilonNfaToNfa(Automaton::Ref source, bool(*epsilonChecker)(Transition*), Dictionary& nfaStateMap) - { - Automaton::Ref target=new Automaton; - Dictionary stateMap; // source->target - List epsilonStates; // current epsilon closure - List transitions; // current non-epsilon transitions - - stateMap.Add(source->startState, target->NewState()); - nfaStateMap.Add(stateMap[source->startState], source->startState); - target->startState=target->states[0].Obj(); - CopyFrom(target->captureNames, source->captureNames); - - for(vint i=0;istates.Count();i++) - { - // Clear cache - State* targetState=target->states[i].Obj(); - State* sourceState=nfaStateMap[targetState]; - if(sourceState->finalState) - { - targetState->finalState=true; - } - epsilonStates.Clear(); - transitions.Clear(); - - // Collect epsilon states and non-epsilon transitions - CollectEpsilon(targetState, sourceState, epsilonChecker, epsilonStates, transitions); - - // Iterate through all non-epsilon transitions - for(vint j=0;jtarget)) - { - stateMap.Add(transition->target, target->NewState()); - nfaStateMap.Add(stateMap[transition->target], transition->target); - } - // Copy transition to connect between two non-epsilon state - Transition* newTransition=target->NewTransition(targetState, stateMap[transition->target]); - newTransition->capture=transition->capture; - newTransition->index=transition->index; - newTransition->range=transition->range; - newTransition->type=transition->type; - } - } - return target; - } - - Automaton::Ref NfaToDfa(Automaton::Ref source, Group& dfaStateMap) - { - Automaton::Ref target=new Automaton; - Group nfaTransitions; - List transitionClasses; // Maintain order for nfaTransitions.Keys - - CopyFrom(target->captureNames, source->captureNames); - State* startState=target->NewState(); - target->startState=startState; - dfaStateMap.Add(startState, source->startState); - - SortedList transitionTargets; - SortedList relativeStates; - transitionTargets.SetLessMemoryMode(false); - relativeStates.SetLessMemoryMode(false); - - for(vint i=0;istates.Count();i++) - { - State* currentState=target->states[i].Obj(); - nfaTransitions.Clear(); - transitionClasses.Clear(); - - // Iterate through all NFA states which represent the DFA state - const List& nfaStates=dfaStateMap[currentState]; - for(vint j=0;jtransitions.Count();k++) - { - Transition* nfaTransition=nfaState->transitions[k]; - // Check if there is any key in nfaTransitions that has the same input as the current transition - Transition* transitionClass=0; - for(vint l=0;l& transitionSet=nfaTransitions[transitionClasses[j]]; - // Sort all target states and keep unique - transitionTargets.Clear(); - for(vint l=0;ltarget; - if(!transitionTargets.Contains(nfaState)) - { - transitionTargets.Add(nfaState); - } - } - // Check if these NFA states represent a created DFA state - State* dfaState=0; - for(vint k=0;kNewState(); - for(vint k=0;kfinalState) - { - dfaState->finalState=true; - } - } - } - // Create corresponding DFA transition - Transition* transitionClass=transitionClasses[j]; - Transition* newTransition=target->NewTransition(currentState, dfaState); - newTransition->capture=transitionClass->capture; - newTransition->index=transitionClass->index; - newTransition->range=transitionClass->range; - newTransition->type=transitionClass->type; - } - } - - return target; - } - } -} - -/*********************************************************************** -.\REGEX\REGEXDATA.CPP -***********************************************************************/ - -namespace vl -{ - namespace regex_internal - { - -/*********************************************************************** -CharRange -***********************************************************************/ - - CharRange::CharRange() - :begin(L'\0') - ,end(L'\0') - { - } - - CharRange::CharRange(wchar_t _begin, wchar_t _end) - :begin(_begin) - ,end(_end) - { - } - - bool CharRange::operator<(CharRange item)const - { - return end(CharRange item)const - { - return item.end=(CharRange item)const - { - return *this>item || *this==item; - } - - bool CharRange::operator==(CharRange item)const - { - return begin==item.begin && end==item.end; - } - - bool CharRange::operator!=(CharRange item)const - { - return begin!=item.begin || item.end!=end; - } - - bool CharRange::operator<(wchar_t item)const - { - return end(wchar_t item)const - { - return item=(wchar_t item)const - { - return item<=end; - } - - bool CharRange::operator==(wchar_t item)const - { - return begin<=item && item<=end; - } - - bool CharRange::operator!=(wchar_t item)const - { - return item - { - public: - bool Apply(CharSetExpression* expression, Expression* target) - { - CharSetExpression* expected=dynamic_cast(target); - if(expected) - { - if(expression->reverse!=expected->reverse)return false; - if(expression->ranges.Count()!=expected->ranges.Count())return false; - for(vint i=0;iranges.Count();i++) - { - if(expression->ranges[i]!=expected->ranges[i])return false; - } - return true; - } - return false; - } - - bool Apply(LoopExpression* expression, Expression* target) - { - LoopExpression* expected=dynamic_cast(target); - if(expected) - { - if(expression->min!=expected->min)return false; - if(expression->max!=expected->max)return false; - if(expression->preferLong!=expected->preferLong)return false; - if(!Invoke(expression->expression, expected->expression.Obj()))return false; - return true; - } - return false; - } - - bool Apply(SequenceExpression* expression, Expression* target) - { - SequenceExpression* expected=dynamic_cast(target); - if(expected) - { - if(!Invoke(expression->left, expected->left.Obj()))return false; - if(!Invoke(expression->right, expected->right.Obj()))return false; - return true; - } - return false; - } - - bool Apply(AlternateExpression* expression, Expression* target) - { - AlternateExpression* expected=dynamic_cast(target); - if(expected) - { - if(!Invoke(expression->left, expected->left.Obj()))return false; - if(!Invoke(expression->right, expected->right.Obj()))return false; - return true; - } - return false; - } - - bool Apply(BeginExpression* expression, Expression* target) - { - BeginExpression* expected=dynamic_cast(target); - if(expected) - { - return true; - } - return false; - } - - bool Apply(EndExpression* expression, Expression* target) - { - EndExpression* expected=dynamic_cast(target); - if(expected) - { - return true; - } - return false; - } - - bool Apply(CaptureExpression* expression, Expression* target) - { - CaptureExpression* expected=dynamic_cast(target); - if(expected) - { - if(expression->name!=expected->name)return false; - if(!Invoke(expression->expression, expected->expression.Obj()))return false; - return true; - } - return false; - } - - bool Apply(MatchExpression* expression, Expression* target) - { - MatchExpression* expected=dynamic_cast(target); - if(expected) - { - if(expression->name!=expected->name)return false; - if(expression->index!=expected->index)return false; - return true; - } - return false; - } - - bool Apply(PositiveExpression* expression, Expression* target) - { - PositiveExpression* expected=dynamic_cast(target); - if(expected) - { - if(!Invoke(expression->expression, expected->expression.Obj()))return false; - return true; - } - return false; - } - - bool Apply(NegativeExpression* expression, Expression* target) - { - NegativeExpression* expected=dynamic_cast(target); - if(expected) - { - if(!Invoke(expression->expression, expected->expression.Obj()))return false; - return true; - } - return false; - } - - bool Apply(UsingExpression* expression, Expression* target) - { - UsingExpression* expected=dynamic_cast(target); - if(expected) - { - if(expression->name!=expected->name)return false; - return true; - } - return false; - } - }; - -/*********************************************************************** -HasNoExtensionAlgorithm -***********************************************************************/ - - class HasNoExtensionAlgorithm : public RegexExpressionAlgorithm - { - public: - bool Apply(CharSetExpression* expression, void* target) - { - return true; - } - - bool Apply(LoopExpression* expression, void* target) - { - return expression->preferLong && Invoke(expression->expression, 0); - } - - bool Apply(SequenceExpression* expression, void* target) - { - return Invoke(expression->left, 0) && Invoke(expression->right, 0); - } - - bool Apply(AlternateExpression* expression, void* target) - { - return Invoke(expression->left, 0) && Invoke(expression->right, 0); - } - - bool Apply(BeginExpression* expression, void* target) - { - return false; - } - - bool Apply(EndExpression* expression, void* target) - { - return false; - } - - bool Apply(CaptureExpression* expression, void* target) - { - return false; - } - - bool Apply(MatchExpression* expression, void* target) - { - return false; - } - - bool Apply(PositiveExpression* expression, void* target) - { - return false; - } - - bool Apply(NegativeExpression* expression, void* target) - { - return false; - } - - bool Apply(UsingExpression* expression, void* target) - { - return false; - } - }; - -/*********************************************************************** -CanTreatAsPureAlgorithm -***********************************************************************/ - - class CanTreatAsPureAlgorithm : public RegexExpressionAlgorithm - { - public: - bool Apply(CharSetExpression* expression, void* target) - { - return true; - } - - bool Apply(LoopExpression* expression, void* target) - { - return expression->preferLong && Invoke(expression->expression, 0); - } - - bool Apply(SequenceExpression* expression, void* target) - { - return Invoke(expression->left, 0) && Invoke(expression->right, 0); - } - - bool Apply(AlternateExpression* expression, void* target) - { - return Invoke(expression->left, 0) && Invoke(expression->right, 0); - } - - bool Apply(BeginExpression* expression, void* target) - { - return false; - } - - bool Apply(EndExpression* expression, void* target) - { - return false; - } - - bool Apply(CaptureExpression* expression, void* target) - { - return Invoke(expression->expression, 0); - } - - bool Apply(MatchExpression* expression, void* target) - { - return false; - } - - bool Apply(PositiveExpression* expression, void* target) - { - return false; - } - - bool Apply(NegativeExpression* expression, void* target) - { - return false; - } - - bool Apply(UsingExpression* expression, void* target) - { - return false; - } - }; - -/*********************************************************************** -CharSetNormalizationAlgorithm -***********************************************************************/ - - class NormalizedCharSet - { - public: - CharRange::List ranges; - }; - - class CharSetAlgorithm : public RegexExpressionAlgorithm - { - public: - virtual void Process(CharSetExpression* expression, NormalizedCharSet* target, CharRange range)=0; - - void Loop(CharSetExpression* expression, CharRange::List& ranges, NormalizedCharSet* target) - { - if(expression->reverse) - { - wchar_t begin=1; - for(vint i=0;ibegin) - { - Process(expression, target, CharRange(begin, range.begin-1)); - } - begin=range.end+1; - } - if(begin<=65535) - { - Process(expression, target, CharRange(begin, 65535)); - } - } - else - { - for(vint i=0;iexpression, target); - } - - void Apply(SequenceExpression* expression, NormalizedCharSet* target) - { - Invoke(expression->left, target); - Invoke(expression->right, target); - } - - void Apply(AlternateExpression* expression, NormalizedCharSet* target) - { - Invoke(expression->left, target); - Invoke(expression->right, target); - } - - void Apply(BeginExpression* expression, NormalizedCharSet* target) - { - } - - void Apply(EndExpression* expression, NormalizedCharSet* target) - { - } - - void Apply(CaptureExpression* expression, NormalizedCharSet* target) - { - Invoke(expression->expression, target); - } - - void Apply(MatchExpression* expression, NormalizedCharSet* target) - { - } - - void Apply(PositiveExpression* expression, NormalizedCharSet* target) - { - Invoke(expression->expression, target); - } - - void Apply(NegativeExpression* expression, NormalizedCharSet* target) - { - Invoke(expression->expression, target); - } - - void Apply(UsingExpression* expression, NormalizedCharSet* target) - { - } - }; - - class BuildNormalizedCharSetAlgorithm : public CharSetAlgorithm - { - public: - void Process(CharSetExpression* expression, NormalizedCharSet* target, CharRange range) - { - vint index=0; - while(indexranges.Count()) - { - CharRange current=target->ranges[index]; - if(currentrange) - { - index++; - } - else if(current.beginranges.RemoveAt(index); - target->ranges.Add(CharRange(current.begin, range.begin-1)); - target->ranges.Add(CharRange(range.begin, current.end)); - index++; - } - else if(current.begin>range.begin) - { - // range : [ ] - // current : [ ? - target->ranges.Add(CharRange(range.begin, current.begin-1)); - range.begin=current.begin; - } - else if(current.endrange.end) - { - // range : [ ] - // current : [ ] - target->ranges.RemoveAt(index); - target->ranges.Add(range); - target->ranges.Add(CharRange(range.end+1, current.end)); - return; - } - else - { - // range : [ ] - // current : [ ] - return; - } - } - target->ranges.Add(range); - } - - void Apply(CharSetExpression* expression, NormalizedCharSet* target) - { - Loop(expression, expression->ranges, target); - } - }; - - class SetNormalizedCharSetAlgorithm : public CharSetAlgorithm - { - public: - void Process(CharSetExpression* expression, NormalizedCharSet* target, CharRange range) - { - for(vint j=0;jranges.Count();j++) - { - CharRange targetRange=target->ranges[j]; - if(range.begin<=targetRange.begin && targetRange.end<=range.end) - { - expression->ranges.Add(targetRange); - } - } - } - - void Apply(CharSetExpression* expression, NormalizedCharSet* target) - { - CharRange::List source; - CopyFrom(source, expression->ranges); - expression->ranges.Clear(); - Loop(expression, source, target); - expression->reverse=false; - } - }; - -/*********************************************************************** -MergeAlgorithm -***********************************************************************/ - - class MergeParameter - { - public: - Expression::Map definitions; - RegexExpression* regex; - }; - - class MergeAlgorithm : public RegexExpressionAlgorithm - { - public: - Expression::Ref Apply(CharSetExpression* expression, MergeParameter* target) - { - Ptr result=new CharSetExpression; - CopyFrom(result->ranges, expression->ranges); - result->reverse=expression->reverse; - return result; - } - - Expression::Ref Apply(LoopExpression* expression, MergeParameter* target) - { - Ptr result=new LoopExpression; - result->max=expression->max; - result->min=expression->min; - result->preferLong=expression->preferLong; - result->expression=Invoke(expression->expression, target); - return result; - } - - Expression::Ref Apply(SequenceExpression* expression, MergeParameter* target) - { - Ptr result=new SequenceExpression; - result->left=Invoke(expression->left, target); - result->right=Invoke(expression->right, target); - return result; - } - - Expression::Ref Apply(AlternateExpression* expression, MergeParameter* target) - { - Ptr result=new AlternateExpression; - result->left=Invoke(expression->left, target); - result->right=Invoke(expression->right, target); - return result; - } - - Expression::Ref Apply(BeginExpression* expression, MergeParameter* target) - { - return new BeginExpression; - } - - Expression::Ref Apply(EndExpression* expression, MergeParameter* target) - { - return new EndExpression; - } - - Expression::Ref Apply(CaptureExpression* expression, MergeParameter* target) - { - Ptr result=new CaptureExpression; - result->expression=Invoke(expression->expression, target); - result->name=expression->name; - return result; - } - - Expression::Ref Apply(MatchExpression* expression, MergeParameter* target) - { - Ptr result=new MatchExpression; - result->name=expression->name; - result->index=expression->index; - return result; - } - - Expression::Ref Apply(PositiveExpression* expression, MergeParameter* target) - { - Ptr result=new PositiveExpression; - result->expression=Invoke(expression->expression, target); - return result; - } - - Expression::Ref Apply(NegativeExpression* expression, MergeParameter* target) - { - Ptr result=new NegativeExpression; - result->expression=Invoke(expression->expression, target); - return result; - } - - Expression::Ref Apply(UsingExpression* expression, MergeParameter* target) - { - if(target->definitions.Keys().Contains(expression->name)) - { - Expression::Ref reference=target->definitions[expression->name]; - if(reference) - { - return reference; - } - else - { - throw ArgumentException(L"Regular expression syntax error: Found reference loops in\""+expression->name+L"\".", L"vl::regex_internal::RegexExpression::Merge", L""); - } - } - else if(target->regex->definitions.Keys().Contains(expression->name)) - { - target->definitions.Add(expression->name, 0); - Expression::Ref result=Invoke(target->regex->definitions[expression->name], target); - target->definitions.Set(expression->name, result); - return result; - } - else - { - throw ArgumentException(L"Regular expression syntax error: Cannot find sub expression reference\""+expression->name+L"\".", L"vl::regex_internal::RegexExpression::Merge", L""); - } - } - }; - -/*********************************************************************** -EpsilonNfaAlgorithm -***********************************************************************/ - - class EpsilonNfaInfo - { - public: - Automaton::Ref automaton; - }; - - class EpsilonNfa - { - public: - State* start; - State* end; - - EpsilonNfa() - { - start=0; - end=0; - } - }; - - class EpsilonNfaAlgorithm : public RegexExpressionAlgorithm - { - public: - EpsilonNfa Connect(EpsilonNfa a, EpsilonNfa b, Automaton* target) - { - if(a.start) - { - target->NewEpsilon(a.end, b.start); - a.end=b.end; - return a; - } - else - { - return b; - } - } - - EpsilonNfa Apply(CharSetExpression* expression, Automaton* target) - { - EpsilonNfa nfa; - nfa.start=target->NewState(); - nfa.end=target->NewState(); - for(vint i=0;iranges.Count();i++) - { - target->NewChars(nfa.start, nfa.end, expression->ranges[i]); - } - return nfa; - } - - EpsilonNfa Apply(LoopExpression* expression, Automaton* target) - { - EpsilonNfa head; - for(vint i=0;imin;i++) - { - EpsilonNfa body=Invoke(expression->expression, target); - head=Connect(head, body, target); - } - if(expression->max==-1) - { - EpsilonNfa body=Invoke(expression->expression, target); - if(!head.start) - { - head.start=head.end=target->NewState(); - } - State* loopBegin=head.end; - State* loopEnd=target->NewState(); - if(expression->preferLong) - { - target->NewEpsilon(loopBegin, body.start); - target->NewEpsilon(body.end, loopBegin); - target->NewNop(loopBegin, loopEnd); - } - else - { - target->NewNop(loopBegin, loopEnd); - target->NewEpsilon(loopBegin, body.start); - target->NewEpsilon(body.end, loopBegin); - } - head.end=loopEnd; - } - else if(expression->max>expression->min) - { - for(vint i=expression->min;imax;i++) - { - EpsilonNfa body=Invoke(expression->expression, target); - State* start=target->NewState(); - State* end=target->NewState(); - if(expression->preferLong) - { - target->NewEpsilon(start, body.start); - target->NewEpsilon(body.end, end); - target->NewNop(start, end); - } - else - { - target->NewNop(start, end); - target->NewEpsilon(start, body.start); - target->NewEpsilon(body.end, end); - } - body.start=start; - body.end=end; - head=Connect(head, body, target); - } - } - return head; - } - - EpsilonNfa Apply(SequenceExpression* expression, Automaton* target) - { - EpsilonNfa a=Invoke(expression->left, target); - EpsilonNfa b=Invoke(expression->right, target); - return Connect(a, b, target); - } - - EpsilonNfa Apply(AlternateExpression* expression, Automaton* target) - { - EpsilonNfa result; - result.start=target->NewState(); - result.end=target->NewState(); - EpsilonNfa a=Invoke(expression->left, target); - EpsilonNfa b=Invoke(expression->right, target); - target->NewEpsilon(result.start, a.start); - target->NewEpsilon(a.end, result.end); - target->NewEpsilon(result.start, b.start); - target->NewEpsilon(b.end, result.end); - return result; - } - - EpsilonNfa Apply(BeginExpression* expression, Automaton* target) - { - EpsilonNfa result; - result.start=target->NewState(); - result.end=target->NewState(); - target->NewBeginString(result.start, result.end); - return result; - } - - EpsilonNfa Apply(EndExpression* expression, Automaton* target) - { - EpsilonNfa result; - result.start=target->NewState(); - result.end=target->NewState(); - target->NewEndString(result.start, result.end); - return result; - } - - EpsilonNfa Apply(CaptureExpression* expression, Automaton* target) - { - EpsilonNfa result; - result.start=target->NewState(); - result.end=target->NewState(); - - vint capture=-1; - if(expression->name!=L"") - { - capture=target->captureNames.IndexOf(expression->name); - if(capture==-1) - { - capture=target->captureNames.Count(); - target->captureNames.Add(expression->name); - } - } - - EpsilonNfa body=Invoke(expression->expression, target); - target->NewCapture(result.start, body.start, capture); - target->NewEnd(body.end, result.end); - return result; - } - - EpsilonNfa Apply(MatchExpression* expression, Automaton* target) - { - vint capture=-1; - if(expression->name!=L"") - { - capture=target->captureNames.IndexOf(expression->name); - if(capture==-1) - { - capture=target->captureNames.Count(); - target->captureNames.Add(expression->name); - } - } - EpsilonNfa result; - result.start=target->NewState(); - result.end=target->NewState(); - target->NewMatch(result.start, result.end, capture, expression->index); - return result; - } - - EpsilonNfa Apply(PositiveExpression* expression, Automaton* target) - { - EpsilonNfa result; - result.start=target->NewState(); - result.end=target->NewState(); - EpsilonNfa body=Invoke(expression->expression, target); - target->NewPositive(result.start, body.start); - target->NewEnd(body.end, result.end); - return result; - } - - EpsilonNfa Apply(NegativeExpression* expression, Automaton* target) - { - EpsilonNfa result; - result.start=target->NewState(); - result.end=target->NewState(); - EpsilonNfa body=Invoke(expression->expression, target); - target->NewNegative(result.start, body.start); - target->NewEnd(body.end, result.end); - target->NewNegativeFail(result.start, result.end); - return result; - } - - EpsilonNfa Apply(UsingExpression* expression, Automaton* target) - { - CHECK_FAIL(L"RegexExpression::GenerateEpsilonNfa()#UsingExpression cannot create state machine."); - } - }; - -/*********************************************************************** -Expression -***********************************************************************/ - - bool Expression::IsEqual(vl::regex_internal::Expression *expression) - { - return IsEqualAlgorithm().Invoke(this, expression); - } - - bool Expression::HasNoExtension() - { - return HasNoExtensionAlgorithm().Invoke(this, 0); - } - - bool Expression::CanTreatAsPure() - { - return CanTreatAsPureAlgorithm().Invoke(this, 0); - } - - void Expression::NormalizeCharSet(CharRange::List& subsets) - { - NormalizedCharSet normalized; - BuildNormalizedCharSetAlgorithm().Invoke(this, &normalized); - SetNormalizedCharSetAlgorithm().Invoke(this, &normalized); - CopyFrom(subsets, normalized.ranges); - } - - void Expression::CollectCharSet(CharRange::List& subsets) - { - NormalizedCharSet normalized; - CopyFrom(normalized.ranges, subsets); - BuildNormalizedCharSetAlgorithm().Invoke(this, &normalized); - CopyFrom(subsets, normalized.ranges); - } - - void Expression::ApplyCharSet(CharRange::List& subsets) - { - NormalizedCharSet normalized; - CopyFrom(normalized.ranges, subsets); - SetNormalizedCharSetAlgorithm().Invoke(this, &normalized); - } - - Automaton::Ref Expression::GenerateEpsilonNfa() - { - Automaton::Ref automaton=new Automaton; - EpsilonNfa result=EpsilonNfaAlgorithm().Invoke(this, automaton.Obj()); - automaton->startState=result.start; - result.end->finalState=true; - return automaton; - } - -/*********************************************************************** -CharSetExpression -***********************************************************************/ - - bool CharSetExpression::AddRangeWithConflict(CharRange range) - { - if(range.begin>range.end) - { - wchar_t t=range.begin; - range.begin=range.end; - range.end=t; - } - for(vint i=0;iranges[i])) - { - return false; - } - } - ranges.Add(range); - return true; - } - -/*********************************************************************** -RegexExpression -***********************************************************************/ - - Expression::Ref RegexExpression::Merge() - { - MergeParameter merge; - merge.regex=this; - return MergeAlgorithm().Invoke(expression, &merge); - } - -/*********************************************************************** -Expression::Apply -***********************************************************************/ - - void CharSetExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - - void LoopExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - - void SequenceExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - - void AlternateExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - - void BeginExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - - void EndExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - - void CaptureExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - - void MatchExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - - void PositiveExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - - void NegativeExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - - void UsingExpression::Apply(IRegexExpressionAlgorithm& algorithm) - { - algorithm.Visit(this); - } - } -} - -/*********************************************************************** -.\REGEX\REGEXPARSER.CPP -***********************************************************************/ - -namespace vl -{ - namespace regex_internal - { - -/*********************************************************************** -Helper Functions -***********************************************************************/ - - bool IsChar(const wchar_t*& input, wchar_t c) - { - if(*input==c) - { - input++; - return true; - } - else - { - return false; - } - } - - bool IsChars(const wchar_t*& input, const wchar_t* chars, wchar_t& c) - { - const wchar_t* position=::wcschr(chars, *input); - if(position) - { - c=*input++; - return true; - } - else - { - return false; - } - } - - bool IsStr(const wchar_t*& input, const wchar_t* str) - { - size_t len=wcslen(str); - if(wcsncmp(input, str, len)==0) - { - input+=len; - return true; - } - else - { - return false; - } - } - - bool IsChars(const wchar_t*& input, const wchar_t* chars) - { - wchar_t c; - return IsChars(input, chars, c); - } - - bool IsPositiveInteger(const wchar_t*& input, vint& number) - { - bool readed=false; - number=0; - while(L'0'<=*input && *input<=L'9') - { - number=number*10+(*input++)-L'0'; - readed=true; - } - return readed; - } - - bool IsName(const wchar_t*& input, WString& name) - { - const wchar_t* read=input; - if((L'A'<=*read && *read<=L'Z') || (L'a'<=*read && *read<=L'z') || *read==L'_') - { - read++; - while((L'A'<=*read && *read<=L'Z') || (L'a'<=*read && *read<=L'z') || (L'0'<=*read && *read<=L'9') || *read==L'_') - { - read++; - } - } - if(input==read) - { - return false; - } - else - { - name=WString(input, vint(read-input)); - input=read; - return true; - } - } - - Ptr ParseLoop(const wchar_t*& input) - { - vint min=0; - vint max=0; - if(!*input) - { - return 0; - } - else if(IsChar(input, L'+')) - { - min=1; - max=-1; - } - else if(IsChar(input, L'*')) - { - min=0; - max=-1; - } - else if(IsChar(input, L'?')) - { - min=0; - max=1; - } - else if(IsChar(input, L'{')) - { - if(IsPositiveInteger(input, min)) - { - if(IsChar(input, L',')) - { - if(!IsPositiveInteger(input, max)) - { - max=-1; - } - } - else - { - max=min; - } - if(!IsChar(input, L'}')) - { - goto THROW_EXCEPTION; - } - } - else - { - goto THROW_EXCEPTION; - } - } - else - { - return 0; - } - - { - LoopExpression* expression=new LoopExpression; - expression->min=min; - expression->max=max; - expression->preferLong=!IsChar(input, L'?'); - return expression; - } - THROW_EXCEPTION: - throw ArgumentException(L"Regular expression syntax error: Illegal loop expression.", L"vl::regex_internal::ParseLoop", L"input"); - } - - Ptr ParseCharSet(const wchar_t*& input) - { - if(!*input) - { - return 0; - } - else if(IsChar(input, L'^')) - { - return new BeginExpression; - } - else if(IsChar(input, L'$')) - { - return new EndExpression; - } - else if(IsChar(input, L'\\') || IsChar(input, L'/')) - { - Ptr expression=new CharSetExpression; - expression->reverse=false; - switch(*input) - { - case L'.': - expression->ranges.Add(CharRange(1, 65535)); - break; - case L'r': - expression->ranges.Add(CharRange(L'\r', L'\r')); - break; - case L'n': - expression->ranges.Add(CharRange(L'\n', L'\n')); - break; - case L't': - expression->ranges.Add(CharRange(L'\t', L'\t')); - break; - case L'\\':case L'/':case L'(':case L')':case L'+':case L'*':case L'?':case L'|': - case L'{':case L'}':case L'[':case L']':case L'<':case L'>': - case L'^':case L'$':case L'!':case L'=': - expression->ranges.Add(CharRange(*input, *input)); - break; - case L'S': - expression->reverse=true; - case L's': - expression->ranges.Add(CharRange(L' ', L' ')); - expression->ranges.Add(CharRange(L'\r', L'\r')); - expression->ranges.Add(CharRange(L'\n', L'\n')); - expression->ranges.Add(CharRange(L'\t', L'\t')); - break; - case L'D': - expression->reverse=true; - case L'd': - expression->ranges.Add(CharRange(L'0', L'9')); - break; - case L'L': - expression->reverse=true; - case L'l': - expression->ranges.Add(CharRange(L'_', L'_')); - expression->ranges.Add(CharRange(L'A', L'Z')); - expression->ranges.Add(CharRange(L'a', L'z')); - break; - case L'W': - expression->reverse=true; - case L'w': - expression->ranges.Add(CharRange(L'_', L'_')); - expression->ranges.Add(CharRange(L'0', L'9')); - expression->ranges.Add(CharRange(L'A', L'Z')); - expression->ranges.Add(CharRange(L'a', L'z')); - break; - default: - throw ArgumentException(L"Regular expression syntax error: Illegal character escaping.", L"vl::regex_internal::ParseCharSet", L"input"); - } - input++; - return expression; - } - else if(IsChar(input, L'[')) - { - Ptr expression=new CharSetExpression; - if(IsChar(input, L'^')) - { - expression->reverse=true; - } - else - { - expression->reverse=false; - } - bool midState=false; - wchar_t a=L'\0'; - wchar_t b=L'\0'; - while(true) - { - if(IsChar(input, L'\\') || IsChar(input, L'/')) - { - wchar_t c=L'\0'; - switch(*input) - { - case L'r': - c=L'\r'; - break; - case L'n': - c=L'\n'; - break; - case L't': - c=L'\t'; - break; - case L'-':case L'[':case L']':case L'\\':case L'/':case L'^':case L'$': - c=*input; - break; - default: - throw ArgumentException(L"Regular expression syntax error: Illegal character escaping, only \"rnt-[]\\/\" are legal escaped characters in [].", L"vl::regex_internal::ParseCharSet", L"input"); - } - input++; - midState?b=c:a=c; - midState=!midState; - } - else if(IsChars(input, L"-]")) - { - goto THROW_EXCEPTION; - } - else if(*input) - { - midState?b=*input++:a=*input++; - midState=!midState; - } - else - { - goto THROW_EXCEPTION; - } - if(IsChar(input, L']')) - { - if(midState) - { - b=a; - } - if(!expression->AddRangeWithConflict(CharRange(a, b))) - { - goto THROW_EXCEPTION; - } - break; - } - else if(IsChar(input, L'-')) - { - if(!midState) - { - goto THROW_EXCEPTION; - } - } - else - { - if(midState) - { - b=a; - } - if(expression->AddRangeWithConflict(CharRange(a, b))) - { - midState=false; - } - else - { - goto THROW_EXCEPTION; - } - } - } - return expression; - THROW_EXCEPTION: - throw ArgumentException(L"Regular expression syntax error: Illegal character set definition."); - } - else if(IsChars(input, L"()+*?{}|")) - { - input--; - return 0; - } - else - { - CharSetExpression* expression=new CharSetExpression; - expression->reverse=false; - expression->ranges.Add(CharRange(*input, *input)); - input++; - return expression; - } - } - - Ptr ParseFunction(const wchar_t*& input) - { - if(IsStr(input, L"(=")) - { - Ptr sub=ParseExpression(input); - if(!IsChar(input, L')')) - { - goto NEED_RIGHT_BRACKET; - } - PositiveExpression* expression=new PositiveExpression; - expression->expression=sub; - return expression; - } - else if(IsStr(input, L"(!")) - { - Ptr sub=ParseExpression(input); - if(!IsChar(input, L')')) - { - goto NEED_RIGHT_BRACKET; - } - NegativeExpression* expression=new NegativeExpression; - expression->expression=sub; - return expression; - } - else if(IsStr(input, L"(<&")) - { - WString name; - if(!IsName(input, name)) - { - goto NEED_NAME; - } - if(!IsChar(input, L'>')) - { - goto NEED_GREATER; - } - if(!IsChar(input, L')')) - { - goto NEED_RIGHT_BRACKET; - } - UsingExpression* expression=new UsingExpression; - expression->name=name; - return expression; - } - else if(IsStr(input, L"(<$")) - { - WString name; - vint index=-1; - if(IsName(input, name)) - { - if(IsChar(input, L';')) - { - if(!IsPositiveInteger(input, index)) - { - goto NEED_NUMBER; - } - } - } - else if(!IsPositiveInteger(input, index)) - { - goto NEED_NUMBER; - } - if(!IsChar(input, L'>')) - { - goto NEED_GREATER; - } - if(!IsChar(input, L')')) - { - goto NEED_RIGHT_BRACKET; - } - MatchExpression* expression=new MatchExpression; - expression->name=name; - expression->index=index; - return expression; - } - else if(IsStr(input, L"(<")) - { - WString name; - if(!IsName(input, name)) - { - goto NEED_NAME; - } - if(!IsChar(input, L'>')) - { - goto NEED_GREATER; - } - Ptr sub=ParseExpression(input); - if(!IsChar(input, L')')) - { - goto NEED_RIGHT_BRACKET; - } - CaptureExpression* expression=new CaptureExpression; - expression->name=name; - expression->expression=sub; - return expression; - } - else if(IsStr(input, L"(?")) - { - Ptr sub=ParseExpression(input); - if(!IsChar(input, L')')) - { - goto NEED_RIGHT_BRACKET; - } - CaptureExpression* expression=new CaptureExpression; - expression->expression=sub; - return expression; - } - else if(IsChar(input, L'(')) - { - Ptr sub=ParseExpression(input); - if(!IsChar(input, L')')) - { - goto NEED_RIGHT_BRACKET; - } - return sub; - } - else - { - return 0; - } - NEED_RIGHT_BRACKET: - throw ArgumentException(L"Regular expression syntax error: \")\" expected.", L"vl::regex_internal::ParseFunction", L"input"); - NEED_GREATER: - throw ArgumentException(L"Regular expression syntax error: \">\" expected.", L"vl::regex_internal::ParseFunction", L"input"); - NEED_NAME: - throw ArgumentException(L"Regular expression syntax error: Identifier expected.", L"vl::regex_internal::ParseFunction", L"input"); - NEED_NUMBER: - throw ArgumentException(L"Regular expression syntax error: Number expected.", L"vl::regex_internal::ParseFunction", L"input"); - } - - Ptr ParseUnit(const wchar_t*& input) - { - Ptr unit=ParseCharSet(input); - if(!unit) - { - unit=ParseFunction(input); - } - if(!unit) - { - return 0; - } - Ptr loop; - while((loop=ParseLoop(input))) - { - loop->expression=unit; - unit=loop; - } - return unit; - } - - Ptr ParseJoin(const wchar_t*& input) - { - Ptr expression=ParseUnit(input); - while(true) - { - Ptr right=ParseUnit(input); - if(right) - { - SequenceExpression* sequence=new SequenceExpression; - sequence->left=expression; - sequence->right=right; - expression=sequence; - } - else - { - break; - } - } - return expression; - } - - Ptr ParseAlt(const wchar_t*& input) - { - Ptr expression=ParseJoin(input); - while(true) - { - if(IsChar(input, L'|')) - { - Ptr right=ParseJoin(input); - if(right) - { - AlternateExpression* alternate=new AlternateExpression; - alternate->left=expression; - alternate->right=right; - expression=alternate; - } - else - { - throw ArgumentException(L"Regular expression syntax error: Expression expected.", L"vl::regex_internal::ParseAlt", L"input"); - } - } - else - { - break; - } - } - return expression; - } - - Ptr ParseExpression(const wchar_t*& input) - { - return ParseAlt(input); - } - - RegexExpression::Ref ParseRegexExpression(const WString& code) - { - RegexExpression::Ref regex=new RegexExpression; - const wchar_t* start=code.Buffer(); - const wchar_t* input=start; - try - { - while(IsStr(input, L"(<#")) - { - WString name; - if(!IsName(input, name)) - { - throw ArgumentException(L"Regular expression syntax error: Identifier expected.", L"vl::regex_internal::ParseRegexExpression", L"code"); - } - if(!IsChar(input, L'>')) - { - throw ArgumentException(L"Regular expression syntax error: \">\" expected.", L"vl::regex_internal::ParseFunction", L"input"); - } - Ptr sub=ParseExpression(input); - if(!IsChar(input, L')')) - { - throw ArgumentException(L"Regular expression syntax error: \")\" expected.", L"vl::regex_internal::ParseFunction", L"input"); - } - if(regex->definitions.Keys().Contains(name)) - { - throw ArgumentException(L"Regular expression syntax error: Found duplicated sub expression name: \""+name+L"\". ", L"vl::regex_internal::ParseFunction", L"input"); - } - else - { - regex->definitions.Add(name, sub); - } - } - regex->expression=ParseExpression(input); - if(!regex->expression) - { - throw ArgumentException(L"Regular expression syntax error: Expression expected.", L"vl::regex_internal::ParseUnit", L"input"); - } - if(*input) - { - throw ArgumentException(L"Regular expression syntax error: Found unnecessary tokens.", L"vl::regex_internal::ParseUnit", L"input"); - } - return regex; - } - catch(const ArgumentException& e) - { - throw ParsingException(e.Message(), code, input-start); - } - } - - WString EscapeTextForRegex(const WString& literalString) - { - WString result; - for(vint i=0;i': - case L'^':case L'$':case L'!':case L'=': - result+=WString(L"\\")+c; - break; - case L'\r': - result+=L"\\r"; - break; - case L'\n': - result+=L"\\n"; - break; - case L'\t': - result+=L"\\t"; - break; - default: - result+=c; - } - } - return result; - } - - WString UnescapeTextForRegex(const WString& escapedText) - { - WString result; - for(vint i=0;i': - case L'^':case L'$':case L'!':case L'=': - return false; - } - } - } - return true; - } - } -} - -/*********************************************************************** -.\REGEX\REGEXPURE.CPP -***********************************************************************/ - -namespace vl -{ - namespace regex_internal - { - -/*********************************************************************** -PureInterpretor -***********************************************************************/ - - PureInterpretor::PureInterpretor(Automaton::Ref dfa, CharRange::List& subsets) - :transition(0) - ,finalState(0) - ,relatedFinalState(0) - { - stateCount=dfa->states.Count(); - charSetCount=subsets.Count()+1; - startState=dfa->states.IndexOf(dfa->startState); - - // Map char to input index (equivalent char class) - for(vint i=0;istates[i].Obj(); - for(vint j=0;jtransitions.Count();j++) - { - Transition* dfaTransition=state->transitions[j]; - switch(dfaTransition->type) - { - case Transition::Chars: - { - vint index=subsets.IndexOf(dfaTransition->range); - if(index==-1) - { - CHECK_ERROR(false, L"PureInterpretor::PureInterpretor(Automaton::Ref, CharRange::List&)#Specified chars don't appear in the normalized char ranges."); - } - transition[i][index]=dfa->states.IndexOf(dfaTransition->target); - } - break; - default: - CHECK_ERROR(false, L"PureInterpretor::PureInterpretor(Automaton::Ref, CharRange::List&)#PureInterpretor only accepts Transition::Chars transitions."); - } - } - } - - // Mark final states - finalState=new bool[stateCount]; - for(vint i=0;istates[i]->finalState; - } - } - - PureInterpretor::~PureInterpretor() - { - if(relatedFinalState) delete[] relatedFinalState; - delete[] finalState; - for(vint i=0;i=SupportedCharCount)break; -#endif - vint charIndex=charMap[*read++]; - currentState=transition[currentState][charIndex]; - } - - if(result.finalState==-1) - { - if(terminateLength>0) - { - result.terminateState=terminateState; - } - result.length=terminateLength; - return false; - } - else - { - return true; - } - } - - bool PureInterpretor::Match(const wchar_t* input, const wchar_t* start, PureResult& result) - { - const wchar_t* read=input; - while(*read) - { - if(MatchHead(read, start, result)) - { - return true; - } - read++; - } - return false; - } - - vint PureInterpretor::GetStartState() - { - return startState; - } - - vint PureInterpretor::Transit(wchar_t input, vint state) - { - if(0<=state && state - struct POD - { - static const bool Result = true; - }; - - template<> - struct POD - { - static const bool Result = true; - }; - - namespace regex_internal - { - using namespace collections; - - void Push(List& elements, vint& available, vint& count, const ExtensionSaver& element) - { - if(elements.Count()==count) - { - elements.Add(element); - } - else - { - elements[count]=element; - } - ExtensionSaver& current=elements[count]; - current.previous=available; - available=count++; - } - - ExtensionSaver Pop(List& elements, vint& available, vint& count) - { - ExtensionSaver& current=elements[available]; - available=current.previous; - return current; - } - - template - void PushNonSaver(List& elements, vint& count, const T& element) - { - if(elements.Count()==count) - { - elements.Add(element); - } - else - { - elements[count]=element; - } - count++; - } - - template - T PopNonSaver(List& elements, vint& count) - { - return elements[--count]; - } - } - - namespace regex_internal - { -/*********************************************************************** -CaptureRecord -***********************************************************************/ - - bool CaptureRecord::operator==(const CaptureRecord& record)const - { - return capture==record.capture && start==record.start && length==record.length; - } - -/*********************************************************************** -RichInterpretor -***********************************************************************/ - - RichInterpretor::RichInterpretor(Automaton::Ref _dfa) - :dfa(_dfa) - { - datas=new UserData[dfa->states.Count()]; - - for(vint i=0;istates.Count();i++) - { - State* state=dfa->states[i].Obj(); - vint charEdges=0; - vint nonCharEdges=0; - bool mustSave=false; - for(vint j=0;jtransitions.Count();j++) - { - if(state->transitions[j]->type==Transition::Chars) - { - charEdges++; - } - else - { - if(state->transitions[j]->type==Transition::Negative || - state->transitions[j]->type==Transition::Positive) - { - mustSave=true; - } - nonCharEdges++; - } - } - datas[i].NeedKeepState=mustSave || nonCharEdges>1 || (nonCharEdges!=0 && charEdges!=0); - state->userData=&datas[i]; - } - } - - RichInterpretor::~RichInterpretor() - { - delete[] datas; - } - - bool RichInterpretor::MatchHead(const wchar_t* input, const wchar_t* start, RichResult& result) - { - List stateSavers; - List extensionSavers; - - StateSaver currentState; - currentState.captureCount=0; - currentState.currentState=dfa->startState; - currentState.extensionSaverAvailable=-1; - currentState.extensionSaverCount=0; - currentState.minTransition=0; - currentState.reading=input; - currentState.stateSaverCount=0; - currentState.storeType=StateSaver::Other; - - while (!currentState.currentState->finalState) - { - bool found = false; // true means at least one transition matches the input - StateSaver oldState = currentState; - // Iterate through all transitions from the current state - for (vint i = currentState.minTransition; i < currentState.currentState->transitions.Count(); i++) - { - Transition* transition = currentState.currentState->transitions[i]; - switch (transition->type) - { - case Transition::Chars: - { - // match the input if the current character fall into the range - CharRange range = transition->range; - found = - range.begin <= *currentState.reading && - range.end >= *currentState.reading; - if (found) - { - currentState.reading++; - } - } - break; - case Transition::BeginString: - { - // match the input if this is the first character, and it is not consumed - found = currentState.reading == start; - } - break; - case Transition::EndString: - { - // match the input if this is after the last character, and it is not consumed - found = *currentState.reading == L'\0'; - } - break; - case Transition::Nop: - { - // match without any condition - found = true; - } - break; - case Transition::Capture: - { - // Push the capture information - ExtensionSaver saver; - saver.captureListIndex = currentState.captureCount; - saver.reading = currentState.reading; - saver.transition = transition; - Push(extensionSavers, currentState.extensionSaverAvailable, currentState.extensionSaverCount, saver); - - // Push the capture record, and it will be written if the input matches the regex - CaptureRecord capture; - capture.capture = transition->capture; - capture.start = currentState.reading - start; - capture.length = -1; - PushNonSaver(result.captures, currentState.captureCount, capture); - - found = true; - } - break; - case Transition::Match: - { - vint index = 0; - for (vint j = 0; j < currentState.captureCount; j++) - { - CaptureRecord& capture = result.captures[j]; - // If the capture name matched - if (capture.capture == transition->capture) - { - // If the capture index matched, or it is -1 - if (capture.length != -1 && (transition->index == -1 || transition->index == index)) - { - // If the captured text matched - if (wcsncmp(start + capture.start, currentState.reading, capture.length) == 0) - { - // Consume so much input - currentState.reading += capture.length; - found = true; - break; - } - } - - // Fail if f the captured text with the specified name and index doesn't match - if (transition->index != -1 && index == transition->index) - { - break; - } - else - { - index++; - } - } - } - } - break; - case Transition::Positive: - { - // Push the positive lookahead information - ExtensionSaver saver; - saver.captureListIndex = -1; - saver.reading = currentState.reading; - saver.transition = transition; - Push(extensionSavers, currentState.extensionSaverAvailable, currentState.extensionSaverCount, saver); - - // Set found = true so that PushNonSaver(oldState) happens later - oldState.storeType = StateSaver::Positive; - found = true; - } - break; - case Transition::Negative: - { - // Push the positive lookahead information - - ExtensionSaver saver; - saver.captureListIndex = -1; - saver.reading = currentState.reading; - saver.transition = transition; - Push(extensionSavers, currentState.extensionSaverAvailable, currentState.extensionSaverCount, saver); - - // Set found = true so that PushNonSaver(oldState) happens later - oldState.storeType = StateSaver::Negative; - found = true; - } - break; - case Transition::NegativeFail: - { - // NegativeFail will be used when the nagative lookahead failed - } - break; - case Transition::End: - { - // Find the corresponding extension saver so that we can know how to deal with a matched sub regex that ends here - ExtensionSaver extensionSaver = Pop(extensionSavers, currentState.extensionSaverAvailable, currentState.extensionSaverCount); - switch (extensionSaver.transition->type) - { - case Transition::Capture: - { - // Write the captured text - CaptureRecord& capture = result.captures[extensionSaver.captureListIndex]; - capture.length = (currentState.reading - start) - capture.start; - found = true; - } - break; - case Transition::Positive: - // Find the last positive lookahead state saver - for (vint j = currentState.stateSaverCount - 1; j >= 0; j--) - { - StateSaver& stateSaver = stateSavers[j]; - if (stateSaver.storeType == StateSaver::Positive) - { - // restore the parsing state just before matching the positive lookahead, since positive lookahead doesn't consume input - oldState.reading = stateSaver.reading; - oldState.stateSaverCount = j; - currentState.reading = stateSaver.reading; - currentState.stateSaverCount = j; - break; - } - } - found = true; - break; - case Transition::Negative: - // Find the last negative lookahead state saver - for (vint j = currentState.stateSaverCount - 1; j >= 0; j--) - { - StateSaver& stateSaver = stateSavers[j]; - if (stateSaver.storeType == StateSaver::Negative) - { - // restore the parsing state just before matching the negative lookahead, since positive lookahead doesn't consume input - oldState = stateSaver; - oldState.storeType = StateSaver::Other; - currentState = stateSaver; - currentState.storeType = StateSaver::Other; - i = currentState.minTransition - 1; - break; - } - } - break; - default:; - } - } - break; - default:; - } - - // Save the parsing state when necessary - if (found) - { - UserData* data = (UserData*)currentState.currentState->userData; - if (data->NeedKeepState) - { - oldState.minTransition = i + 1; - PushNonSaver(stateSavers, currentState.stateSaverCount, oldState); - } - currentState.currentState = transition->target; - currentState.minTransition = 0; - break; - } - } - - // If no transition from the current state can be used - if (!found) - { - // If there is a chance to do backtracking - if (currentState.stateSaverCount) - { - currentState = PopNonSaver(stateSavers, currentState.stateSaverCount); - // minTransition - 1 is always valid since the value is stored with adding 1 - // So minTransition - 1 record the transition, which is the reason the parsing state is saved - if (currentState.currentState->transitions[currentState.minTransition - 1]->type == Transition::Negative) - { - // Find the next NegativeFail transition - // Because when a negative lookahead regex failed to match, it is actually succeeded - // Since a negative lookahead means we don't want to match this regex - for (vint i = 0; i < currentState.currentState->transitions.Count(); i++) - { - Transition* transition = currentState.currentState->transitions[i]; - if (transition->type == Transition::NegativeFail) - { - // Restore the state to the target of NegativeFail to let the parsing continue - currentState.currentState = transition->target; - currentState.minTransition = 0; - currentState.storeType = StateSaver::Other; - break; - } - } - } - } - else - { - break; - } - } - } - - if (currentState.currentState->finalState) - { - // Keep available captures if succeeded - result.start = input - start; - result.length = (currentState.reading - start) - result.start; - for (vint i = result.captures.Count() - 1; i >= currentState.captureCount; i--) - { - result.captures.RemoveAt(i); - } - return true; - } - else - { - // Clear captures if failed - result.captures.Clear(); - return false; - } - } - - bool RichInterpretor::Match(const wchar_t* input, const wchar_t* start, RichResult& result) - { - const wchar_t* read=input; - while(*read) - { - if(MatchHead(read, start, result)) - { - return true; - } - read++; - } - return false; - } - - const List& RichInterpretor::CaptureNames() - { - return dfa->captureNames; - } - } -} - -/*********************************************************************** -.\REGEX\REGEXWRITER.CPP -***********************************************************************/ - -namespace vl -{ - namespace regex - { - using namespace vl::regex_internal; - -/*********************************************************************** -RegexNode -***********************************************************************/ - - RegexNode::RegexNode(vl::regex_internal::Expression::Ref _expression) - :expression(_expression) - { - } - - RegexNode RegexNode::Some()const - { - return Loop(1, -1); - } - - RegexNode RegexNode::Any()const - { - return Loop(0, -1); - } - - RegexNode RegexNode::Opt()const - { - return Loop(0, 1); - } - - RegexNode RegexNode::Loop(vint min, vint max)const - { - LoopExpression* target=new LoopExpression; - target->min=min; - target->max=max; - target->preferLong=true; - target->expression=expression; - return RegexNode(target); - } - - RegexNode RegexNode::AtLeast(vint min)const - { - return Loop(min, -1); - } - - RegexNode RegexNode::operator+(const RegexNode& node)const - { - SequenceExpression* target=new SequenceExpression; - target->left=expression; - target->right=node.expression; - return RegexNode(target); - } - - RegexNode RegexNode::operator|(const RegexNode& node)const - { - AlternateExpression* target=new AlternateExpression; - target->left=expression; - target->right=node.expression; - return RegexNode(target); - } - - RegexNode RegexNode::operator+()const - { - PositiveExpression* target=new PositiveExpression; - target->expression=expression; - return RegexNode(target); - } - - RegexNode RegexNode::operator-()const - { - NegativeExpression* target=new NegativeExpression; - target->expression=expression; - return RegexNode(target); - } - - RegexNode RegexNode::operator!()const - { - CharSetExpression* source=dynamic_cast(expression.Obj()); - CHECK_ERROR(source, L"RegexNode::operator!()#operator ! can only applies on charset expressions."); - Ptr target=new CharSetExpression; - CopyFrom(target->ranges, source->ranges); - target->reverse=!source->reverse; - return RegexNode(target); - } - - RegexNode RegexNode::operator%(const RegexNode& node)const - { - CharSetExpression* left=dynamic_cast(expression.Obj()); - CharSetExpression* right=dynamic_cast(node.expression.Obj()); - CHECK_ERROR(left && right && !left->reverse && !right->reverse, L"RegexNode::operator%(const RegexNode&)#operator % only connects non-reverse charset expressions."); - Ptr target=new CharSetExpression; - target->reverse=false; - CopyFrom(target->ranges, left->ranges); - for(vint i=0;iranges.Count();i++) - { - if(!target->AddRangeWithConflict(right->ranges[i])) - { - CHECK_ERROR(false, L"RegexNode::operator%(const RegexNode&)#Failed to create charset expression from operator %."); - } - } - return RegexNode(target); - } - -/*********************************************************************** -Regex Writer -***********************************************************************/ - - RegexNode rCapture(const WString& name, const RegexNode& node) - { - CaptureExpression* target=new CaptureExpression; - target->name=name; - target->expression=node.expression; - return RegexNode(target); - } - - RegexNode rUsing(const WString& name) - { - UsingExpression* target=new UsingExpression; - target->name=name; - return RegexNode(target); - } - - RegexNode rMatch(const WString& name, vint index) - { - MatchExpression* target=new MatchExpression; - target->name=name; - target->index=index; - return RegexNode(target); - } - - RegexNode rMatch(vint index) - { - MatchExpression* target=new MatchExpression; - target->index=index; - return RegexNode(target); - } - - RegexNode rBegin() - { - return RegexNode(new BeginExpression); - } - - RegexNode rEnd() - { - return RegexNode(new EndExpression); - } - - RegexNode rC(wchar_t a, wchar_t b) - { - if(!b)b=a; - CharSetExpression* target=new CharSetExpression; - target->reverse=false; - target->AddRangeWithConflict(CharRange(a, b)); - return RegexNode(target); - } - - RegexNode r_d() - { - return rC(L'0', L'9'); - } - - RegexNode r_l() - { - return rC(L'a', L'z')%rC(L'A', L'Z')%rC(L'_'); - } - - RegexNode r_w() - { - return rC(L'0', L'9')%rC(L'a', L'z')%rC(L'A', L'Z')%rC(L'_'); - } - - RegexNode rAnyChar() - { - return rC(1, 65535); - } - } -} - -/*********************************************************************** -.\STREAM\ACCESSOR.CPP -***********************************************************************/ - -namespace vl -{ - namespace stream - { - using namespace collections; - -/*********************************************************************** -TextReader -***********************************************************************/ - - WString TextReader::ReadString(vint length) - { - wchar_t* buffer=new wchar_t[length+1]; - vint i=0; - for(;i0 && result[result.Length()-1]==L'\r') - { - return result.Left(result.Length()-1); - } - else - { - return result; - } - } - - WString TextReader::ReadToEnd() - { - WString result; - auto buffer = new wchar_t[65537]; - buffer[0]=L'\0'; - vint i=0; - while(true) - { - wchar_t c=ReadChar(); - if(c==L'\0') - { - buffer[i]=L'\0'; - result+=buffer; - buffer[0]=L'\0'; - i=0; - break; - } - else - { - if(i==65536) - { - buffer[i]=L'\0'; - result+=buffer; - buffer[0]=L'\0'; - i=0; - } - buffer[i++]=c; - } - } - result+=buffer; - delete[] buffer; - return result; - } - -/*********************************************************************** -TextWriter -***********************************************************************/ - - void TextWriter::WriteString(const wchar_t* string, vint charCount) - { - while(*string) - { - WriteChar(*string++); - } - } - - void TextWriter::WriteString(const wchar_t* string) - { - WriteString(string, (vint)wcslen(string)); - } - - void TextWriter::WriteString(const WString& string) - { - if(string.Length()) - { - WriteString(string.Buffer(), string.Length()); - } - } - - void TextWriter::WriteLine(const wchar_t* string, vint charCount) - { - WriteString(string, charCount); - WriteString(L"\r\n", 2); - } - - void TextWriter::WriteLine(const wchar_t* string) - { - WriteString(string); - WriteString(L"\r\n", 2); - } - - void TextWriter::WriteLine(const WString& string) - { - WriteString(string); - WriteString(L"\r\n", 2); - } - - namespace monospace_tabling - { - void WriteBorderLine(TextWriter& writer, Array& columnWidths, vint columns) - { - writer.WriteChar(L'+'); - for(vint i=0;i& columnWidths, vint rowHeight, vint columns, Array& tableByRow, vint startRow) - { - vint cellStart=startRow*columns; - for(vint r=0;r=length;i--) - { - writer.WriteChar(L' '); - } - writer.WriteChar(L'|'); - } - writer.WriteLine(L""); - } - } - } - using namespace monospace_tabling; - - void TextWriter::WriteMonospacedEnglishTable(collections::Array& tableByRow, vint rows, vint columns) - { - Array rowHeights(rows); - Array columnWidths(columns); - for(vint i=0;iremain) length=remain; - WString result=string.Sub(current, length); - current+=length; - return result; - } - } - - WString StringReader::ReadLine() - { - PrepareIfLastCallIsReadLine(); - if(IsEnd()) - { - return L""; - } - else - { - vint lineEnd=current; - while(lineEndRead(&buffer, sizeof(buffer))==0) - { - stream=0; - return 0; - } - else - { - return buffer; - } - } - else - { - return L'\0'; - } - } - -/*********************************************************************** -StreamWriter -***********************************************************************/ - - StreamWriter::StreamWriter(IStream& _stream) - :stream(&_stream) - { - } - - void StreamWriter::WriteChar(wchar_t c) - { - stream->Write(&c, sizeof(c)); - } - - void StreamWriter::WriteString(const wchar_t* string, vint charCount) - { - stream->Write((void*)string, charCount*sizeof(*string)); - } - -/*********************************************************************** -EncoderStream -***********************************************************************/ - - EncoderStream::EncoderStream(IStream& _stream, IEncoder& _encoder) - :stream(&_stream) - ,encoder(&_encoder) - ,position(0) - { - encoder->Setup(stream); - } - - EncoderStream::~EncoderStream() - { - Close(); - } - - bool EncoderStream::CanRead()const - { - return false; - } - - bool EncoderStream::CanWrite()const - { - return IsAvailable(); - } - - bool EncoderStream::CanSeek()const - { - return false; - } - - bool EncoderStream::CanPeek()const - { - return false; - } - - bool EncoderStream::IsLimited()const - { - return stream!=0 && stream->IsLimited(); - } - - bool EncoderStream::IsAvailable()const - { - return stream!=0 && stream->IsAvailable(); - } - - void EncoderStream::Close() - { - encoder->Close(); - stream=0; - } - - pos_t EncoderStream::Position()const - { - return IsAvailable()?position:-1; - } - - pos_t EncoderStream::Size()const - { - return -1; - } - - void EncoderStream::Seek(pos_t _size) - { - CHECK_FAIL(L"EncoderStream::Seek(pos_t)#Operation not supported."); - } - - void EncoderStream::SeekFromBegin(pos_t _size) - { - CHECK_FAIL(L"EncoderStream::SeekFromBegin(pos_t)#Operation not supported."); - } - - void EncoderStream::SeekFromEnd(pos_t _size) - { - CHECK_FAIL(L"EncoderStream::SeekFromEnd(pos_t)#Operation not supported."); - } - - vint EncoderStream::Read(void* _buffer, vint _size) - { - CHECK_FAIL(L"EncoderStream::Read(void*, vint)#Operation not supported."); - } - - vint EncoderStream::Write(void* _buffer, vint _size) - { - vint result=encoder->Write(_buffer, _size); - if(result>=0) - { - position+=result; - } - return result; - } - - vint EncoderStream::Peek(void* _buffer, vint _size) - { - CHECK_FAIL(L"EncoderStream::Peek(void*, vint)#Operation not supported."); - } - -/*********************************************************************** -DecoderStream -***********************************************************************/ - - DecoderStream::DecoderStream(IStream& _stream, IDecoder& _decoder) - :stream(&_stream) - ,decoder(&_decoder) - ,position(0) - { - decoder->Setup(stream); - } - - DecoderStream::~DecoderStream() - { - Close(); - } - - bool DecoderStream::CanRead()const - { - return IsAvailable(); - } - - bool DecoderStream::CanWrite()const - { - return false; - } - - bool DecoderStream::CanSeek()const - { - return false; - } - - bool DecoderStream::CanPeek()const - { - return false; - } - - bool DecoderStream::IsLimited()const - { - return stream!=0 && stream->IsLimited(); - } - - bool DecoderStream::IsAvailable()const - { - return stream!=0 && stream->IsAvailable(); - } - - void DecoderStream::Close() - { - decoder->Close(); - stream=0; - } - - pos_t DecoderStream::Position()const - { - return IsAvailable()?position:-1; - } - - pos_t DecoderStream::Size()const - { - return -1; - } - - void DecoderStream::Seek(pos_t _size) - { - CHECK_FAIL(L"DecoderStream::Seek(pos_t)#Operation not supported."); - } - - void DecoderStream::SeekFromBegin(pos_t _size) - { - CHECK_FAIL(L"DecoderStream::SeekFromBegin(pos_t)#Operation not supported."); - } - - void DecoderStream::SeekFromEnd(pos_t _size) - { - CHECK_FAIL(L"DecoderStream::SeekFromEnd(pos_t)#Operation not supported."); - } - - vint DecoderStream::Read(void* _buffer, vint _size) - { - vint result=decoder->Read(_buffer, _size); - if(result>=0) - { - position+=result; - } - return result; - } - - vint DecoderStream::Write(void* _buffer, vint _size) - { - CHECK_FAIL(L"DecoderStream::Write(void*, vint)#Operation not supported."); - } - - vint DecoderStream::Peek(void* _buffer, vint _size) - { - CHECK_FAIL(L"DecoderStream::Peek(void*, vint)#Operation not supported."); - } - } -} - - -/*********************************************************************** -.\STREAM\BROADCASTSTREAM.CPP -***********************************************************************/ - -namespace vl -{ - namespace stream - { -/*********************************************************************** -BroadcastStream -***********************************************************************/ - - BroadcastStream::BroadcastStream() - :closed(false) - ,position(0) - { - } - - BroadcastStream::~BroadcastStream() - { - } - - BroadcastStream::StreamList& BroadcastStream::Targets() - { - return streams; - } - - bool BroadcastStream::CanRead()const - { - return false; - } - - bool BroadcastStream::CanWrite()const - { - return !closed; - } - - bool BroadcastStream::CanSeek()const - { - return false; - } - - bool BroadcastStream::CanPeek()const - { - return false; - } - - bool BroadcastStream::IsLimited()const - { - return false; - } - - bool BroadcastStream::IsAvailable()const - { - return !closed; - } - - void BroadcastStream::Close() - { - closed=true; - position=-1; - } - - pos_t BroadcastStream::Position()const - { - return position; - } - - pos_t BroadcastStream::Size()const - { - return position; - } - - void BroadcastStream::Seek(pos_t _size) - { - CHECK_FAIL(L"BroadcastStream::Seek(pos_t)#Operation not supported."); - } - - void BroadcastStream::SeekFromBegin(pos_t _size) - { - CHECK_FAIL(L"BroadcastStream::SeekFromBegin(pos_t)#Operation not supported."); - } - - void BroadcastStream::SeekFromEnd(pos_t _size) - { - CHECK_FAIL(L"BroadcastStream::SeekFromEnd(pos_t)#Operation not supported."); - } - - vint BroadcastStream::Read(void* _buffer, vint _size) - { - CHECK_FAIL(L"BroadcastStream::Read(void*, vint)#Operation not supported."); - } - - vint BroadcastStream::Write(void* _buffer, vint _size) - { - for(vint i=0;iWrite(_buffer, _size); - } - position+=_size; - return _size; - } - - vint BroadcastStream::Peek(void* _buffer, vint _size) - { - CHECK_FAIL(L"BroadcastStream::Peek(void*, vint)#Operation not supported."); - } - } -} - -/*********************************************************************** -.\STREAM\CACHESTREAM.CPP -***********************************************************************/ - -namespace vl -{ - namespace stream - { -/*********************************************************************** -CacheStream -***********************************************************************/ - - void CacheStream::Flush() - { - if(dirtyLength>0) - { - if(target->Position()!=start+dirtyStart) - { - target->SeekFromBegin(start+dirtyStart); - } - target->Write(buffer+dirtyStart, dirtyLength); - } - dirtyStart=0; - dirtyLength=0; - availableLength=0; - } - - void CacheStream::Load(pos_t _position) - { - if(target->Position()!=_position) - { - target->SeekFromBegin(_position); - } - start=_position; - if(target->CanRead()) - { - availableLength=target->Read(buffer, block); - } - } - - vint CacheStream::InternalRead(void* _buffer, vint _size) - { - vint readed=0; - if(position>=start && positionreaded) - { - Flush(); - if(_size-readed>=block) - { - if(CanSeek()) - { - target->SeekFromBegin(position+readed); - } - vint additional=target->Read(_buffer, _size-readed); - if(additional!=-1) - { - readed+=additional; - } - } - else - { - Load(position+readed); - vint remain=_size-readed; - vint min=availableLength=start && position0) - { - availableLength+=availableOffset; - } - } - - if(_size>written) - { - Flush(); - if(_size-written>=block) - { - if(CanSeek()) - { - target->SeekFromBegin(position+written); - } - vint additional=target->Write(_buffer, _size-written); - if(additional!=-1) - { - written+=additional; - } - } - else - { - Load(position+written); - dirtyLength=_size-written; - memcpy(buffer, _buffer, dirtyLength); - written+=dirtyLength; - } - } - return written; - } - - CacheStream::CacheStream(IStream& _target, vint _block) - :target(&_target) - ,block(_block) - ,start(0) - ,position(0) - ,dirtyStart(0) - ,dirtyLength(0) - ,availableLength(0) - ,operatedSize(0) - { - if(block<=0) - { - block=65536; - } - buffer=new char[block]; - } - - CacheStream::~CacheStream() - { - Close(); - } - - bool CacheStream::CanRead()const - { - return target!=0 && target->CanRead(); - } - - bool CacheStream::CanWrite()const - { - return target!=0 && target->CanWrite(); - } - - bool CacheStream::CanSeek()const - { - return target!=0 && target->CanSeek(); - } - - bool CacheStream::CanPeek()const - { - return target!=0 && target->CanPeek(); - } - - bool CacheStream::IsLimited()const - { - return target!=0 && target->IsLimited(); - } - - bool CacheStream::IsAvailable()const - { - return target!=0 && target->IsAvailable(); - } - - void CacheStream::Close() - { - Flush(); - target=0; - delete[] buffer; - buffer=0; - position=-1; - dirtyStart=0; - dirtyLength=0; - availableLength=0; - operatedSize=-1; - } - - pos_t CacheStream::Position()const - { - return position; - } - - pos_t CacheStream::Size()const - { - if(target!=0) - { - if(IsLimited()) - { - return target->Size(); - } - else - { - return operatedSize; - } - } - else - { - return -1; - } - } - - void CacheStream::Seek(pos_t _size) - { - SeekFromBegin(position+_size); - } - - void CacheStream::SeekFromBegin(pos_t _size) - { - if(CanSeek()) - { - if(_size<0) - { - position=0; - } - else if(_size>Size()) - { - position=Size(); - } - else - { - position=_size; - } - } - } - - void CacheStream::SeekFromEnd(pos_t _size) - { - SeekFromBegin(Size()-_size); - } - - vint CacheStream::Read(void* _buffer, vint _size) - { - CHECK_ERROR(CanRead(), L"CacheStream::Read(void*, vint)#Stream is closed or operation not supported."); - CHECK_ERROR(_size>=0, L"CacheStream::Read(void*, vint)#Argument size cannot be negative."); - - _size=InternalRead(_buffer, _size); - position+=_size; - if(operatedSize=0, L"CacheStream::Read(void*, vint)#Argument size cannot be negative."); - - if(IsLimited()) - { - pos_t size=Size(); - if(size!=-1) - { - vint remain=(vint)(size-(position+_size)); - if(remain<0) - { - _size-=remain; - } - } - } - - _size=InternalWrite(_buffer, _size); - position+=_size; - if(operatedSize=0, L"CacheStream::Read(void*, vint)#Argument size cannot be negative."); - - return InternalRead(_buffer, _size); - } - } -} - -/*********************************************************************** -.\STREAM\CHARFORMAT.CPP -***********************************************************************/ -#if defined VCZH_MSVC -#include -#elif defined VCZH_GCC -#endif - -namespace vl -{ - namespace stream - { - -/*********************************************************************** -CharEncoder -***********************************************************************/ - - CharEncoder::CharEncoder() - :stream(0) - ,cacheSize(0) - { - } - - void CharEncoder::Setup(IStream* _stream) - { - stream=_stream; - } - - void CharEncoder::Close() - { - } - - vint CharEncoder::Write(void* _buffer, vint _size) - { - const vint all=cacheSize+_size; - const vint chars=all/sizeof(wchar_t); - const vint bytes=chars*sizeof(wchar_t); - wchar_t* unicode=0; - bool needToFree=false; - vint result=0; - - if(chars) - { - if(cacheSize>0) - { - unicode=new wchar_t[chars]; - memcpy(unicode, cacheBuffer, cacheSize); - memcpy(((vuint8_t*)unicode)+cacheSize, _buffer, bytes-cacheSize); - needToFree=true; - } - else - { - unicode=(wchar_t*)_buffer; - } - result=WriteString(unicode, chars)*sizeof(wchar_t)-cacheSize; - cacheSize=0; - } - - if(needToFree) - { - delete[] unicode; - } - if(all-bytes>0) - { - cacheSize=all-bytes; - memcpy(cacheBuffer, (vuint8_t*)_buffer+_size-cacheSize, cacheSize); - result+=cacheSize; - } - return result; - } - -/*********************************************************************** -CharDecoder -***********************************************************************/ - - CharDecoder::CharDecoder() - :stream(0) - ,cacheSize(0) - { - } - - void CharDecoder::Setup(IStream* _stream) - { - stream=_stream; - } - - void CharDecoder::Close() - { - } - - vint CharDecoder::Read(void* _buffer, vint _size) - { - vuint8_t* unicode=(vuint8_t*)_buffer; - vint result=0; - { - vint index=0; - while(cacheSize>0 && _size>0) - { - *unicode++=cacheBuffer[index]++; - cacheSize--; - _size--; - result++; - } - } - - const vint chars=_size/sizeof(wchar_t); - vint bytes=ReadString((wchar_t*)unicode, chars)*sizeof(wchar_t); - result+=bytes; - _size-=bytes; - unicode+=bytes; - - if(_size>0) - { - wchar_t c; - if(ReadString(&c, 1)==1) - { - cacheSize=sizeof(wchar_t)-_size; - memcpy(unicode, &c, _size); - memcpy(cacheBuffer, (vuint8_t*)&c+_size, cacheSize); - result+=_size; - } - } - return result; - } - -/*********************************************************************** -Mbcs -***********************************************************************/ - - vint MbcsEncoder::WriteString(wchar_t* _buffer, vint chars) - { -#if defined VCZH_MSVC - vint length=WideCharToMultiByte(CP_THREAD_ACP, 0, _buffer, (int)chars, NULL, NULL, NULL, NULL); - char* mbcs=new char[length]; - WideCharToMultiByte(CP_THREAD_ACP, 0, _buffer, (int)chars, mbcs, (int)length, NULL, NULL); - vint result=stream->Write(mbcs, length); - delete[] mbcs; -#elif defined VCZH_GCC - WString w(_buffer, chars); - AString a=wtoa(w); - vint length=a.Length(); - vint result=stream->Write((void*)a.Buffer(), length); -#endif - if(result==length) - { - return chars; - } - else - { - Close(); - return 0; - } - } - - vint MbcsDecoder::ReadString(wchar_t* _buffer, vint chars) - { - char* source=new char[chars*2]; - char* reading=source; - vint readed=0; - while(readedRead(reading, 1)!=1) - { - break; - } -#if defined VCZH_MSVC - if(IsDBCSLeadByte(*reading)) -#elif defined VCZH_GCC - if((vint8_t)*reading<0) -#endif - { - if(stream->Read(reading+1, 1)!=1) - { - break; - } - reading+=2; - } - else - { - reading++; - } - readed++; - } -#if defined VCZH_MSVC - MultiByteToWideChar(CP_THREAD_ACP, 0, source, (int)(reading-source), _buffer, (int)chars); -#elif defined VCZH_GCC - AString a(source, (vint)(reading-source)); - WString w=atow(a); - memcpy(_buffer, w.Buffer(), readed*sizeof(wchar_t)); -#endif - delete[] source; - return readed; - } - -/*********************************************************************** -Utf-16 -***********************************************************************/ - - vint Utf16Encoder::WriteString(wchar_t* _buffer, vint chars) - { -#if defined VCZH_MSVC - return stream->Write(_buffer, chars*sizeof(wchar_t))/sizeof(wchar_t); -#elif defined VCZH_GCC - vint writed = 0; - vuint16_t utf16 = 0; - vuint8_t* utf16buf = (vuint8_t*)&utf16; - while (writed < chars) - { - wchar_t w = *_buffer++; - if (w < 0x10000) - { - utf16 = (vuint16_t)w; - if (stream->Write(&utf16buf[0], 1) != 1) break; - if (stream->Write(&utf16buf[1], 1) != 1) break; - } - else if (w < 0x110000) - { - wchar_t inc = w - 0x10000; - - utf16 = (vuint16_t)(inc / 0x400) + 0xD800; - if (stream->Write(&utf16buf[0], 1) != 1) break; - if (stream->Write(&utf16buf[1], 1) != 1) break; - - utf16 = (vuint16_t)(inc % 0x400) + 0xDC00; - if (stream->Write(&utf16buf[0], 1) != 1) break; - if (stream->Write(&utf16buf[1], 1) != 1) break; - } - else - { - break; - } - writed++; - } - if(writed!=chars) - { - Close(); - } - return writed; -#endif - } - - vint Utf16Decoder::ReadString(wchar_t* _buffer, vint chars) - { -#if defined VCZH_MSVC - return stream->Read(_buffer, chars*sizeof(wchar_t))/sizeof(wchar_t); -#elif defined VCZH_GCC - wchar_t* writing = _buffer; - while (writing - _buffer < chars) - { - vuint16_t utf16_1 = 0; - vuint16_t utf16_2 = 0; - - if (stream->Read(&utf16_1, 2) != 2) break; - if (utf16_1 < 0xD800 || utf16_1 > 0xDFFF) - { - *writing++ = (wchar_t)utf16_1; - } - else if (utf16_1 < 0xDC00) - { - if (stream->Read(&utf16_2, 2) != 2) break; - if (0xDC00 <= utf16_2 && utf16_2 <= 0xDFFF) - { - *writing++ = (wchar_t)(utf16_1 - 0xD800) * 0x400 + (wchar_t)(utf16_2 - 0xDC00) + 0x10000; - } - else - { - break; - } - } - else - { - break; - } - } - return writing - _buffer; -#endif - } - -/*********************************************************************** -Utf-16-be -***********************************************************************/ - - vint Utf16BEEncoder::WriteString(wchar_t* _buffer, vint chars) - { -#if defined VCZH_MSVC - vint writed=0; - while(writedWrite(((unsigned char*)_buffer)+1, 1)!=1) - { - break; - } - if(stream->Write(_buffer, 1)!=1) - { - break; - } - _buffer++; - writed++; - } - if(writed!=chars) - { - Close(); - } - return writed; -#elif defined VCZH_GCC - vint writed = 0; - vuint16_t utf16 = 0; - vuint8_t* utf16buf = (vuint8_t*)&utf16; - while (writed < chars) - { - wchar_t w = *_buffer++; - if (w < 0x10000) - { - utf16 = (vuint16_t)w; - if (stream->Write(&utf16buf[1], 1) != 1) break; - if (stream->Write(&utf16buf[0], 1) != 1) break; - } - else if (w < 0x110000) - { - wchar_t inc = w - 0x10000; - - utf16 = (vuint16_t)(inc / 0x400) + 0xD800; - if (stream->Write(&utf16buf[1], 1) != 1) break; - if (stream->Write(&utf16buf[0], 1) != 1) break; - - utf16 = (vuint16_t)(inc % 0x400) + 0xDC00; - if (stream->Write(&utf16buf[1], 1) != 1) break; - if (stream->Write(&utf16buf[0], 1) != 1) break; - } - else - { - break; - } - writed++; - } - if(writed!=chars) - { - Close(); - } - return writed; -#endif - } - - vint Utf16BEDecoder::ReadString(wchar_t* _buffer, vint chars) - { -#if defined VCZH_MSVC - chars=stream->Read(_buffer, chars*sizeof(wchar_t))/sizeof(wchar_t); - unsigned char* unicode=(unsigned char*)_buffer; - for(vint i=0;iRead(&utf16_1, 2) != 2) break; - - utf16buf = (vuint8_t*)&utf16_1; - utf16buf_temp = utf16buf[0]; - utf16buf[0] = utf16buf[1]; - utf16buf[1] = utf16buf_temp; - - if (utf16_1 < 0xD800 || utf16_1 > 0xDFFF) - { - *writing++ = (wchar_t)utf16_1; - } - else if (utf16_1 < 0xDC00) - { - if (stream->Read(&utf16_2, 2) != 2) break; - - utf16buf = (vuint8_t*)&utf16_2; - utf16buf_temp = utf16buf[0]; - utf16buf[0] = utf16buf[1]; - utf16buf[1] = utf16buf_temp; - - if (0xDC00 <= utf16_2 && utf16_2 <= 0xDFFF) - { - *writing++ = (wchar_t)(utf16_1 - 0xD800) * 0x400 + (wchar_t)(utf16_2 - 0xDC00) + 0x10000; - } - else - { - break; - } - } - else - { - break; - } - } - return writing - _buffer; -#endif - } - -/*********************************************************************** -Utf8 -***********************************************************************/ - - vint Utf8Encoder::WriteString(wchar_t* _buffer, vint chars) - { -#if defined VCZH_MSVC - vint length=WideCharToMultiByte(CP_UTF8, 0, _buffer, (int)chars, NULL, NULL, NULL, NULL); - char* mbcs=new char[length]; - WideCharToMultiByte(CP_UTF8, 0, _buffer, (int)chars, mbcs, (int)length, NULL, NULL); - vint result=stream->Write(mbcs, length); - delete[] mbcs; - if(result==length) - { - return chars; - } - else - { - Close(); - return 0; - } -#elif defined VCZH_GCC - vint writed = 0; - while (writed < chars) - { - wchar_t w = *_buffer++; - vuint8_t utf8[4]; - if (w < 0x80) - { - utf8[0] = (vuint8_t)w; - if (stream->Write(utf8, 1) != 1) break; - } - else if (w < 0x800) - { - utf8[0] = 0xC0 + ((w & 0x7C0) >> 6); - utf8[1] = 0x80 + (w & 0x3F); - if (stream->Write(utf8, 2) != 2) break; - } - else if (w < 0x10000) - { - utf8[0] = 0xE0 + ((w & 0xF000) >> 12); - utf8[1] = 0x80 + ((w & 0xFC0) >> 6); - utf8[2] = 0x80 + (w & 0x3F); - if (stream->Write(utf8, 3) != 3) break; - } - else if (w < 0x110000) // only accept UTF-16 range - { - utf8[0] = 0xF0 + ((w & 0x1C0000) >> 18); - utf8[1] = 0x80 + ((w & 0x3F000) >> 12); - utf8[2] = 0x80 + ((w & 0xFC0) >> 6); - utf8[3] = 0x80 + (w & 0x3F); - if (stream->Write(utf8, 4) != 4) break; - } - else - { - break; - } - writed++; - } - if(writed!=chars) - { - Close(); - } - return writed; -#endif - } - - Utf8Decoder::Utf8Decoder() -#if defined VCZH_MSVC - :cache(0) - ,cacheAvailable(false) -#endif - { - } - - vint Utf8Decoder::ReadString(wchar_t* _buffer, vint chars) - { - vuint8_t source[4]; -#if defined VCZH_MSVC - wchar_t target[2]; -#endif - wchar_t* writing=_buffer; - vint readed=0; - vint sourceCount=0; - - while(readedRead(source, 1)!=1) - { - break; - } - if((*source & 0xF0) == 0xF0) - { - if(stream->Read(source+1, 3)!=3) - { - break; - } - sourceCount=4; - } - else if((*source & 0xE0) == 0xE0) - { - if(stream->Read(source+1, 2)!=2) - { - break; - } - sourceCount=3; - } - else if((*source & 0xC0) == 0xC0) - { - if(stream->Read(source+1, 1)!=1) - { - break; - } - sourceCount=2; - } - else - { - sourceCount=1; - } -#if defined VCZH_MSVC - int targetCount=MultiByteToWideChar(CP_UTF8, 0, (char*)source, (int)sourceCount, target, 2); - if(targetCount==1) - { - *writing++=target[0]; - } - else if(targetCount==2) - { - *writing++=target[0]; - cache=target[1]; - cacheAvailable=true; - } - else - { - break; - } - } -#elif defined VCZH_GCC - if (sourceCount == 1) - { - *writing++ = (wchar_t)source[0]; - } - else if (sourceCount == 2) - { - *writing++ = (((wchar_t)source[0] & 0x1F) << 6) + ((wchar_t)source[1] & 0x3F); - } - else if (sourceCount == 3) - { - *writing++ = (((wchar_t)source[0] & 0xF) << 12) + (((wchar_t)source[1] & 0x3F) << 6) + ((wchar_t)source[2] & 0x3F); - } - else if (sourceCount == 4) - { - *writing++ = (((wchar_t)source[0] & 0x7) << 18) + (((wchar_t)source[1] & 0x3F) << 12) + (((wchar_t)source[2] & 0x3F) << 6) + ((wchar_t)source[3] & 0x3F); - } - else - { - break; - } -#endif - readed++; - } - return readed; - } - -/*********************************************************************** -BomEncoder -***********************************************************************/ - - BomEncoder::BomEncoder(Encoding _encoding) - :encoding(_encoding) - ,encoder(0) - { - switch(encoding) - { - case Mbcs: - encoder=new MbcsEncoder; - break; - case Utf8: - encoder=new Utf8Encoder; - break; - case Utf16: - encoder=new Utf16Encoder; - break; - case Utf16BE: - encoder=new Utf16BEEncoder; - break; - } - } - - BomEncoder::~BomEncoder() - { - Close(); - } - - void BomEncoder::Setup(IStream* _stream) - { - switch(encoding) - { - case Mbcs: - break; - case Utf8: - _stream->Write((void*)"\xEF\xBB\xBF", 3); - break; - case Utf16: - _stream->Write((void*)"\xFF\xFE", 2); - break; - case Utf16BE: - _stream->Write((void*)"\xFE\xFF", 2); - break; - } - encoder->Setup(_stream); - } - - void BomEncoder::Close() - { - if(encoder) - { - encoder->Close(); - delete encoder; - encoder=0; - } - } - - vint BomEncoder::Write(void* _buffer, vint _size) - { - return encoder->Write(_buffer, _size); - } - -/*********************************************************************** -BomDecoder -***********************************************************************/ - - BomDecoder::BomStream::BomStream(IStream* _stream, char* _bom, vint _bomLength) - :stream(_stream) - ,bomPosition(0) - ,bomLength(_bomLength) - { - memcpy(bom, _bom, bomLength); - } - - bool BomDecoder::BomStream::CanRead()const - { - return IsAvailable(); - } - - bool BomDecoder::BomStream::CanWrite()const - { - return false; - } - - bool BomDecoder::BomStream::CanSeek()const - { - return false; - } - - bool BomDecoder::BomStream::CanPeek()const - { - return false; - } - - bool BomDecoder::BomStream::IsLimited()const - { - return stream!=0 && stream->IsLimited(); - } - - bool BomDecoder::BomStream::IsAvailable()const - { - return stream!=0 && stream->IsAvailable(); - } - - void BomDecoder::BomStream::Close() - { - stream=0; - } - - pos_t BomDecoder::BomStream::Position()const - { - return IsAvailable()?bomPosition+stream->Position():-1; - } - - pos_t BomDecoder::BomStream::Size()const - { - return -1; - } - - void BomDecoder::BomStream::Seek(pos_t _size) - { - CHECK_FAIL(L"BomDecoder::BomStream::Seek(pos_t)#Operation not supported."); - } - - void BomDecoder::BomStream::SeekFromBegin(pos_t _size) - { - CHECK_FAIL(L"BomDecoder::BomStream::SeekFromBegin(pos_t)#Operation not supported."); - } - - void BomDecoder::BomStream::SeekFromEnd(pos_t _size) - { - CHECK_FAIL(L"BomDecoder::BomStream::SeekFromEnd(pos_t)#Operation not supported."); - } - - vint BomDecoder::BomStream::Read(void* _buffer, vint _size) - { - vint result=0; - unsigned char* buffer=(unsigned char*)_buffer; - if(bomPositionRead(buffer, _size); - } - return result; - } - - vint BomDecoder::BomStream::Write(void* _buffer, vint _size) - { - CHECK_FAIL(L"BomDecoder::BomStream::Write(void*, vint)#Operation not supported."); - } - - vint BomDecoder::BomStream::Peek(void* _buffer, vint _size) - { - CHECK_FAIL(L"BomDecoder::BomStream::Peek(void*, vint)#Operation not supported."); - } - - BomDecoder::BomDecoder() - :decoder(0) - { - } - - BomDecoder::~BomDecoder() - { - Close(); - } - - void BomDecoder::Setup(IStream* _stream) - { - char bom[3]={0}; - vint length=_stream->Read(bom, sizeof(bom)); - if(strncmp(bom, "\xEF\xBB\xBF", 3)==0) - { - decoder=new Utf8Decoder; - stream=new BomStream(_stream, bom+3, 0); - } - else if(strncmp(bom, "\xFF\xFE", 2)==0) - { - decoder=new Utf16Decoder; - stream=new BomStream(_stream, bom+2, 1); - } - else if(strncmp(bom, "\xFE\xFF", 2)==0) - { - decoder=new Utf16BEDecoder; - stream=new BomStream(_stream, bom+2, 1); - } - else - { - decoder=new MbcsDecoder; - stream=new BomStream(_stream, bom, 3); - } - decoder->Setup(stream); - } - - void BomDecoder::Close() - { - if(decoder) - { - decoder->Close(); - delete decoder; - decoder=0; - stream->Close(); - delete stream; - stream=0; - } - } - - vint BomDecoder::Read(void* _buffer, vint _size) - { - return decoder->Read(_buffer, _size); - } - -/*********************************************************************** -CharEncoder -***********************************************************************/ - - bool CanBeMbcs(unsigned char* buffer, vint size) - { - for(vint i=0;i - bool GetEncodingResult(int(&tests)[Count], bool(&results)[Count], int test) - { - for (vint i = 0; i < Count; i++) - { - if (tests[i] & test) - { - if (results[i]) return true; - } - } - return false; - } -#endif - - void TestEncoding(unsigned char* buffer, vint size, BomEncoder::Encoding& encoding, bool& containsBom) - { - if (size >= 3 && strncmp((char*)buffer, "\xEF\xBB\xBF", 3) == 0) - { - encoding = BomEncoder::Utf8; - containsBom = true; - } - else if (size >= 2 && strncmp((char*)buffer, "\xFF\xFE", 2) == 0) - { - encoding = BomEncoder::Utf16; - containsBom = true; - } - else if (size >= 2 && strncmp((char*)buffer, "\xFE\xFF", 2) == 0) - { - encoding = BomEncoder::Utf16BE; - containsBom = true; - } - else - { - encoding = BomEncoder::Mbcs; - containsBom = false; - - bool utf16HitSurrogatePairs = false; - bool utf16BEHitSurrogatePairs = false; - bool roughMbcs = CanBeMbcs(buffer, size); - bool roughUtf8 = CanBeUtf8(buffer, size); - bool roughUtf16 = CanBeUtf16(buffer, size, utf16HitSurrogatePairs); - bool roughUtf16BE = CanBeUtf16BE(buffer, size, utf16BEHitSurrogatePairs); - - vint roughCount = (roughMbcs ? 1 : 0) + (roughUtf8 ? 1 : 0) + (roughUtf16 ? 1 : 0) + (roughUtf16BE ? 1 : 0); - if (roughCount == 1) - { - if (roughUtf8) encoding = BomEncoder::Utf8; - else if (roughUtf16) encoding = BomEncoder::Utf16; - else if (roughUtf16BE) encoding = BomEncoder::Utf16BE; - } - else if (roughCount > 1) - { -#if defined VCZH_MSVC - int tests[] = - { - IS_TEXT_UNICODE_REVERSE_ASCII16, - IS_TEXT_UNICODE_REVERSE_STATISTICS, - IS_TEXT_UNICODE_REVERSE_CONTROLS, - - IS_TEXT_UNICODE_ASCII16, - IS_TEXT_UNICODE_STATISTICS, - IS_TEXT_UNICODE_CONTROLS, - - IS_TEXT_UNICODE_ILLEGAL_CHARS, - IS_TEXT_UNICODE_ODD_LENGTH, - IS_TEXT_UNICODE_NULL_BYTES, - }; - - const vint TestCount = sizeof(tests) / sizeof(*tests); - bool results[TestCount]; - for (vint i = 0; i < TestCount; i++) - { - int test = tests[i]; - results[i] = IsTextUnicode(buffer, (int)size, &test) != 0; - } - - if (size % 2 == 0 - && !GetEncodingResult(tests, results, IS_TEXT_UNICODE_REVERSE_ASCII16) - && !GetEncodingResult(tests, results, IS_TEXT_UNICODE_REVERSE_STATISTICS) - && !GetEncodingResult(tests, results, IS_TEXT_UNICODE_REVERSE_CONTROLS) - ) - { - for (vint i = 0; i < size; i += 2) - { - unsigned char c = buffer[i]; - buffer[i] = buffer[i + 1]; - buffer[i + 1] = c; - } - // 3 = (count of reverse group) = (count of unicode group) - for (vint i = 0; i < 3; i++) - { - int test = tests[i + 3]; - results[i] = IsTextUnicode(buffer, (int)size, &test) != 0; - } - for (vint i = 0; i < size; i += 2) - { - unsigned char c = buffer[i]; - buffer[i] = buffer[i + 1]; - buffer[i + 1] = c; - } - } - - if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_NOT_UNICODE_MASK)) - { - if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_NOT_ASCII_MASK)) - { - encoding = BomEncoder::Utf8; - } - else if (roughUtf8 || !roughMbcs) - { - encoding = BomEncoder::Utf8; - } - } - else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_ASCII16)) - { - encoding = BomEncoder::Utf16; - } - else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_REVERSE_ASCII16)) - { - encoding = BomEncoder::Utf16BE; - } - else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_CONTROLS)) - { - encoding = BomEncoder::Utf16; - } - else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_REVERSE_CONTROLS)) - { - encoding = BomEncoder::Utf16BE; - } - else - { - if (!roughUtf8) - { - if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_STATISTICS)) - { - encoding = BomEncoder::Utf16; - } - else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_STATISTICS)) - { - encoding = BomEncoder::Utf16BE; - } - } - else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_NOT_UNICODE_MASK)) - { - encoding = BomEncoder::Utf8; - } - else if (roughUtf8 || !roughMbcs) - { - encoding = BomEncoder::Utf8; - } - } -#elif defined VCZH_GCC - if (roughUtf16 && roughUtf16BE && !roughUtf8) - { - if (utf16BEHitSurrogatePairs && !utf16HitSurrogatePairs) - { - encoding = BomEncoder::Utf16BE; - } - else - { - encoding = BomEncoder::Utf16; - } - } - else - { - encoding = BomEncoder::Utf8; - } -#endif - } - } - } - } -} - - -/*********************************************************************** -.\STREAM\COMPRESSIONSTREAM.CPP -***********************************************************************/ - -namespace vl -{ - namespace stream - { - using namespace collections; - using namespace lzw; - -/*********************************************************************** -LzwBase -***********************************************************************/ - - void LzwBase::UpdateIndexBits() - { - if (nextIndex >=2 && (nextIndex & (nextIndex - 1)) == 0) - { - indexBits++; - } - } - - lzw::Code* LzwBase::CreateCode(lzw::Code* prefix, vuint8_t byte) - { - if (nextIndex < MaxDictionarySize) - { - Code* code = codeAllocator.Create(); - code->byte = byte; - code->code = nextIndex; - code->parent = prefix; - code->size = prefix->size + 1; - prefix->children.Set(byte, code, mapAllocator); - nextIndex++; - - return code; - } - else - { - return 0; - } - } - - LzwBase::LzwBase() - :codeAllocator(65536) - , mapAllocator(1048576) - { - root = codeAllocator.Create(); - - for (vint i = 0; i < 256; i++) - { - UpdateIndexBits(); - CreateCode(root, (vuint8_t)i); - } - } - - LzwBase::LzwBase(bool (&existingBytes)[256]) - { - root = codeAllocator.Create(); - for (vint i = 0; i < 256; i++) - { - if (existingBytes[i]) - { - UpdateIndexBits(); - CreateCode(root, (vuint8_t)i); - } - } - - if (indexBits < 8) - { - eofIndex = nextIndex++; - } - } - - LzwBase::~LzwBase() - { - } - -/*********************************************************************** -LzwEncoder -***********************************************************************/ - - void LzwEncoder::Flush() - { - vint written = 0; - vint bufferUsedSize = bufferUsedBits / 8; - if (bufferUsedBits % 8 != 0) - { - bufferUsedSize++; - } - while (written < bufferUsedSize) - { - vint size = stream->Write(buffer + written, bufferUsedSize - written); - CHECK_ERROR(size != 0, L"LzwEncoder::Flush()#Failed to flush the lzw buffer."); - written += size; - } - bufferUsedBits = 0; - } - - vuint8_t highMarks[9] = { 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF }; - vuint8_t lowMarks[9] = { 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF }; - - void LzwEncoder::WriteNumber(vint number, vint bitSize) - { - vint bitStart = 0; - vint bitStep = 8 - bufferUsedBits % 8; - if (bitStep > bitSize) - { - bitStep = bitSize; - } - while (bitStart < bitSize) - { - if(bufferUsedBits == BufferSize * 8) - { - Flush(); - } - - vint writeStart = bufferUsedBits % 8; - vint byteIndex = bufferUsedBits / 8; - vuint8_t byte = buffer[byteIndex]; - byte &= highMarks[writeStart]; - - vuint8_t content = (vuint8_t)((number >> bitStart)&lowMarks[bitStep]) << (8 - writeStart - bitStep); - byte |= content; - - buffer[byteIndex] = byte; - bufferUsedBits += bitStep; - - bitStart += bitStep; - vint remain = bitSize - bitStart; - bitStep = remain < 8 ? remain : 8; - } - } - - LzwEncoder::LzwEncoder() - { - prefix = root; - } - - LzwEncoder::LzwEncoder(bool (&existingBytes)[256]) - :LzwBase(existingBytes) - { - prefix = root; - } - - LzwEncoder::~LzwEncoder() - { - } - - void LzwEncoder::Setup(IStream* _stream) - { - stream = _stream; - } - - void LzwEncoder::Close() - { - if (prefix != root) - { - WriteNumber(prefix->code, indexBits); - prefix = root; - } - - vint remain = 8 - bufferUsedBits % 8; - if (remain != 8 && remain >= indexBits) - { - CHECK_ERROR(eofIndex != -1, L"LzwEncoder::Close()#Internal error."); - WriteNumber(eofIndex, indexBits); - } - Flush(); - } - - vint LzwEncoder::Write(void* _buffer, vint _size) - { - vuint8_t* bytes = (vuint8_t*)_buffer; - for (vint i = 0; i < _size; i++) - { - vuint8_t byte = bytes[i]; - Code* next = prefix->children.Get(byte); - if (next) - { - prefix = next; - } - else - { - WriteNumber(prefix->code, indexBits); - - if (nextIndex < MaxDictionarySize) - { - UpdateIndexBits(); - CreateCode(prefix, byte); - } - prefix = root->children.Get(byte); - } - } - return _size; - } - -/*********************************************************************** -LzwDecoder -***********************************************************************/ - - bool LzwDecoder::ReadNumber(vint& number, vint bitSize) - { - number = 0; - if (inputBufferSize == -1) - { - return false; - } - - vint remainBits = inputBufferSize * 8 - inputBufferUsedBits; - vint writtenBits = 0; - vint bitStep = 8 - inputBufferUsedBits % 8; - if (bitStep > bitSize) - { - bitStep = bitSize; - } - while (writtenBits < bitSize) - { - if (remainBits == 0) - { - inputBufferSize = stream->Read(inputBuffer, BufferSize); - if (inputBufferSize == 0) - { - inputBufferSize = -1; - return false; - } - remainBits = inputBufferSize * 8; - inputBufferUsedBits = 0; - } - - vuint8_t byte = inputBuffer[inputBufferUsedBits / 8]; - byte >>= (8 - inputBufferUsedBits % 8 - bitStep); - byte &= lowMarks[bitStep]; - number |= byte << writtenBits; - - inputBufferUsedBits += bitStep; - remainBits -= bitStep; - writtenBits += bitStep; - vint remain = bitSize - writtenBits; - bitStep = remain < 8 ? remain : 8; - } - - return true; - } - - void LzwDecoder::PrepareOutputBuffer(vint size) - { - if (outputBuffer.Count() < size) - { - outputBuffer.Resize(size); - } - outputBufferSize = size; - } - - void LzwDecoder::ExpandCodeToOutputBuffer(lzw::Code* code) - { - vuint8_t* outputByte = &outputBuffer[0] + code->size; - Code* current = code; - while (current != root) - { - *(--outputByte) = current->byte; - current = current->parent; - } - outputBufferUsedBytes = 0; - } - - LzwDecoder::LzwDecoder() - { - for (vint i = 0; i < 256; i++) - { - dictionary.Add(root->children.Get((vuint8_t)i)); - } - } - - LzwDecoder::LzwDecoder(bool (&existingBytes)[256]) - :LzwBase(existingBytes) - { - for (vint i = 0; i < 256; i++) - { - if (existingBytes[i]) - { - dictionary.Add(root->children.Get((vuint8_t)i)); - } - } - if (eofIndex != -1) - { - dictionary.Add(0); - } - } - - LzwDecoder::~LzwDecoder() - { - } - - void LzwDecoder::Setup(IStream* _stream) - { - stream = _stream; - } - - void LzwDecoder::Close() - { - } - - vint LzwDecoder::Read(void* _buffer, vint _size) - { - vint written = 0; - vuint8_t* bytes = (vuint8_t*)_buffer; - while (written < _size) - { - vint expect = _size - written; - vint remain = outputBufferSize - outputBufferUsedBytes; - if (remain == 0) - { - vint index = 0; - if (!ReadNumber(index, indexBits) || index == eofIndex) - { - break; - } - - Code* prefix = 0; - if (index == dictionary.Count()) - { - prefix = lastCode; - PrepareOutputBuffer(prefix->size + 1); - ExpandCodeToOutputBuffer(prefix); - outputBuffer[outputBufferSize - 1] = outputBuffer[0]; - } - else - { - prefix = dictionary[index]; - PrepareOutputBuffer(prefix->size); - ExpandCodeToOutputBuffer(prefix); - } - - if (nextIndex < MaxDictionarySize) - { - if (lastCode) - { - dictionary.Add(CreateCode(lastCode, outputBuffer[0])); - } - UpdateIndexBits(); - } - lastCode = dictionary[index]; - } - else - { - if (remain > expect) - { - remain = expect; - } - memcpy(bytes + written, &outputBuffer[outputBufferUsedBytes], remain); - - outputBufferUsedBytes += remain; - written += remain; - } - } - return written; - } - -/*********************************************************************** -Helper Functions -***********************************************************************/ - - vint CopyStream(stream::IStream& inputStream, stream::IStream& outputStream) - { - vint totalSize = 0; - while (true) - { - char buffer[1024]; - vint copied = inputStream.Read(buffer, (vint)sizeof(buffer)); - if (copied == 0) - { - break; - } - totalSize += outputStream.Write(buffer, copied); - } - return totalSize; - } - - const vint CompressionFragmentSize = 1048576; - - void CompressStream(stream::IStream& inputStream, stream::IStream& outputStream) - { - Array buffer(CompressionFragmentSize); - while (true) - { - vint size = inputStream.Read(&buffer[0], buffer.Count()); - if (size == 0) break; - - MemoryStream compressedStream; - { - LzwEncoder encoder; - EncoderStream encoderStream(compressedStream, encoder); - encoderStream.Write(&buffer[0], size); - } - - compressedStream.SeekFromBegin(0); - { - { - vint32_t bufferSize = (vint32_t)size; - outputStream.Write(&bufferSize, (vint)sizeof(bufferSize)); - } - { - vint32_t compressedSize = (vint32_t)compressedStream.Size(); - outputStream.Write(&compressedSize, (vint)sizeof(compressedSize)); - } - CopyStream(compressedStream, outputStream); - } - } - } - - void DecompressStream(stream::IStream& inputStream, stream::IStream& outputStream) - { - vint totalSize = 0; - vint totalWritten = 0; - while (true) - { - vint32_t bufferSize = 0; - if (inputStream.Read(&bufferSize, (vint)sizeof(bufferSize)) != sizeof(bufferSize)) - { - break; - } - - vint32_t compressedSize = 0; - CHECK_ERROR(inputStream.Read(&compressedSize, (vint)sizeof(compressedSize)) == sizeof(compressedSize), L"vl::stream::DecompressStream(MemoryStream&, MemoryStream&)#Incomplete input"); - - Array buffer(compressedSize); - CHECK_ERROR(inputStream.Read(&buffer[0], compressedSize) == compressedSize, L"vl::stream::DecompressStream(MemoryStream&, MemoryStream&)#Incomplete input"); - - MemoryWrapperStream compressedStream(&buffer[0], compressedSize); - LzwDecoder decoder; - DecoderStream decoderStream(compressedStream, decoder); - totalWritten += CopyStream(decoderStream, outputStream); - totalSize += bufferSize; - } - CHECK_ERROR(outputStream.Size() == totalSize, L"vl::stream::DecompressStream(MemoryStream&, MemoryStream&)#Incomplete input"); - } - } -} - -/*********************************************************************** -.\STREAM\FILESTREAM.CPP -***********************************************************************/ -#if defined VCZH_GCC -#endif - -namespace vl -{ - namespace stream - { - -#if defined VCZH_GCC - void _fseeki64(FILE* file, pos_t offset, int origin) - { - fseek(file, (long)offset, origin); - } -#endif - -/*********************************************************************** -FileStream -***********************************************************************/ - - FileStream::FileStream(const WString& fileName, AccessRight _accessRight) - :accessRight(_accessRight) - { - const wchar_t* mode=L"rb"; - switch(accessRight) - { - case ReadOnly: - mode=L"rb"; - break; - case WriteOnly: - mode=L"wb"; - break; - case ReadWrite: - mode=L"w+b"; - break; - } - -#if defined VCZH_MSVC - if(_wfopen_s(&file, fileName.Buffer(), mode)!=0) - { - file=0; - } -#elif defined VCZH_GCC - AString fileNameA = wtoa(fileName); - AString modeA = wtoa(mode); - file = fopen(fileNameA.Buffer(), modeA.Buffer()); -#endif - } - - FileStream::~FileStream() - { - Close(); - } - - bool FileStream::CanRead()const - { - return file!=0 && (accessRight==ReadOnly || accessRight==ReadWrite); - } - - bool FileStream::CanWrite()const - { - return file!=0 && (accessRight==WriteOnly || accessRight==ReadWrite); - } - - bool FileStream::CanSeek()const - { - return file!=0; - } - - bool FileStream::CanPeek()const - { - return file!=0 && (accessRight==ReadOnly || accessRight==ReadWrite); - } - - bool FileStream::IsLimited()const - { - return file!=0 && accessRight==ReadOnly; - } - - bool FileStream::IsAvailable()const - { - return file!=0; - } - - void FileStream::Close() - { - if(file!=0) - { - fclose(file); - file=0; - } - } - - pos_t FileStream::Position()const - { - if(file!=0) - { -#if defined VCZH_MSVC - fpos_t position=0; - if(fgetpos(file, &position)==0) - { - return position; - } -#elif defined VCZH_GCC - return (pos_t)ftell(file); -#endif - } - return -1; - } - - pos_t FileStream::Size()const - { - if(file!=0) - { -#if defined VCZH_MSVC - fpos_t position=0; - if(fgetpos(file, &position)==0) - { - if(fseek(file, 0, SEEK_END)==0) - { - pos_t size=Position(); - if(fsetpos(file, &position)==0) - { - return size; - } - } - } -#elif defined VCZH_GCC - long position = ftell(file); - fseek(file, 0, SEEK_END); - long size=ftell(file); - fseek(file, position, SEEK_SET); - return (pos_t)size; -#endif - } - return -1; - } - - void FileStream::Seek(pos_t _size) - { - if(Position()+_size>Size()) - { - _fseeki64(file, 0, SEEK_END); - } - else if(Position()+_size<0) - { - _fseeki64(file, 0, SEEK_SET); - } - else - { - _fseeki64(file, _size, SEEK_CUR); - } - } - - void FileStream::SeekFromBegin(pos_t _size) - { - if(_size>Size()) - { - _fseeki64(file, 0, SEEK_END); - } - else if(_size<0) - { - _fseeki64(file, 0, SEEK_SET); - } - else - { - _fseeki64(file, _size, SEEK_SET); - } - } - - void FileStream::SeekFromEnd(pos_t _size) - { - if(_size<0) - { - _fseeki64(file, 0, SEEK_END); - } - else if(_size>Size()) - { - _fseeki64(file, 0, SEEK_SET); - } - else - { - _fseeki64(file, -_size, SEEK_END); - } - } - - vint FileStream::Read(void* _buffer, vint _size) - { - CHECK_ERROR(file!=0, L"FileStream::Read(pos_t)#Stream is closed, cannot perform this operation."); - CHECK_ERROR(_size>=0, L"FileStream::Read(void*, vint)#Argument size cannot be negative."); - return fread(_buffer, 1, _size, file); - } - - vint FileStream::Write(void* _buffer, vint _size) - { - CHECK_ERROR(file!=0, L"FileStream::Write(pos_t)#Stream is closed, cannot perform this operation."); - CHECK_ERROR(_size>=0, L"FileStream::Write(void*, vint)#Argument size cannot be negative."); - return fwrite(_buffer, 1, _size, file); - } - - vint FileStream::Peek(void* _buffer, vint _size) - { - CHECK_ERROR(file!=0, L"FileStream::Peek(pos_t)#Stream is closed, cannot perform this operation."); - CHECK_ERROR(_size>=0, L"FileStream::Peek(void*, vint)#Argument size cannot be negative."); -#if defined VCZH_MSVC - fpos_t position=0; - if(fgetpos(file, &position)==0) - { - size_t count=fread(_buffer, 1, _size, file); - if(fsetpos(file, &position)==0) - { - return count; - } - } - return -1; -#elif defined VCZH_GCC - long position=ftell(file); - size_t count=fread(_buffer, 1, _size, file); - fseek(file, position, SEEK_SET); - return count; -#endif - } - } -} - - -/*********************************************************************** -.\STREAM\MEMORYSTREAM.CPP -***********************************************************************/ - -namespace vl -{ - namespace stream - { -/*********************************************************************** -MemoryStream -***********************************************************************/ - - void MemoryStream::PrepareSpace(vint totalSpace) - { - if(totalSpace>capacity) - { - totalSpace=(totalSpace/block+1)*block; - char* newBuffer=new char[totalSpace]; - if(buffer) - { - memcpy(newBuffer, buffer, size); - delete[] buffer; - } - buffer=newBuffer; - capacity=totalSpace; - } - } - - MemoryStream::MemoryStream(vint _block) - :block(_block) - ,buffer(0) - ,size(0) - ,position(0) - ,capacity(0) - { - if(block<=0) - { - block=65536; - } - } - - MemoryStream::~MemoryStream() - { - Close(); - } - - bool MemoryStream::CanRead()const - { - return block!=0; - } - - bool MemoryStream::CanWrite()const - { - return block!=0; - } - - bool MemoryStream::CanSeek()const - { - return block!=0; - } - - bool MemoryStream::CanPeek()const - { - return block!=0; - } - - bool MemoryStream::IsLimited()const - { - return false; - } - - bool MemoryStream::IsAvailable()const - { - return block!=0; - } - - void MemoryStream::Close() - { - if(buffer) - { - delete[] buffer; - } - block=0; - buffer=0; - size=-1; - position=-1; - capacity=0; - } - - pos_t MemoryStream::Position()const - { - return position; - } - - pos_t MemoryStream::Size()const - { - return size; - } - - void MemoryStream::Seek(pos_t _size) - { - SeekFromBegin(position+_size); - } - - void MemoryStream::SeekFromBegin(pos_t _size) - { - CHECK_ERROR(block!=0, L"MemoryStream::SeekFromBegin(pos_t)#Stream is closed, cannot perform this operation."); - vint expected=(vint)_size; - if(expected<0) - { - position=0; - } - else if(expected>=size) - { - position=size; - } - else - { - position=expected; - } - } - - void MemoryStream::SeekFromEnd(pos_t _size) - { - SeekFromBegin(size-_size); - } - - vint MemoryStream::Read(void* _buffer, vint _size) - { - CHECK_ERROR(block!=0, L"MemoryStream::Read(pos_t)#Stream is closed, cannot perform this operation."); - CHECK_ERROR(_size>=0, L"MemoryStream::Read(void*, vint)#Argument size cannot be negative."); - vint max=size-position; - if(_size>max) - { - _size=max; - } - memmove(_buffer, buffer+position, _size); - position+=_size; - return _size; - } - - vint MemoryStream::Write(void* _buffer, vint _size) - { - CHECK_ERROR(block!=0, L"MemoryStream::Write(pos_t)#Stream is closed, cannot perform this operation."); - CHECK_ERROR(_size>=0, L"MemoryStream::Write(void*, vint)#Argument size cannot be negative."); - PrepareSpace(size+_size); - memmove(buffer+position, _buffer, _size); - position+=_size; - if(size=0, L"MemoryStream::Peek(void*, vint)#Argument size cannot be negative."); - vint max=size-position; - if(_size>max) - { - _size=max; - } - memmove(_buffer, buffer+position, _size); - return _size; - } - - void* MemoryStream::GetInternalBuffer() - { - return buffer; - } - } -} - -/*********************************************************************** -.\STREAM\MEMORYWRAPPERSTREAM.CPP -***********************************************************************/ - -namespace vl -{ - namespace stream - { -/*********************************************************************** -MemoryWrapperStream -***********************************************************************/ - - MemoryWrapperStream::MemoryWrapperStream(void* _buffer, vint _size) - :buffer((char*)_buffer) - ,size(_size) - ,position(0) - { - if(size<=0) - { - buffer=0; - size=0; - } - } - - MemoryWrapperStream::~MemoryWrapperStream() - { - } - - bool MemoryWrapperStream::CanRead()const - { - return buffer!=0; - } - - bool MemoryWrapperStream::CanWrite()const - { - return buffer!=0; - } - - bool MemoryWrapperStream::CanSeek()const - { - return buffer!=0; - } - - bool MemoryWrapperStream::CanPeek()const - { - return buffer!=0; - } - - bool MemoryWrapperStream::IsLimited()const - { - return buffer!=0; - } - - bool MemoryWrapperStream::IsAvailable()const - { - return buffer!=0; - } - - void MemoryWrapperStream::Close() - { - buffer=0; - size=-1; - position=-1; - } - - pos_t MemoryWrapperStream::Position()const - { - return position; - } - - pos_t MemoryWrapperStream::Size()const - { - return size; - } - - void MemoryWrapperStream::Seek(pos_t _size) - { - SeekFromBegin(position+_size); - } - - void MemoryWrapperStream::SeekFromBegin(pos_t _size) - { - CHECK_ERROR(buffer!=0, L"MemoryWrapperStream::SeekFromBegin(pos_t)#Stream is closed, cannot perform this operation."); - vint expected=(vint)_size; - if(expected<0) - { - position=0; - } - else if(expected>=size) - { - position=size; - } - else - { - position=expected; - } - } - - void MemoryWrapperStream::SeekFromEnd(pos_t _size) - { - SeekFromBegin(size-_size); - } - - vint MemoryWrapperStream::Read(void* _buffer, vint _size) - { - CHECK_ERROR(buffer!=0, L"MemoryWrapperStream::Read(pos_t)#Stream is closed, cannot perform this operation."); - CHECK_ERROR(_size>=0, L"MemoryWrapperStream::Read(void*, vint)#Argument size cannot be negative."); - vint max=size-position; - if(_size>max) - { - _size=max; - } - memmove(_buffer, buffer+position, _size); - position+=_size; - return _size; - } - - vint MemoryWrapperStream::Write(void* _buffer, vint _size) - { - CHECK_ERROR(buffer!=0, L"MemoryWrapperStream::Write(pos_t)#Stream is closed, cannot perform this operation."); - CHECK_ERROR(_size>=0, L"MemoryWrapperStream::Write(void*, vint)#Argument size cannot be negative."); - vint max=size-position; - if(_size>max) - { - _size=max; - } - memmove(buffer+position, _buffer, _size); - position+=_size; - return _size; - } - - vint MemoryWrapperStream::Peek(void* _buffer, vint _size) - { - CHECK_ERROR(buffer!=0, L"MemoryWrapperStream::Peek(pos_t)#Stream is closed, cannot perform this operation."); - CHECK_ERROR(_size>=0, L"MemoryWrapperStream::Peek(void*, vint)#Argument size cannot be negative."); - vint max=size-position; - if(_size>max) - { - _size=max; - } - memmove(_buffer, buffer+position, _size); - return _size; - } - } -} - -/*********************************************************************** -.\STREAM\RECORDERSTREAM.CPP -***********************************************************************/ - -namespace vl -{ - namespace stream - { -/*********************************************************************** -RecorderStream -***********************************************************************/ - - RecorderStream::RecorderStream(IStream& _in, IStream& _out) - :in(&_in) - ,out(&_out) - { - } - - RecorderStream::~RecorderStream() - { - } - - bool RecorderStream::CanRead()const - { - return IsAvailable() && in->CanRead(); - } - - bool RecorderStream::CanWrite()const - { - return false; - } - - bool RecorderStream::CanSeek()const - { - return false; - } - - bool RecorderStream::CanPeek()const - { - return false; - } - - bool RecorderStream::IsLimited()const - { - return IsAvailable() && in->IsLimited(); - } - - bool RecorderStream::IsAvailable()const - { - return in!=0 && out!=0 && in->IsAvailable() && out->IsAvailable(); - } - - void RecorderStream::Close() - { - in=0; - out=0; - } - - pos_t RecorderStream::Position()const - { - return IsAvailable()?in->Position():-1; - } - - pos_t RecorderStream::Size()const - { - return IsAvailable()?in->Size():-1; - } - - void RecorderStream::Seek(pos_t _size) - { - CHECK_FAIL(L"RecorderStream::Seek(pos_t)#Operation not supported."); - } - - void RecorderStream::SeekFromBegin(pos_t _size) - { - CHECK_FAIL(L"RecorderStream::SeekFromBegin(pos_t)#Operation not supported."); - } - - void RecorderStream::SeekFromEnd(pos_t _size) - { - CHECK_FAIL(L"RecorderStream::SeekFromEnd(pos_t)#Operation not supported."); - } - - vint RecorderStream::Read(void* _buffer, vint _size) - { - _size=in->Read(_buffer, _size); - out->Write(_buffer, _size); - return _size; - } - - vint RecorderStream::Write(void* _buffer, vint _size) - { - CHECK_FAIL(L"RecorderStream::Write(void*, vint)#Operation not supported."); - } - - vint RecorderStream::Peek(void* _buffer, vint _size) - { - CHECK_FAIL(L"RecorderStream::Peek(void*, vint)#Operation not supported."); - } - } -} - /*********************************************************************** .\UNITTEST\UNITTEST.CPP ***********************************************************************/ -#if defined VCZH_MSVC -#endif namespace vl { @@ -26903,15 +1200,8 @@ namespace vl UnitTest ***********************************************************************/ -#if defined VCZH_MSVC - SpinLock spinLockUnitTest; -#endif - void UnitTest::PrintMessage(const WString& string) { -#if defined VCZH_MSVC - SpinLock::Scope scope(spinLockUnitTest); -#endif Console::SetColor(false, true, false, true); Console::WriteLine(string); Console::SetColor(true, true, true, false); @@ -26919,9 +1209,6 @@ UnitTest void UnitTest::PrintInfo(const WString& string) { -#if defined VCZH_MSVC - SpinLock::Scope scope(spinLockUnitTest); -#endif Console::SetColor(true, true, true, true); Console::WriteLine(string); Console::SetColor(true, true, true, false); @@ -26929,9 +1216,6 @@ UnitTest void UnitTest::PrintError(const WString& string) { -#if defined VCZH_MSVC - SpinLock::Scope scope(spinLockUnitTest); -#endif Console::SetColor(true, false, false, true); Console::WriteLine(string); Console::SetColor(true, true, true, false); diff --git a/Import/Vlpp.h b/Import/Vlpp.h index 927cddb9..00615f00 100644 --- a/Import/Vlpp.h +++ b/Import/Vlpp.h @@ -3629,1548 +3629,6 @@ Random Access #endif -/*********************************************************************** -.\COLLECTIONS\DICTIONARY.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Data Structure::Dictionary - -Classes: - Dictionary : One to one mapping - Group : One to many mapping -***********************************************************************/ - -#ifndef VCZH_COLLECTIONS_DICTIONARY -#define VCZH_COLLECTIONS_DICTIONARY - - -namespace vl -{ - namespace collections - { - /// Dictionary. - /// Type of keys. - /// Type of values. - /// Type of the key type of keys. - /// Type of the key type of values. - template< - typename KT, - typename VT, - typename KK=typename KeyType::Type, - typename VK=typename KeyType::Type - > - class Dictionary : public Object, public virtual IEnumerable> - { - public: - typedef SortedList KeyContainer; - typedef List ValueContainer; - protected: - class Enumerator : public Object, public virtual IEnumerator> - { - private: - const Dictionary* container; - vint index; - Pair current; - - void UpdateCurrent() - { - if(indexCount()) - { - current.key=container->Keys().Get(index); - current.value=container->Values().Get(index); - } - } - public: - Enumerator(const Dictionary* _container, vint _index=-1) - { - container=_container; - index=_index; - } - - IEnumerator>* Clone()const - { - return new Enumerator(container, index); - } - - const Pair& Current()const - { - return current; - } - - vint Index()const - { - return index; - } - - bool Next() - { - index++; - UpdateCurrent(); - return index>=0 && indexCount(); - } - - void Reset() - { - index=-1; - UpdateCurrent(); - } - }; - - KeyContainer keys; - ValueContainer values; - public: - /// Create a dictionary. - Dictionary() - { - } - - IEnumerator>* CreateEnumerator()const - { - return new Enumerator(this); - } - - /// Set a preference of using memory. - /// Set to true (by default) to let the container efficiently reduce memory usage when necessary. - void SetLessMemoryMode(bool mode) - { - keys.SetLessMemoryMode(mode); - values.SetLessMemoryMode(mode); - } - - /// Get all keys. - /// All keys. - const KeyContainer& Keys()const - { - return keys; - } - - /// Get all values. - /// All values. - const ValueContainer& Values()const - { - return values; - } - - /// Get the number of keys. - /// The number of keys. - vint Count()const - { - return keys.Count(); - } - - /// Get the reference to the value associated with a key. - /// The reference to the value. - /// The key to find. - const VT& Get(const KK& key)const - { - return values.Get(keys.IndexOf(key)); - } - - /// Get the reference to the value associated with a key. - /// The reference to the value. - /// The key to find. - const VT& operator[](const KK& key)const - { - return values.Get(keys.IndexOf(key)); - } - - /// Replace the value associated with a key. - /// Returns true if the value is replaced. - /// The key to find. - /// The key to replace. - bool Set(const KT& key, const VT& value) - { - vint index=keys.IndexOf(KeyType::GetKeyValue(key)); - if(index==-1) - { - index=keys.Add(key); - values.Insert(index, value); - } - else - { - values[index]=value; - } - return true; - } - - /// Add a key with an associated value. Exception will raise if the key already exists. - /// Returns true if the pair is added. - /// The pair of key and value. - bool Add(const Pair& value) - { - return Add(value.key, value.value); - } - - /// Add a key with an associated value. Exception will raise if the key already exists. - /// Returns true if the pair is added. - /// The key. - /// The value. - bool Add(const KT& key, const VT& value) - { - CHECK_ERROR(!keys.Contains(KeyType::GetKeyValue(key)), L"Dictionary::Add(const KT&, const VT&)#Key already exists."); - vint index=keys.Add(key); - values.Insert(index, value); - return true; - } - - /// Remove a key with the associated value. - /// Returns true if the key and the value is removed. - /// The key. - bool Remove(const KK& key) - { - vint index=keys.IndexOf(key); - if(index!=-1) - { - keys.RemoveAt(index); - values.RemoveAt(index); - return true; - } - else - { - return false; - } - } - - /// Remove everything. - /// Returns true if all keys and values are removed. - bool Clear() - { - keys.Clear(); - values.Clear(); - return true; - } - }; - - /// Group, which is similar to an dictionary, but a group can associate multiple values with a key. - /// Type of keys. - /// Type of values. - /// Type of the key type of keys. - /// Type of the key type of values. - template< - typename KT, - typename VT, - typename KK=typename KeyType::Type, - typename VK=typename KeyType::Type - > - class Group : public Object, public virtual IEnumerable> - { - typedef SortedList KeyContainer; - typedef List ValueContainer; - protected: - class Enumerator : public Object, public virtual IEnumerator> - { - private: - const Group* container; - vint keyIndex; - vint valueIndex; - Pair current; - - void UpdateCurrent() - { - if(keyIndexCount()) - { - const ValueContainer& values=container->GetByIndex(keyIndex); - if(valueIndexKeys().Get(keyIndex); - current.value=values.Get(valueIndex); - } - } - } - public: - Enumerator(const Group* _container, vint _keyIndex=-1, vint _valueIndex=-1) - { - container=_container; - keyIndex=_keyIndex; - valueIndex=_valueIndex; - } - - IEnumerator>* Clone()const - { - return new Enumerator(container, keyIndex, valueIndex); - } - - const Pair& Current()const - { - return current; - } - - vint Index()const - { - if(0<=keyIndex && keyIndexCount()) - { - vint index=0; - for(vint i=0;iGetByIndex(i).Count(); - } - return index+valueIndex; - } - else - { - return -1; - } - } - - bool Next() - { - if(keyIndex==-1) - { - keyIndex=0; - } - while(keyIndexCount()) - { - valueIndex++; - const ValueContainer& values=container->GetByIndex(keyIndex); - if(valueIndex values; - public: - Group() - { - } - - ~Group() - { - Clear(); - } - - IEnumerator>* CreateEnumerator()const - { - return new Enumerator(this); - } - - /// Get all keys. - /// All keys. - const KeyContainer& Keys()const - { - return keys; - } - - /// Get the number of keys. - /// The number of keys. - vint Count()const - { - return keys.Count(); - } - - /// Get all values associated with a key. - /// All values. - /// The key to find. - const ValueContainer& Get(const KK& key)const - { - return *values.Get(keys.IndexOf(key)); - } - - /// Get all values associated with a key. - /// All values. - /// The position of a the key. - const ValueContainer& GetByIndex(vint index)const - { - return *values.Get(index); - } - - /// Get all values associated with a key. - /// All values. - /// The key to find. - const ValueContainer& operator[](const KK& key)const - { - return *values.Get(keys.IndexOf(key)); - } - - /// Test if a key exists in the group or not. - /// Returns true if the key exists. - /// The key to find. - bool Contains(const KK& key)const - { - return keys.Contains(key); - } - - /// Test if a key exists with an associated value in the group or not. - /// Returns true if the key exists with an associated value. - /// The key to find. - /// The value to find. - bool Contains(const KK& key, const VK& value)const - { - vint index=keys.IndexOf(key); - if(index!=-1) - { - return values.Get(index)->Contains(value); - } - else - { - return false; - } - } - - /// Add a key with an associated value. If the key already exists, the value will be associated with the key with other values. - /// Returns true if the pair is added. - /// The pair of key and value. - bool Add(const Pair& value) - { - return Add(value.key, value.value); - } - - /// Add a key with an associated value. If the key already exists, the value will be associated with the key with other values. - /// Returns true if the pair is added. - /// The key. - /// The value. - bool Add(const KT& key, const VT& value) - { - ValueContainer* target=0; - vint index=keys.IndexOf(KeyType::GetKeyValue(key)); - if(index==-1) - { - target=new ValueContainer; - values.Insert(keys.Add(key), target); - } - else - { - target=values[index]; - } - target->Add(value); - return true; - } - - /// Remove a key with all associated values. - /// Returns true if the key and all associated values are removed. - /// The key. - bool Remove(const KK& key) - { - vint index=keys.IndexOf(key); - if(index!=-1) - { - keys.RemoveAt(index); - List* target=values[index]; - values.RemoveAt(index); - delete target; - return true; - } - else - { - return false; - } - } - - /// Remove a key with the associated values. - /// Returns true if the key and the associated values are removed. If there are multiple values associated with the key, only the value will be removed. - /// The key. - /// The value. - bool Remove(const KK& key, const VK& value) - { - vint index=keys.IndexOf(key); - if(index!=-1) - { - List* target=values[index]; - target->Remove(value); - if(target->Count()==0) - { - keys.RemoveAt(index); - values.RemoveAt(index); - delete target; - } - return true; - } - else - { - return false; - } - } - - /// Remove everything. - /// Returns true if all keys and values are removed. - bool Clear() - { - for(vint i=0;i void - typename TDiscardSecond, // TKey * [TValueSecond] -> void - typename TAccept // TKey * [TValueFirst] * [TValueSecond] -> void - > - void GroupInnerJoin( - const Group& first, - const Group& second, - const TDiscardFirst& discardFirst, - const TDiscardSecond& discardSecond, - const TAccept& accept - ) - { - vint firstIndex = 0; - vint secondIndex = 0; - vint firstCount = first.Keys().Count(); - vint secondCount = second.Keys().Count(); - while (true) - { - if (firstIndex < firstCount) - { - auto firstKey = first.Keys()[firstIndex]; - const List& firstValues = first.GetByIndex(firstIndex); - - if (secondIndex < secondCount) - { - auto secondKey = second.Keys()[secondIndex]; - const List& secondValues = second.GetByIndex(secondIndex); - - if (firstKey < secondKey) - { - discardFirst(firstKey, firstValues); - firstIndex++; - } - else if (firstKey > secondKey) - { - discardSecond(secondKey, secondValues); - secondIndex++; - } - else - { - accept(firstKey, firstValues, secondValues); - firstIndex++; - secondIndex++; - } - } - else - { - discardFirst(firstKey, firstValues); - firstIndex++; - } - } - else - { - if (secondIndex < secondCount) - { - auto secondKey = second.Keys()[secondIndex]; - const List& secondValues = second.GetByIndex(secondIndex); - - discardSecond(secondKey, secondValues); - secondIndex++; - } - else - { - break; - } - } - } - } - -/*********************************************************************** -Random Access -***********************************************************************/ - namespace randomaccess_internal - { - template - struct RandomAccessable> - { - static const bool CanRead = true; - static const bool CanResize = false; - }; - - template - struct RandomAccess> - { - static vint GetCount(const Dictionary& t) - { - return t.Count(); - } - - static Pair GetValue(const Dictionary& t, vint index) - { - return Pair(t.Keys().Get(index), t.Values().Get(index)); - } - - static void AppendValue(Dictionary& t, const Pair& value) - { - t.Set(value.key, value.value); - } - }; - } - } -} - -#endif - -/*********************************************************************** -.\STREAM\INTERFACES.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Stream::Interfaces - -Interfaces: - IStream : Stream -***********************************************************************/ - -#ifndef VCZH_STREAM_INTERFACES -#define VCZH_STREAM_INTERFACES - - -namespace vl -{ - namespace stream - { - /// - /// Interface for streams. Stream functions are grouped into 5 categories: - /// 1) Feature testing functions. - /// 2) Read functions, available only if [M:vl.stream.IStream.CanRead] returns true. - /// 3) Peek functions, available only if [M:vl.stream.IStream.CanPeek] returns true. - /// 4) Write functions, available only if [M:vl.stream.IStream.CanWrite] returns true. - /// 5) Seek functions, available only if [M:vl.stream.IStream.CanSeek] returns true. - /// 6) Size functions, available only if [M:vl.stream.IStream.IsLimited] returns true. But there are still some streams knows that the content is limited, but the size is unknown. In this case, [M:vl.stream.IStream.Size] will return -1. - /// - class IStream : public virtual Interface - { - public: - /// Test if the stream is readable. - /// Returns true if the stream is readable. - virtual bool CanRead()const=0; - /// Test if the stream is writable. - /// Returns true if the stream is writable. - virtual bool CanWrite()const=0; - /// Test if the stream is seekable. - /// Returns true if the stream is seekable. - virtual bool CanSeek()const=0; - /// Test if the stream is peekable. - /// Returns true if the stream is peekable. - virtual bool CanPeek()const=0; - /// Test if the content of the stream is limited. A writable stream can also be limited, it means that you can only write a limited content to the stream. - /// Returns true if the content of the stream is limited. - virtual bool IsLimited()const=0; - /// Test if the stream is available. For example, if you create a readable [T:vl.stream.FileStream] giving a wrong file name, it will be unavailable. - /// Returns true if the stream is available. - virtual bool IsAvailable()const=0; - /// Close the stream. - virtual void Close()=0; - /// Get the current position in the stream. - /// The position in the stream. Returns -1 if the stream is not available. - virtual pos_t Position()const=0; - /// Get the size of the content.. - /// The size of the content. Returns -1 if the size is unknown or the stream is not available. - virtual pos_t Size()const=0; - /// Step forward or backward from the current position. Will throw exception if the stream is not seekable or not available. - /// The length of the step. - virtual void Seek(pos_t _size)=0; - /// Step fowward from the beginning. Will throw exception if the stream is not seekable or not available. - /// The length of the step. - virtual void SeekFromBegin(pos_t _size)=0; - /// Step backward from the end. Will throw exception if the stream is not seekable or not available. - /// The length of the step. - virtual void SeekFromEnd(pos_t _size)=0; - /// Read from the current position and step forward. Will throw exception if the stream is not readable or not available. - /// Returns the actual size of the content that is read. Returns 0 indicates that the stream reaches the end if the stream is limited. - /// A buffer to store the content. - /// The size of the content that is expected to read. - virtual vint Read(void* _buffer, vint _size)=0; - /// Write to the current position and step forward. Will throw exception if the stream is not writable or not available. - /// Returns the actual size of the content that is written. Returns 0 indicates that the stream reaches the end if the stream is limited. - /// A buffer storing the content to write. - /// The size of the content that is expected to write. - virtual vint Write(void* _buffer, vint _size)=0; - /// Read from the current position but not step forward. Will throw exception if the stream is not peekable or not available. - /// Returns the actual size of the content that is read. Returns 0 indicates that the stream reaches the end if the stream is limited. - /// A buffer to store the content. - /// The size of the content that is expected to peek. - virtual vint Peek(void* _buffer, vint _size)=0; - }; - - /// Encoder interface. This interface defines a writable transformation from one stream to another stream. You can create a [T:vl.stream.EncoderStream] after you have an encoder. - class IEncoder : public Interface - { - public: - /// Set a target writable stream. The function will transform the content and write to this tream. - /// The target writable stream. - virtual void Setup(IStream* _stream)=0; - /// Stop the transformation, ensuring all written content is transformed to the target stream. - virtual void Close()=0; - /// Transform content and write to the target stream. This function may cache something to increase performance, so it cannot expect that all transformed content will be written to the target stream immediately. - /// Returns the actual size of the content before transforming that is written. The content is treated as being written even it is cached and not actually write to the target stream. - /// A buffer storing the content to write. - /// The size of the content that is expected to write. - virtual vint Write(void* _buffer, vint _size)=0; - }; - - /// Decoder interface. This interface defines a readable transformation from one stream to another stream. You can create a [T:vl.stream.DecoderStream] after you have an decoder. - class IDecoder : public Interface - { - public: - /// Set a target readable stream. The function will read from this tream and transform the content. - /// The target readable stream. - virtual void Setup(IStream* _stream)=0; - /// Stop the transformation. - virtual void Close()=0; - /// Read from the target stream and transform the content. - /// Returns the actual size of the content after transforming that is read. - /// A buffer to store the content. - /// The size of the content that is expected to read. - virtual vint Read(void* _buffer, vint _size)=0; - }; - } -} - -#endif - -/*********************************************************************** -.\STREAM\MEMORYSTREAM.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Stream::MemoryStream - -Interfaces: - MemoryStream : Memory stream -***********************************************************************/ - -#ifndef VCZH_STREAM_MEMORYSTREAM -#define VCZH_STREAM_MEMORYSTREAM - - -namespace vl -{ - namespace stream - { - /// A readable, writable, seekable and peekable stream that stores everything in memory. - class MemoryStream : public Object, public virtual IStream - { - protected: - vint block; - char* buffer; - vint size; - vint position; - vint capacity; - - void PrepareSpace(vint totalSpace); - public: - /// Create a stream. - /// Size for each allocation. The stream will only allocate new memory of size "_block" when it reaches the end and has to extend. - MemoryStream(vint _block=65536); - ~MemoryStream(); - - bool CanRead()const; - bool CanWrite()const; - bool CanSeek()const; - bool CanPeek()const; - bool IsLimited()const; - bool IsAvailable()const; - void Close(); - pos_t Position()const; - pos_t Size()const; - void Seek(pos_t _size); - void SeekFromBegin(pos_t _size); - void SeekFromEnd(pos_t _size); - vint Read(void* _buffer, vint _size); - vint Write(void* _buffer, vint _size); - vint Peek(void* _buffer, vint _size); - void* GetInternalBuffer(); - }; - } -} - -#endif - -/*********************************************************************** -.\STREAM\MEMORYWRAPPERSTREAM.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Stream::MemoryWrapperStream - -Interfaces: - MemoryWrapperStream : Memory stream which manipulate a given buffer -***********************************************************************/ - -#ifndef VCZH_STREAM_MEMORYWRAPPERSTREAM -#define VCZH_STREAM_MEMORYWRAPPERSTREAM - - -namespace vl -{ - namespace stream - { - /// A readable, writable, seekable and peekable stream that operates a buffer. - class MemoryWrapperStream : public Object, public virtual IStream - { - protected: - char* buffer; - vint size; - vint position; - public: - /// Create a stream. - /// The buffer to operate. - /// Size of the buffer. - MemoryWrapperStream(void* _buffer, vint _size); - ~MemoryWrapperStream(); - - bool CanRead()const; - bool CanWrite()const; - bool CanSeek()const; - bool CanPeek()const; - bool IsLimited()const; - bool IsAvailable()const; - void Close(); - pos_t Position()const; - pos_t Size()const; - void Seek(pos_t _size); - void SeekFromBegin(pos_t _size); - void SeekFromEnd(pos_t _size); - vint Read(void* _buffer, vint _size); - vint Write(void* _buffer, vint _size); - vint Peek(void* _buffer, vint _size); - }; - } -} - -#endif - -/*********************************************************************** -.\STREAM\CHARFORMAT.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Stream::CharFormat - -Classes: - CharEncoder : Encoder to translate from wchar_t to some specified format - CharDecoder : Decoder to transate from some specified format to wchar_t - MbcsEncoder : Mbcs encoder (using the code page of the current locale) - MbcsDecoder : Mbcs decoder (using the code page of the current locale) - Utf16Encoder : UTF-16 encoder - Utf16Decoder : UTF-16 decoder - Utf16BEEncoder : UTF-16 encoder with big endian - Utf16BEDecoder : UTF-16 decoder with big endian - Utf8Encoder : UTF-8 encoder - Utf8Decoder : UTF-8 decoder - BomEncoder : Character encoder which writes a BOM before the text - BomDecoder : Character decoder which reads a BOM from the data to know the encoding -***********************************************************************/ - -#ifndef VCZH_STREAM_CHARFORMAT -#define VCZH_STREAM_CHARFORMAT - - -namespace vl -{ - namespace stream - { - - /* - How UCS-4 translate to UTF-8 - U-00000000 - U-0000007F: 0xxxxxxx - U-00000080 - U-000007FF: 110xxxxx 10xxxxxx - U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx - U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx - U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx - BOM: - FFFE =Unicode (vceUtf16) - FEFF =Unicode Big Endian (vceUtf16_be) - EFBBBF =UTF-8 (vceUtf8) - other =MBCS(GBK) (vceMbcs) - */ - -/*********************************************************************** -Char Encoder and Decoder -***********************************************************************/ - - /// Base type of all character encoder. - class CharEncoder : public Object, public IEncoder - { - protected: - IStream* stream; - vuint8_t cacheBuffer[sizeof(wchar_t)]; - vint cacheSize; - - virtual vint WriteString(wchar_t* _buffer, vint chars)=0; - public: - CharEncoder(); - - void Setup(IStream* _stream); - void Close(); - vint Write(void* _buffer, vint _size); - }; - - /// Base type of all character decoder. - class CharDecoder : public Object, public IDecoder - { - protected: - IStream* stream; - vuint8_t cacheBuffer[sizeof(wchar_t)]; - vint cacheSize; - - virtual vint ReadString(wchar_t* _buffer, vint chars)=0; - public: - CharDecoder(); - - void Setup(IStream* _stream); - void Close(); - vint Read(void* _buffer, vint _size); - }; - -/*********************************************************************** -Mbcs -***********************************************************************/ - - /// Encoder to transform text in a local code page from wchar_t. - class MbcsEncoder : public CharEncoder - { - protected: - vint WriteString(wchar_t* _buffer, vint chars); - }; - - /// Encoder to transform text in a local code page to wchar_t. - class MbcsDecoder : public CharDecoder - { - protected: - vint ReadString(wchar_t* _buffer, vint chars); - }; - -/*********************************************************************** -Utf-16 -***********************************************************************/ - - /// Encoder to transform UTF-16 text from wchar_t. - class Utf16Encoder : public CharEncoder - { - protected: - vint WriteString(wchar_t* _buffer, vint chars); - }; - - /// Decoder to transform UTF-16 text to wchar_t. - class Utf16Decoder : public CharDecoder - { - protected: - vint ReadString(wchar_t* _buffer, vint chars); - }; - -/*********************************************************************** -Utf-16-be -***********************************************************************/ - - /// Encoder to transform big endian UTF-16 text from wchar_t. - class Utf16BEEncoder : public CharEncoder - { - protected: - vint WriteString(wchar_t* _buffer, vint chars); - }; - - /// Decoder to transform big endian UTF-16 text to wchar_t. - class Utf16BEDecoder : public CharDecoder - { - protected: - vint ReadString(wchar_t* _buffer, vint chars); - }; - -/*********************************************************************** -Utf-8 -***********************************************************************/ - - /// Encoder to transform UTF-8 text from wchar_t. - class Utf8Encoder : public CharEncoder - { - protected: - vint WriteString(wchar_t* _buffer, vint chars); - }; - - /// Decoder to transform UTF-8 text to wchar_t. - class Utf8Decoder : public CharDecoder - { - protected: -#if defined VCZH_MSVC - wchar_t cache; - bool cacheAvailable; -#endif - vint ReadString(wchar_t* _buffer, vint chars); - public: - Utf8Decoder(); - }; - -/*********************************************************************** -Bom -***********************************************************************/ - - /// Encoder to transform text from wchar_t. A BOM will be added at the beginning. - class BomEncoder : public Object, public IEncoder - { - public: - /// Text encoding. - enum Encoding - { - /// Multi-bytes character string. - Mbcs, - /// UTF-8. - Utf8, - /// UTF-16. - Utf16, - /// Big endian UTF-16. - Utf16BE - }; - protected: - Encoding encoding; - IEncoder* encoder; - public: - /// Create an encoder. - /// Specified encoding. - BomEncoder(Encoding _encoding); - ~BomEncoder(); - - void Setup(IStream* _stream); - void Close(); - vint Write(void* _buffer, vint _size); - }; - - /// Decoder to transform text to wchar_t. This decoder depends on the BOM information at the beginning to decide the format of the input. - class BomDecoder : public Object, public IDecoder - { - private: - class BomStream : public Object, public IStream - { - protected: - IStream* stream; - char bom[3]; - vint bomLength; - vint bomPosition; - public: - BomStream(IStream* _stream, char* _bom, vint _bomLength); - - bool CanRead()const; - bool CanWrite()const; - bool CanSeek()const; - bool CanPeek()const; - bool IsLimited()const; - bool IsAvailable()const; - void Close(); - pos_t Position()const; - pos_t Size()const; - void Seek(pos_t _size); - void SeekFromBegin(pos_t _size); - void SeekFromEnd(pos_t _size); - vint Read(void* _buffer, vint _size); - vint Write(void* _buffer, vint _size); - vint Peek(void* _buffer, vint _size); - }; - protected: - IDecoder* decoder; - IStream* stream; - - public: - /// Create an decoder. - BomDecoder(); - ~BomDecoder(); - - void Setup(IStream* _stream); - void Close(); - vint Read(void* _buffer, vint _size); - }; - -/*********************************************************************** -Encoding Test -***********************************************************************/ - - /// Guess the text encoding in a buffer. - /// The buffer to guess. - /// Size of the buffer in bytes. - /// Returns the most possible encoding. - /// Returns true if the BOM information is at the beginning of the buffer. - extern void TestEncoding(unsigned char* buffer, vint size, BomEncoder::Encoding& encoding, bool& containsBom); - -/*********************************************************************** -Serialization -***********************************************************************/ - - namespace internal - { - template - struct Reader - { - stream::IStream& input; - T context; - - Reader(stream::IStream& _input) - :input(_input) - , context(nullptr) - { - } - }; - - template - struct Writer - { - stream::IStream& output; - T context; - - Writer(stream::IStream& _output) - :output(_output) - , context(nullptr) - { - } - }; - - using ContextFreeReader = Reader; - using ContextFreeWriter = Writer; - - template - struct Serialization - { - template - static void IO(TIO& io, T& value); - }; - - template - Reader& operator<<(Reader& reader, TValue& value) - { - Serialization::IO(reader, value); - return reader; - } - - template - Writer& operator<<(Writer& writer, TValue& value) - { - Serialization::IO(writer, value); - return writer; - } - - //--------------------------------------------- - - template<> - struct Serialization - { - template - static void IO(Reader& reader, vint64_t& value) - { - if (reader.input.Read(&value, sizeof(value)) != sizeof(value)) - { - CHECK_FAIL(L"Deserialization failed."); - } - } - - template - static void IO(Writer& writer, vint64_t& value) - { - if (writer.output.Write(&value, sizeof(value)) != sizeof(value)) - { - CHECK_FAIL(L"Serialization failed."); - } - } - }; - - template<> - struct Serialization - { - template - static void IO(Reader& reader, vint32_t& value) - { - vint64_t v = 0; - Serialization::IO(reader, v); - value = (vint32_t)v; - } - - template - static void IO(Writer& writer, vint32_t& value) - { - vint64_t v = (vint64_t)value; - Serialization::IO(writer, v); - } - }; - - template<> - struct Serialization - { - template - static void IO(Reader& reader, bool& value) - { - vint8_t v = 0; - if (reader.input.Read(&v, sizeof(v)) != sizeof(v)) - { - CHECK_FAIL(L"Deserialization failed."); - } - else - { - value = v == -1; - } - } - - template - static void IO(Writer& writer, bool& value) - { - vint8_t v = value ? -1 : 0; - if (writer.output.Write(&v, sizeof(v)) != sizeof(v)) - { - CHECK_FAIL(L"Serialization failed."); - } - } - }; - - template - struct Serialization> - { - template - static void IO(Reader& reader, Ptr& value) - { - bool notNull = false; - reader << notNull; - if (notNull) - { - value = new T; - Serialization::IO(reader, *value.Obj()); - } - else - { - value = 0; - } - } - - template - static void IO(Writer& writer, Ptr& value) - { - bool notNull = value; - writer << notNull; - if (notNull) - { - Serialization::IO(writer, *value.Obj()); - } - } - }; - - template - struct Serialization> - { - template - static void IO(Reader& reader, Nullable& value) - { - bool notNull = false; - reader << notNull; - if (notNull) - { - T data; - Serialization::IO(reader, data); - value = Nullable(data); - } - else - { - value = Nullable(); - } - } - - template - static void IO(Writer& writer, Nullable& value) - { - bool notNull = value; - writer << notNull; - if (notNull) - { - T data = value.Value(); - Serialization::IO(writer, data); - } - } - }; - - template<> - struct Serialization - { - template - static void IO(Reader& reader, WString& value) - { - vint count = -1; - reader << count; - if (count > 0) - { - MemoryStream stream; - reader << (IStream&)stream; - Utf8Decoder decoder; - decoder.Setup(&stream); - - collections::Array stringBuffer(count + 1); - vint stringSize = decoder.Read(&stringBuffer[0], count * sizeof(wchar_t)); - stringBuffer[stringSize / sizeof(wchar_t)] = 0; - - value = &stringBuffer[0]; - } - else - { - value = L""; - } - } - - template - static void IO(Writer& writer, WString& value) - { - vint count = value.Length(); - writer << count; - if (count > 0) - { - MemoryStream stream; - { - Utf8Encoder encoder; - encoder.Setup(&stream); - encoder.Write((void*)value.Buffer(), count * sizeof(wchar_t)); - } - writer << (IStream&)stream; - } - } - }; - - template - struct Serialization> - { - template - static void IO(Reader& reader, collections::List& value) - { - vint32_t count = -1; - reader << count; - value.Clear(); - for (vint i = 0; i < count; i++) - { - T t; - reader << t; - value.Add(t); - } - } - - template - static void IO(Writer& writer, collections::List& value) - { - vint32_t count = (vint32_t)value.Count(); - writer << count; - for (vint i = 0; i < count; i++) - { - writer << value[i]; - } - } - }; - - template - struct Serialization> - { - template - static void IO(Reader& reader, collections::Array& value) - { - vint32_t count = -1; - reader << count; - value.Resize(count); - for (vint i = 0; i < count; i++) - { - reader << value[i]; - } - } - - template - static void IO(Writer& writer, collections::Array& value) - { - vint32_t count = (vint32_t)value.Count(); - writer << count; - for (vint i = 0; i < count; i++) - { - writer << value[i]; - } - } - }; - - template - struct Serialization> - { - template - static void IO(Reader& reader, collections::Dictionary& value) - { - vint32_t count = -1; - reader << count; - value.Clear(); - for (vint i = 0; i < count; i++) - { - K k; - V v; - reader << k << v; - value.Add(k, v); - } - } - - template - static void IO(Writer& writer, collections::Dictionary& value) - { - vint32_t count = (vint32_t)value.Count(); - writer << count; - for (vint i = 0; i < count; i++) - { - K k = value.Keys()[i]; - V v = value.Values()[i]; - writer << k << v; - } - } - }; - - template - struct Serialization> - { - template - static void IO(Reader& reader, collections::Group& value) - { - vint32_t count = -1; - reader << count; - value.Clear(); - for (vint i = 0; i < count; i++) - { - K k; - collections::List v; - reader << k << v; - for (vint j = 0; j < v.Count(); j++) - { - value.Add(k, v[j]); - } - } - } - - template - static void IO(Writer& writer, collections::Group& value) - { - vint32_t count = (vint32_t)value.Count(); - writer << count; - for (vint i = 0; i < count; i++) - { - K k = value.Keys()[i]; - collections::List& v = const_cast&>(value.GetByIndex(i)); - writer << k << v; - } - } - }; - - template<> - struct Serialization - { - template - static void IO(Reader& reader, stream::IStream& value) - { - vint32_t count = 0; - reader.input.Read(&count, sizeof(count)); - - if (count > 0) - { - vint length = 0; - collections::Array buffer(count); - value.SeekFromBegin(0); - length = reader.input.Read(&buffer[0], count); - if (length != count) - { - CHECK_FAIL(L"Deserialization failed."); - } - length = value.Write(&buffer[0], count); - if (length != count) - { - CHECK_FAIL(L"Deserialization failed."); - } - value.SeekFromBegin(0); - } - } - - template - static void IO(Writer& writer, stream::IStream& value) - { - vint32_t count = (vint32_t)value.Size(); - writer.output.Write(&count, sizeof(count)); - - if (count > 0) - { - vint length = 0; - collections::Array buffer(count); - value.SeekFromBegin(0); - length = value.Read(&buffer[0], count); - if (length != count) - { - CHECK_FAIL(L"Serialization failed."); - } - length = writer.output.Write(&buffer[0], count); - if (length != count) - { - CHECK_FAIL(L"Serialization failed."); - } - value.SeekFromBegin(0); - } - } - }; - - //--------------------------------------------- - -#define BEGIN_SERIALIZATION(TYPE)\ - template<>\ - struct Serialization\ - {\ - template\ - static void IO(TIO& op, TYPE& value)\ - {\ - op\ - -#define SERIALIZE(FIELD)\ - << value.FIELD\ - -#define END_SERIALIZATION\ - ;\ - }\ - };\ - -#define SERIALIZE_ENUM(TYPE)\ - template<>\ - struct Serialization\ - {\ - template\ - static void IO(Reader& reader, TYPE& value)\ - {\ - vint32_t v = 0;\ - Serialization::IO(reader, v);\ - value = (TYPE)v;\ - }\ - template\ - static void IO(Writer& writer, TYPE& value)\ - {\ - vint32_t v = (vint32_t)value;\ - Serialization::IO(writer, v);\ - }\ - };\ - - } - } -} - -#endif - - /*********************************************************************** .\COLLECTIONS\OPERATIONCOPYFROM.H ***********************************************************************/ @@ -6616,1030 +5074,650 @@ FOREACH and FOREACH_INDEXER #endif /*********************************************************************** -.\REGEX\REGEX.H +.\COLLECTIONS\DICTIONARY.H ***********************************************************************/ /*********************************************************************** Vczh Library++ 3.0 Developer: Zihan Chen(vczh) -Regex::Regular Expression +Data Structure::Dictionary Classes: - RegexString : String Fragment - RegexMatch : Match Result - Regex : Regular Expression - RegexToken : Token - RegexTokens : Token Stream - RegexLexer : Tokenizer + Dictionary : One to one mapping + Group : One to many mapping ***********************************************************************/ -#ifndef VCZH_REGEX_REGEX -#define VCZH_REGEX_REGEX +#ifndef VCZH_COLLECTIONS_DICTIONARY +#define VCZH_COLLECTIONS_DICTIONARY namespace vl { - namespace regex_internal + namespace collections { - class PureResult; - class PureInterpretor; - class RichResult; - class RichInterpretor; - } - - namespace regex - { - -/*********************************************************************** -Data Structure -***********************************************************************/ - - /// A type representing a fragment of the input string. - class RegexString : public Object + /// Dictionary. + /// Type of keys. + /// Type of values. + /// Type of the key type of keys. + /// Type of the key type of values. + template< + typename KT, + typename VT, + typename KK=typename KeyType::Type, + typename VK=typename KeyType::Type + > + class Dictionary : public Object, public virtual IEnumerable> { + public: + typedef SortedList KeyContainer; + typedef List ValueContainer; protected: - WString value; - vint start; - vint length; - - public: - RegexString(vint _start=0); - RegexString(const WString& _string, vint _start, vint _length); - - /// The position of the input string. - /// The position. - vint Start()const; - /// The size of the fragment in characters. - /// The size. - vint Length()const; - /// Get the fragment. - /// The fragment. - const WString& Value()const; - bool operator==(const RegexString& string)const; - }; - - /// A type representing a match of the input string. - class RegexMatch : public Object, private NotCopyable - { - friend class Regex; - public: - typedef Ptr Ref; - typedef collections::List List; - typedef collections::List CaptureList; - typedef collections::Group CaptureGroup; - protected: - collections::List captures; - collections::Group groups; - bool success; - RegexString result; - - RegexMatch(const WString& _string, regex_internal::PureResult* _result); - RegexMatch(const WString& _string, regex_internal::RichResult* _result, regex_internal::RichInterpretor* _rich); - RegexMatch(const RegexString& _result); - public: - - /// Test if this match is a success match or a failed match. A failed match will only appear when calling [M:vl.regex.Regex.Split] or [M:vl.regex.Regex.Cut]. In other cases, failed matches are either not included in the result, or become null pointers. - /// Returns true if this match is a success match. - bool Success()const; - /// Get the whole fragment that matches. - /// The whole fragment. - const RegexString& Result()const; - /// Get all fragments that are captured. - /// All fragments that are captured. - const CaptureList& Captures()const; - /// Get all fragments that are captured by named groups. - /// All fragments that are captured. - const CaptureGroup& Groups()const; - }; - -/*********************************************************************** -Regex -***********************************************************************/ - - /// , \^, \$, \!, \=: represents itself - /// Escaped characters in charset defined in a square bracket: - /// \r: the CR character - /// \n: the LF character - /// \t: the tab character - /// \-, \[, \], \\, \/, \^, \$: represents itself - /// 4) Loops: - /// regex{3}: repeats 3 times - /// regex{3,}: repeats 3 or more times - /// regex{1,3}: repeats 1 to 3 times - /// regex?: repeats 0 or 1 times - /// regex*: repeats 0 or more times - /// regex+: repeats 1 or more times - /// if you add a "?" right after a loop, it means repeating as less as possible (DFA incompatible) - /// 5) Capturing: (DFA incompatible) - /// (regex): No capturing, just change the operators' association - /// (?regex): Capture matched fragment - /// (regex): Capture matched fragment in a named group called "name" - /// (<$i>): Match the i-th captured fragment, begins from 0 - /// (<$name;i>): Match the i-th captured fragment in the named group called "name", begins from 0 - /// (<$name>): Match any captured fragment in the named group called "name" - /// 6) MISC - /// (=regex): The prefix of the following text should match the regex, but it is not counted in the whole match (DFA incompatible) - /// (!regex): Any prefix of the following text should not match the regex, and it is not counted in the whole match (DFA incompatible) - /// (<#name>regex): Name the regex "name", and it applies here - /// (<&name>): Copy the named regex "name" here and apply - /// ]]> - class Regex : public Object, private NotCopyable - { - protected: - regex_internal::PureInterpretor* pure; - regex_internal::RichInterpretor* rich; - - void Process(const WString& text, bool keepEmpty, bool keepSuccess, bool keepFail, RegexMatch::List& matches)const; - public: - /// Create a regular expression. - /// The regular expression in a string. - /// Set to true to tell the Regex to use DFA if possible. - Regex(const WString& code, bool preferPure=true); - ~Regex(); - - /// Test does the Regex uses DFA to match a string. - /// Returns true if DFA is used. - bool IsPureMatch()const; - /// Test does the Regex uses DFA to test a string. Test means ignoring all capturing requirements. - /// Returns true if DFA is used. - bool IsPureTest()const; - - /// Match a prefix of the text. - /// Returns the match. Returns null if failed. - /// The text to match. - RegexMatch::Ref MatchHead(const WString& text)const; - /// Match a fragment of the text. - /// Returns the match. Returns null if failed. - /// The text to match. - RegexMatch::Ref Match(const WString& text)const; - /// Match a prefix of the text, ignoring all capturing requirements. - /// Returns true if succeeded. - /// The text to match. - bool TestHead(const WString& text)const; - /// Match a fragment of the text, ignoring all capturing requirements. - /// Returns true if succeeded. - /// The text to match. - bool Test(const WString& text)const; - /// Find all matched fragments of the text, returning all matched fragments. - /// The text to match. - /// All successful matches. - void Search(const WString& text, RegexMatch::List& matches)const; - /// Split the text by matched fragments, returning all unmatched fragments. - /// The text to match. - /// Set to true to keep all empty matches. - /// All failed matches. - void Split(const WString& text, bool keepEmptyMatch, RegexMatch::List& matches)const; - /// Cut the text by matched fragments, returning all matched or unmatched fragments. - /// The text to match. - /// Set to true to keep all empty matches. - /// All successful and failed matches. - void Cut(const WString& text, bool keepEmptyMatch, RegexMatch::List& matches)const; - }; - -/*********************************************************************** -Tokenizer -***********************************************************************/ - - /// A token. - struct RegexToken - { - /// Position in the input string. - vint start; - /// Size of this token in characters. - vint length; - /// The token id, begins at 0, represents the regular expression in the list that matches this token. -1 means this token is produced by an error. - vint token; - /// The pointer to where this token starts in the input string . - const wchar_t* reading; - /// The argument value from [M:vl.regex.RegexLexer.Parse]. - vint codeIndex; - /// True if this token is complete. False if this token does not end here. - bool completeToken; - - /// Row number of the first character, begins at 0. - vint rowStart; - /// Column number of the first character, begins at 0. - vint columnStart; - /// Row number of the last character, begins at 0. - vint rowEnd; - /// Column number of the last character, begins at 0. - vint columnEnd; - - bool operator==(const RegexToken& _token)const; - bool operator==(const wchar_t* _token)const; - }; - - /// Token information for . - struct RegexProcessingToken - { - /// - /// The read only start position of the token. - /// This value will be -1 if is not null. - /// - const vint start; - /// - /// The length of the token, could be modified after the callback. - /// When the callback returns, the length is not allowed to be decreased. - /// This value will be -1 if is not null. - /// - vint length; - /// - /// The id of the token, could be modified after the callback. - /// - vint token; - /// - /// The flag indicating if this token is completed, could be modified after the callback. - /// - bool completeToken; - /// - /// The inter token state object, could be modified after the callback. - /// When the callback returns: - /// if the completeText parameter is true in , it should be nullptr. - /// if the token does not end at the end of the input, it should not be nullptr. - /// if a token is completed, it should be nullptr. - /// - void* interTokenState; - - RegexProcessingToken(vint _start, vint _length, vint _token, bool _completeToken, void* _interTokenState) - :start(_start) - , length(_length) - , token(_token) - , completeToken(_completeToken) - , interTokenState(_interTokenState) + class Enumerator : public Object, public virtual IEnumerator> { - } - }; + private: + const Dictionary* container; + vint index; + Pair current; - using RegexInterTokenStateDeleter = void(*)(void* interTokenState); - using RegexTokenExtendProc = void(*)(void* argument, const wchar_t* reading, vint length, bool completeText, RegexProcessingToken& processingToken); - using RegexTokenColorizeProc = void(*)(void* argument, vint start, vint length, vint token); + void UpdateCurrent() + { + if(indexCount()) + { + current.key=container->Keys().Get(index); + current.value=container->Values().Get(index); + } + } + public: + Enumerator(const Dictionary* _container, vint _index=-1) + { + container=_container; + index=_index; + } + + IEnumerator>* Clone()const + { + return new Enumerator(container, index); + } - /// Callback procedures - struct RegexProc - { - /// - /// The deleter which deletes inter token state objects created by . This callback is not called automatically. - /// - RegexInterTokenStateDeleter deleter = nullptr; - /// - /// The token extend callback. It is called after recognizing any token, and run a customized procedure to modify the token based on the given context. - /// If the length parameter is -1, it means the caller does not measure the incoming text buffer, which automatically indicates that the buffer is null-terminated. - /// If the length parameter is not -1, it means the number of available characters in the buffer. - /// The completeText parameter could be true or false. When it is false, it means that the buffer does not contain all the text. - /// - RegexTokenExtendProc extendProc = nullptr; - /// - /// The colorizer callback. It is called when a token is recognized. - /// - RegexTokenColorizeProc colorizeProc = nullptr; - /// - /// The argument object that is the first argument for and . - /// - void* argument = nullptr; - }; + const Pair& Current()const + { + return current; + } - /// Token collection representing the result from the lexical analyzer. - class RegexTokens : public Object, public collections::IEnumerable - { - friend class RegexLexer; - protected: - regex_internal::PureInterpretor* pure; - const collections::Array& stateTokens; - WString code; - vint codeIndex; - RegexProc proc; - - RegexTokens(regex_internal::PureInterpretor* _pure, const collections::Array& _stateTokens, const WString& _code, vint _codeIndex, RegexProc _proc); - public: - RegexTokens(const RegexTokens& tokens); - ~RegexTokens(); + vint Index()const + { + return index; + } - collections::IEnumerator* CreateEnumerator()const; + bool Next() + { + index++; + UpdateCurrent(); + return index>=0 && indexCount(); + } - /// Copy all tokens. - /// Returns all tokens. - /// A callback to decide which kind of tokens to discard. The input is [F:vl.regex.RegexToken.token]. Returns true to discard this kind of tokens. - void ReadToEnd(collections::List& tokens, bool(*discard)(vint)=0)const; - }; - - /// Lexical walker. - class RegexLexerWalker : public Object - { - friend class RegexLexer; - protected: - regex_internal::PureInterpretor* pure; - const collections::Array& stateTokens; - - RegexLexerWalker(regex_internal::PureInterpretor* _pure, const collections::Array& _stateTokens); - public: - RegexLexerWalker(const RegexLexerWalker& tokens); - ~RegexLexerWalker(); - - /// Get the start DFA state number, which represents the correct state before parsing any input. - /// The DFA state number. - vint GetStartState()const; - /// Test if this state can only lead to the end of one kind of token. - /// Returns the token index if this state can only lead to the end of one kind of token. Returns -1 if not. - /// The DFA state number. - vint GetRelatedToken(vint state)const; - /// Step forward by one character. - /// The input character. - /// The current state. Returns the new current state when this function returns. - /// Returns the token index at the end of the token. - /// Returns true if it reach the end of the token. - /// Returns true if the last character is the end of the token. - void Walk(wchar_t input, vint& state, vint& token, bool& finalState, bool& previousTokenStop)const; - /// Step forward by one character. - /// Returns the new current state. - /// The input character. - /// The current state. - vint Walk(wchar_t input, vint state)const; - /// Test if the input text is a complete token. - /// Returns true if the input text is a complete token. - /// The input text. - /// Size of the input text in characters. - bool IsClosedToken(const wchar_t* input, vint length)const; - /// Test if the input is a complete token. - /// Returns true if the input text is a complete token. - /// The input text. - bool IsClosedToken(const WString& input)const; - }; - - /// Lexical colorizer. - class RegexLexerColorizer : public Object - { - friend class RegexLexer; - public: - struct InternalState - { - vint currentState = -1; - vint interTokenId = -1; - void* interTokenState = nullptr; + void Reset() + { + index=-1; + UpdateCurrent(); + } }; - protected: - RegexLexerWalker walker; - RegexProc proc; - InternalState internalState; - - void CallExtendProcAndColorizeProc(const wchar_t* input, vint length, RegexProcessingToken& token, bool colorize); - vint WalkOneToken(const wchar_t* input, vint length, vint start, bool colorize); - - RegexLexerColorizer(const RegexLexerWalker& _walker, RegexProc _proc); + KeyContainer keys; + ValueContainer values; public: - RegexLexerColorizer(const RegexLexerColorizer& colorizer); - ~RegexLexerColorizer(); - - /// Get the internal state. - /// The internal state. - InternalState GetInternalState(); - /// Restore the colorizer to a internal state. - /// The internal state. - void SetInternalState(InternalState state); - /// Step forward by one character. - /// The input character. - void Pass(wchar_t input); - /// Get the start DFA state number, which represents the correct state before colorizing any characters. - /// The DFA state number. - vint GetStartState()const; - /// Colorize a text. GetCurrentState()const; - /// An inter token state at the end of this line. It could be the same object which is returned from the previous call. - /// The text to colorize. - /// Size of the text in characters. - void* Colorize(const wchar_t* input, vint length); - }; - - /// Lexical analyzer. - class RegexLexer : public Object, private NotCopyable - { - protected: - regex_internal::PureInterpretor* pure = nullptr; - collections::Array ids; - collections::Array stateTokens; - RegexProc proc; - - public: - /// Create a lexical analyzer by a set of regular expressions. [F:vl.regex.RegexToken.token] will be the index of the matched regular expression. - /// The regular expressions. - /// Callback procedures. - RegexLexer(const collections::IEnumerable& tokens, RegexProc _proc); - ~RegexLexer(); - - /// Tokenize a input text. - /// The result. - /// The text to tokenize. - /// Extra information that will store in [F:vl.regex.RegexToken.codeIndex]. - RegexTokens Parse(const WString& code, vint codeIndex=-1)const; - /// Create a equivalence walker from this lexical analyzer. - /// The walker. - RegexLexerWalker Walk()const; - /// Create a equivalence colorizer from this lexical analyzer. - /// The colorizer. - RegexLexerColorizer Colorize()const; - }; - } -} - -#endif - -/*********************************************************************** -.\STREAM\ACCESSOR.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Stream::Accessor - -Classes: - TextReader : Text reader base class - TextWriter : Text writer base class - StringReader : Text reader from a string - StreamReader : Text reader from a stream - StreamWriter : Text writer to a stream - EncoderStream : Stream that takes an encoder to translate another stream - DecoderStream : Stream that takes a decoder to translate another stream -***********************************************************************/ - -#ifndef VCZH_STREAM_ACCESSOR -#define VCZH_STREAM_ACCESSOR - - -namespace vl -{ - namespace stream - { - -/*********************************************************************** -Text Related -***********************************************************************/ - - /// Text reader. All line breaks are normalized to CRLF regardless the format in the source. - class TextReader : public Object, private NotCopyable - { - public: - /// Test does the reader reach the end or not. - /// Returns true if the reader reaches the end. - virtual bool IsEnd()=0; - /// Read a single character. - /// The character. - virtual wchar_t ReadChar()=0; - /// Read a string of a specified size. - /// The string. - /// Expected length of the string to read. - virtual WString ReadString(vint length); - /// Read a string until a line breaks is reached. - /// The string. It does not contain the line break. - virtual WString ReadLine(); - /// Read everying remain. - /// The string. - virtual WString ReadToEnd(); - }; - - /// Text writer. - class TextWriter : public Object, private NotCopyable - { - public: - /// Write a single character. - /// The character to write. - virtual void WriteChar(wchar_t c)=0; - /// Write a string. - /// Buffer to the string to write. - /// Size of the string in characters not including the zero terminator. - virtual void WriteString(const wchar_t* string, vint charCount); - /// Write a string. - /// Buffer to the zero terminated string to write. - virtual void WriteString(const wchar_t* string); - /// Write a string. - /// The string to write. - virtual void WriteString(const WString& string); - /// Write a string with a CRLF. - /// Buffer to the string to write. - /// Size of the string in characters not including the zero terminator. - virtual void WriteLine(const wchar_t* string, vint charCount); - /// Write a string with a CRLF. - /// Buffer to the zero terminated string to write. - virtual void WriteLine(const wchar_t* string); - /// Write a string with a CRLF. - /// The string to write. - virtual void WriteLine(const WString& string); - - virtual void WriteMonospacedEnglishTable(collections::Array& tableByRow, vint rows, vint columns); - }; - - /// Text reader from a string. - class StringReader : public TextReader - { - protected: - WString string; - vint current; - bool lastCallIsReadLine; - - void PrepareIfLastCallIsReadLine(); - public: - /// Create a text reader. - /// The string to read. - StringReader(const WString& _string); - - bool IsEnd(); - wchar_t ReadChar(); - WString ReadString(vint length); - WString ReadLine(); - WString ReadToEnd(); - }; - - /// Text reader from a stream. - class StreamReader : public TextReader - { - protected: - IStream* stream; - public: - /// Create a text reader. - /// The stream to read. - StreamReader(IStream& _stream); - - bool IsEnd(); - wchar_t ReadChar(); - }; - - /// Text writer to a stream. - class StreamWriter : public TextWriter - { - protected: - IStream* stream; - public: - /// Create a text writer. - /// The stream to write. - StreamWriter(IStream& _stream); - using TextWriter::WriteString; - - void WriteChar(wchar_t c); - void WriteString(const wchar_t* string, vint charCount); - }; - -/*********************************************************************** -Encoding Related -***********************************************************************/ - - /// Encoder stream, a writable stream using an [T:vl.stream.IEncoder] to transform content. - class EncoderStream : public virtual IStream - { - protected: - IStream* stream; - IEncoder* encoder; - pos_t position; - - public: - /// Create a stream. - /// The target stream to write. - /// The encoder to transform content. - EncoderStream(IStream& _stream, IEncoder& _encoder); - ~EncoderStream(); - - bool CanRead()const; - bool CanWrite()const; - bool CanSeek()const; - bool CanPeek()const; - bool IsLimited()const; - bool IsAvailable()const; - void Close(); - pos_t Position()const; - pos_t Size()const; - void Seek(pos_t _size); - void SeekFromBegin(pos_t _size); - void SeekFromEnd(pos_t _size); - vint Read(void* _buffer, vint _size); - vint Write(void* _buffer, vint _size); - vint Peek(void* _buffer, vint _size); - }; - - /// Decoder stream, a readable stream using an [T:vl.stream.IDecoder] to transform content. - class DecoderStream : public virtual IStream - { - protected: - IStream* stream; - IDecoder* decoder; - pos_t position; - - public: - /// Create a stream. - /// The target stream to read. - /// The decoder to transform content. - DecoderStream(IStream& _stream, IDecoder& _decoder); - ~DecoderStream(); - - bool CanRead()const; - bool CanWrite()const; - bool CanSeek()const; - bool CanPeek()const; - bool IsLimited()const; - bool IsAvailable()const; - void Close(); - pos_t Position()const; - pos_t Size()const; - void Seek(pos_t _size); - void SeekFromBegin(pos_t _size); - void SeekFromEnd(pos_t _size); - vint Read(void* _buffer, vint _size); - vint Write(void* _buffer, vint _size); - vint Peek(void* _buffer, vint _size); - }; - -/*********************************************************************** -Helper Functions -***********************************************************************/ - - template - WString GenerateToStream(const TCallback& callback, vint block = 65536) - { - MemoryStream stream(block); + /// Create a dictionary. + Dictionary() { - StreamWriter writer(stream); - callback(writer); } - stream.SeekFromBegin(0); + + IEnumerator>* CreateEnumerator()const { - StreamReader reader(stream); - return reader.ReadToEnd(); + return new Enumerator(this); + } + + /// Set a preference of using memory. + /// Set to true (by default) to let the container efficiently reduce memory usage when necessary. + void SetLessMemoryMode(bool mode) + { + keys.SetLessMemoryMode(mode); + values.SetLessMemoryMode(mode); + } + + /// Get all keys. + /// All keys. + const KeyContainer& Keys()const + { + return keys; + } + + /// Get all values. + /// All values. + const ValueContainer& Values()const + { + return values; + } + + /// Get the number of keys. + /// The number of keys. + vint Count()const + { + return keys.Count(); + } + + /// Get the reference to the value associated with a key. + /// The reference to the value. + /// The key to find. + const VT& Get(const KK& key)const + { + return values.Get(keys.IndexOf(key)); + } + + /// Get the reference to the value associated with a key. + /// The reference to the value. + /// The key to find. + const VT& operator[](const KK& key)const + { + return values.Get(keys.IndexOf(key)); + } + + /// Replace the value associated with a key. + /// Returns true if the value is replaced. + /// The key to find. + /// The key to replace. + bool Set(const KT& key, const VT& value) + { + vint index=keys.IndexOf(KeyType::GetKeyValue(key)); + if(index==-1) + { + index=keys.Add(key); + values.Insert(index, value); + } + else + { + values[index]=value; + } + return true; + } + + /// Add a key with an associated value. Exception will raise if the key already exists. + /// Returns true if the pair is added. + /// The pair of key and value. + bool Add(const Pair& value) + { + return Add(value.key, value.value); + } + + /// Add a key with an associated value. Exception will raise if the key already exists. + /// Returns true if the pair is added. + /// The key. + /// The value. + bool Add(const KT& key, const VT& value) + { + CHECK_ERROR(!keys.Contains(KeyType::GetKeyValue(key)), L"Dictionary::Add(const KT&, const VT&)#Key already exists."); + vint index=keys.Add(key); + values.Insert(index, value); + return true; + } + + /// Remove a key with the associated value. + /// Returns true if the key and the value is removed. + /// The key. + bool Remove(const KK& key) + { + vint index=keys.IndexOf(key); + if(index!=-1) + { + keys.RemoveAt(index); + values.RemoveAt(index); + return true; + } + else + { + return false; + } + } + + /// Remove everything. + /// Returns true if all keys and values are removed. + bool Clear() + { + keys.Clear(); + values.Clear(); + return true; + } + }; + + /// Group, which is similar to an dictionary, but a group can associate multiple values with a key. + /// Type of keys. + /// Type of values. + /// Type of the key type of keys. + /// Type of the key type of values. + template< + typename KT, + typename VT, + typename KK=typename KeyType::Type, + typename VK=typename KeyType::Type + > + class Group : public Object, public virtual IEnumerable> + { + typedef SortedList KeyContainer; + typedef List ValueContainer; + protected: + class Enumerator : public Object, public virtual IEnumerator> + { + private: + const Group* container; + vint keyIndex; + vint valueIndex; + Pair current; + + void UpdateCurrent() + { + if(keyIndexCount()) + { + const ValueContainer& values=container->GetByIndex(keyIndex); + if(valueIndexKeys().Get(keyIndex); + current.value=values.Get(valueIndex); + } + } + } + public: + Enumerator(const Group* _container, vint _keyIndex=-1, vint _valueIndex=-1) + { + container=_container; + keyIndex=_keyIndex; + valueIndex=_valueIndex; + } + + IEnumerator>* Clone()const + { + return new Enumerator(container, keyIndex, valueIndex); + } + + const Pair& Current()const + { + return current; + } + + vint Index()const + { + if(0<=keyIndex && keyIndexCount()) + { + vint index=0; + for(vint i=0;iGetByIndex(i).Count(); + } + return index+valueIndex; + } + else + { + return -1; + } + } + + bool Next() + { + if(keyIndex==-1) + { + keyIndex=0; + } + while(keyIndexCount()) + { + valueIndex++; + const ValueContainer& values=container->GetByIndex(keyIndex); + if(valueIndex values; + public: + Group() + { + } + + ~Group() + { + Clear(); + } + + IEnumerator>* CreateEnumerator()const + { + return new Enumerator(this); + } + + /// Get all keys. + /// All keys. + const KeyContainer& Keys()const + { + return keys; + } + + /// Get the number of keys. + /// The number of keys. + vint Count()const + { + return keys.Count(); + } + + /// Get all values associated with a key. + /// All values. + /// The key to find. + const ValueContainer& Get(const KK& key)const + { + return *values.Get(keys.IndexOf(key)); + } + + /// Get all values associated with a key. + /// All values. + /// The position of a the key. + const ValueContainer& GetByIndex(vint index)const + { + return *values.Get(index); + } + + /// Get all values associated with a key. + /// All values. + /// The key to find. + const ValueContainer& operator[](const KK& key)const + { + return *values.Get(keys.IndexOf(key)); + } + + /// Test if a key exists in the group or not. + /// Returns true if the key exists. + /// The key to find. + bool Contains(const KK& key)const + { + return keys.Contains(key); + } + + /// Test if a key exists with an associated value in the group or not. + /// Returns true if the key exists with an associated value. + /// The key to find. + /// The value to find. + bool Contains(const KK& key, const VK& value)const + { + vint index=keys.IndexOf(key); + if(index!=-1) + { + return values.Get(index)->Contains(value); + } + else + { + return false; + } + } + + /// Add a key with an associated value. If the key already exists, the value will be associated with the key with other values. + /// Returns true if the pair is added. + /// The pair of key and value. + bool Add(const Pair& value) + { + return Add(value.key, value.value); + } + + /// Add a key with an associated value. If the key already exists, the value will be associated with the key with other values. + /// Returns true if the pair is added. + /// The key. + /// The value. + bool Add(const KT& key, const VT& value) + { + ValueContainer* target=0; + vint index=keys.IndexOf(KeyType::GetKeyValue(key)); + if(index==-1) + { + target=new ValueContainer; + values.Insert(keys.Add(key), target); + } + else + { + target=values[index]; + } + target->Add(value); + return true; + } + + /// Remove a key with all associated values. + /// Returns true if the key and all associated values are removed. + /// The key. + bool Remove(const KK& key) + { + vint index=keys.IndexOf(key); + if(index!=-1) + { + keys.RemoveAt(index); + List* target=values[index]; + values.RemoveAt(index); + delete target; + return true; + } + else + { + return false; + } + } + + /// Remove a key with the associated values. + /// Returns true if the key and the associated values are removed. If there are multiple values associated with the key, only the value will be removed. + /// The key. + /// The value. + bool Remove(const KK& key, const VK& value) + { + vint index=keys.IndexOf(key); + if(index!=-1) + { + List* target=values[index]; + target->Remove(value); + if(target->Count()==0) + { + keys.RemoveAt(index); + values.RemoveAt(index); + delete target; + } + return true; + } + else + { + return false; + } + } + + /// Remove everything. + /// Returns true if all keys and values are removed. + bool Clear() + { + for(vint i=0;i void + typename TDiscardSecond, // TKey * [TValueSecond] -> void + typename TAccept // TKey * [TValueFirst] * [TValueSecond] -> void + > + void GroupInnerJoin( + const Group& first, + const Group& second, + const TDiscardFirst& discardFirst, + const TDiscardSecond& discardSecond, + const TAccept& accept + ) + { + vint firstIndex = 0; + vint secondIndex = 0; + vint firstCount = first.Keys().Count(); + vint secondCount = second.Keys().Count(); + while (true) + { + if (firstIndex < firstCount) + { + auto firstKey = first.Keys()[firstIndex]; + const List& firstValues = first.GetByIndex(firstIndex); + + if (secondIndex < secondCount) + { + auto secondKey = second.Keys()[secondIndex]; + const List& secondValues = second.GetByIndex(secondIndex); + + if (firstKey < secondKey) + { + discardFirst(firstKey, firstValues); + firstIndex++; + } + else if (firstKey > secondKey) + { + discardSecond(secondKey, secondValues); + secondIndex++; + } + else + { + accept(firstKey, firstValues, secondValues); + firstIndex++; + secondIndex++; + } + } + else + { + discardFirst(firstKey, firstValues); + firstIndex++; + } + } + else + { + if (secondIndex < secondCount) + { + auto secondKey = second.Keys()[secondIndex]; + const List& secondValues = second.GetByIndex(secondIndex); + + discardSecond(secondKey, secondValues); + secondIndex++; + } + else + { + break; + } + } } } - } -} - -#endif /*********************************************************************** -.\STREAM\COMPRESSIONSTREAM.H +Random Access ***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Stream::CharFormat - -Classes: -***********************************************************************/ - -#ifndef VCZH_STREAM_COMPRESSIONSTREAM -#define VCZH_STREAM_COMPRESSIONSTREAM - - -namespace vl -{ - namespace stream - { - -/*********************************************************************** -Compression -***********************************************************************/ - - namespace lzw + namespace randomaccess_internal { - static const vint BufferSize = 1024; - static const vint MaxDictionarySize = 1 << 24; - - struct Code + template + struct RandomAccessable> { - typedef collections::PushOnlyAllocator CodeAllocator; - typedef collections::ByteObjectMap::Allocator MapAllocator; + static const bool CanRead = true; + static const bool CanResize = false; + }; + + template + struct RandomAccess> + { + static vint GetCount(const Dictionary& t) + { + return t.Count(); + } - vuint8_t byte = 0; - vint code = -1; - Code* parent = 0; - vint size = 0; - collections::ByteObjectMap children; + static Pair GetValue(const Dictionary& t, vint index) + { + return Pair(t.Keys().Get(index), t.Values().Get(index)); + } + + static void AppendValue(Dictionary& t, const Pair& value) + { + t.Set(value.key, value.value); + } }; } - - class LzwBase : public Object - { - protected: - lzw::Code::CodeAllocator codeAllocator; - lzw::Code::MapAllocator mapAllocator; - lzw::Code* root; - vint eofIndex = -1; - vint nextIndex = 0; - vint indexBits = 1; - - void UpdateIndexBits(); - lzw::Code* CreateCode(lzw::Code* parent, vuint8_t byte); - - LzwBase(); - LzwBase(bool (&existingBytes)[256]); - ~LzwBase(); - }; - - /// An encoder to compress using Lzw algorithm. - class LzwEncoder : public LzwBase, public IEncoder - { - protected: - IStream* stream = 0; - - vuint8_t buffer[lzw::BufferSize]; - vint bufferUsedBits = 0; - lzw::Code* prefix; - - void Flush(); - void WriteNumber(vint number, vint bitSize); - public: - /// Create an encoder. - LzwEncoder(); - /// Create an encoder and tell it which byte will never appear in the data before compression. - /// An array to tell the encoder which byte will never appear in the data before compression. - LzwEncoder(bool (&existingBytes)[256]); - ~LzwEncoder(); - - void Setup(IStream* _stream)override; - void Close()override; - vint Write(void* _buffer, vint _size)override; - }; - - /// An decoder to decompress using Lzw algorithm. - class LzwDecoder :public LzwBase, public IDecoder - { - protected: - IStream* stream = 0; - collections::List dictionary; - lzw::Code* lastCode = 0; - - vuint8_t inputBuffer[lzw::BufferSize]; - vint inputBufferSize = 0; - vint inputBufferUsedBits = 0; - - collections::Array outputBuffer; - vint outputBufferSize = 0; - vint outputBufferUsedBytes = 0; - - bool ReadNumber(vint& number, vint bitSize); - void PrepareOutputBuffer(vint size); - void ExpandCodeToOutputBuffer(lzw::Code* code); - public: - /// Create an decoder. - LzwDecoder(); - /// Create an decoder and tell it which byte will never appear in the data before compression. - /// An array to tell the encoder which byte will never appear in the data before compression. - LzwDecoder(bool (&existingBytes)[256]); - ~LzwDecoder(); - - void Setup(IStream* _stream)override; - void Close()override; - vint Read(void* _buffer, vint _size)override; - }; - -/*********************************************************************** -Helper Functions -***********************************************************************/ - - extern vint CopyStream(stream::IStream& inputStream, stream::IStream& outputStream); - extern void CompressStream(stream::IStream& inputStream, stream::IStream& outputStream); - extern void DecompressStream(stream::IStream& inputStream, stream::IStream& outputStream); } } #endif /*********************************************************************** -.\LOCALE.H +.\CONSOLE.H ***********************************************************************/ /*********************************************************************** Vczh Library++ 3.0 Developer: Zihan Chen(vczh) -Framework::Locale +UI::Console -Interfaces: ***********************************************************************/ -#ifndef VCZH_LOCALE -#define VCZH_LOCALE +#ifndef VCZH_CONSOLE +#define VCZH_CONSOLE namespace vl { - /// Locale awared operations. Macro "INVLOC" is a shortcut to get a invariant locale. - class Locale : public Object + namespace console { - protected: - WString localeName; - - public: - Locale(const WString& _localeName=WString::Empty); - ~Locale(); - - bool operator==(const Locale& value)const { return localeName==value.localeName; } - bool operator!=(const Locale& value)const { return localeName!=value.localeName; } - bool operator<(const Locale& value)const { return localeName(const Locale& value)const { return localeName>value.localeName; } - bool operator>=(const Locale& value)const { return localeName>=value.localeName; } - - /// Get the invariant locale. - /// The invariant locale. - static Locale Invariant(); - /// Get the system default locale. This locale controls the code page that used by the the system to interpret ANSI string buffers. - /// The system default locale. - static Locale SystemDefault(); - /// Get the user default locale. This locale reflect the user's setting. - /// The user default locale. - static Locale UserDefault(); - /// Get all supported locales. - /// All supported locales. - static void Enumerate(collections::List& locales); - - /// Get the name of the locale. - /// The name of the locale. - const WString& GetName()const; - - /// Get all short date formats for the locale. - /// The formats. - void GetShortDateFormats(collections::List& formats)const; - /// Get all long date formats for the locale. - /// The formats. - void GetLongDateFormats(collections::List& formats)const; - /// Get all Year-Month date formats for the locale. - /// The formats. - void GetYearMonthDateFormats(collections::List& formats)const; - /// Get all long time formats for the locale. - /// The formats. - void GetLongTimeFormats(collections::List& formats)const; - /// Get all short time formats for the locale. - /// The formats. - void GetShortTimeFormats(collections::List& formats)const; - - /// Convert a date to a formatted string. - /// The formatted string. - /// The format to use. - /// The date to convert. - WString FormatDate(const WString& format, DateTime date)const; - /// Convert a time to a formatted string. - /// The formatted string. - /// The format to use. - /// The time to convert. - WString FormatTime(const WString& format, DateTime time)const; - - /// Convert a number to a formatted string. - /// The formatted string. - /// The number to convert. - WString FormatNumber(const WString& number)const; - /// Convert a currency (money) to a formatted string. - /// The formatted string. - /// The currency to convert. - WString FormatCurrency(const WString& currency)const; - - /// Get the short display string of a day of week. - /// The display string. - /// Day of week, begins from 0 as Sunday. - WString GetShortDayOfWeekName(vint dayOfWeek)const; - /// Get the long display string of a day of week. - /// The display string. - /// Day of week, begins from 0 as Sunday. - WString GetLongDayOfWeekName(vint dayOfWeek)const; - /// Get the short display string of a month. - /// The display string. - /// Month, begins from 1 as January. - WString GetShortMonthName(vint month)const; - /// Get the long display string of a month. - /// The display string. - /// Month, begins from 1 as January. - WString GetLongMonthName(vint month)const; - -#ifdef VCZH_MSVC - /// Convert characters to the full width. - /// The converted string. - /// The string to convert. - WString ToFullWidth(const WString& str)const; - /// Convert characters to the half width. - /// The converted string. - /// The string to convert. - WString ToHalfWidth(const WString& str)const; - /// Convert characters to the Hiragana. - /// The converted string. - /// The string to convert. - WString ToHiragana(const WString& str)const; - /// Convert characters to the Katagana. - /// The converted string. - /// The string to convert. - WString ToKatagana(const WString& str)const; -#endif - - /// Convert characters to the lower case using the file system rule. - /// The converted string. - /// The string to convert. - WString ToLower(const WString& str)const; - /// Convert characters to the upper case using the file system rule. - /// The converted string. - /// The string to convert. - WString ToUpper(const WString& str)const; - /// Convert characters to the lower case using the linguistic rule. - /// The converted string. - /// The string to convert. - WString ToLinguisticLower(const WString& str)const; - /// Convert characters to the upper case using the linguistic rule. - /// The converted string. - /// The string to convert. - WString ToLinguisticUpper(const WString& str)const; - -#ifdef VCZH_MSVC - /// Convert characters to Simplified Chinese. - /// The converted string. - /// The string to convert. - WString ToSimplifiedChinese(const WString& str)const; - /// Convert characters to the Traditional Chinese. - /// The converted string. - /// The string to convert. - WString ToTraditionalChinese(const WString& str)const; - /// Convert characters to the tile case, in which the first letter of each major word is capitalized. - /// The converted string. - /// The string to convert. - WString ToTileCase(const WString& str)const; -#endif - - /// Mergable flags controlling how to normalize a string. - enum Normalization + /// A Static class for command line window operations. + class Console abstract { - /// Do nothing. - None=0, - /// Ignore case using the file system rule. - IgnoreCase=1, -#ifdef VCZH_MSVC - /// Ignore case using the linguistic rule. - IgnoreCaseLinguistic=2, - /// Ignore the difference between between hiragana and katakana characters. - IgnoreKanaType=4, - /// Ignore nonspacing characters. - IgnoreNonSpace=8, - /// Ignore symbols and punctuation. - IgnoreSymbol=16, - /// Ignore the difference between half-width and full-width characters. - IgnoreWidth=32, - /// Treat digits as numbers during sorting. - DigitsAsNumbers=64, - /// Treat punctuation the same as symbols. - StringSoft=128, -#endif + public: + /// Write to the command line window. + /// Content to write. + /// Size of the content in wchar_t. The zero terminator is not included. + static void Write(const wchar_t* string, vint length); + + /// Write to the command line window. + /// Content to write. + static void Write(const wchar_t* string); + + /// Write to the command line window. + /// Content to write. + static void Write(const WString& string); + + /// Write to the command line window with a CRLF. + /// Content to write. + static void WriteLine(const WString& string); + + /// Read from the command line window. + /// The whole line read from the command line window. + static WString Read(); + + static void SetColor(bool red, bool green, bool blue, bool light); + static void SetTitle(const WString& string); }; - - /// Compare two strings. - /// Returns 0 if two strings are equal. Returns a positive number if the first string is larger. Returns a negative number if the second string is larger. When sorting strings, larger strings are put after then smaller strings. - /// The first string to compare. - /// The second string to compare. - /// Flags controlling how to normalize a string. - vint Compare(const WString& s1, const WString& s2, Normalization normalization)const; - /// Compare two strings to test binary equivalence. - /// Returns 0 if two strings are equal. Returns a positive number if the first string is larger. Returns a negative number if the second string is larger. When sorting strings, larger strings are put after then smaller strings. - /// The first string to compare. - /// The second string to compare. - vint CompareOrdinal(const WString& s1, const WString& s2)const; - /// Compare two strings to test binary equivalence, ignoring case. - /// Returns 0 if two strings are equal. Returns a positive number if the first string is larger. Returns a negative number if the second string is larger. When sorting strings, larger strings are put after then smaller strings. - /// The first string to compare. - /// The second string to compare. - vint CompareOrdinalIgnoreCase(const WString& s1, const WString& s2)const; - /// Find the first position that the sub string appears in a text. - /// Returns a pair of numbers, the first number indicating the position in the text, the second number indicating the size of the equivalence sub string in the text. For some normalization, the found sub string may be binary different to the string you want to find. - /// The text to find the sub string. - /// The sub string to match. - /// Flags controlling how to normalize a string. - collections::Pair FindFirst(const WString& text, const WString& find, Normalization normalization)const; - /// Find the last position that the sub string appears in a text. - /// Returns a pair of numbers, the first number indicating the position in the text, the second number indicating the size of the equivalence sub string in the text. For some normalization, the found sub string may be binary different to the string you want to find. - /// The text to find the sub string. - /// The sub string to match. - /// Flags controlling how to normalize a string. - collections::Pair FindLast(const WString& text, const WString& find, Normalization normalization)const; - /// Test is the prefix of the text equivalence to the provided sub string. - /// Returns true if the prefix of the text equivalence to the provided sub string. - /// The text to test the prefix. - /// The sub string to match. - /// Flags controlling how to normalize a string. - bool StartsWith(const WString& text, const WString& find, Normalization normalization)const; - /// Test is the postfix of the text equivalence to the provided sub string. - /// Returns true if the postfix of the text equivalence to the provided sub string. - /// The text to test the postfix. - /// The sub string to match. - /// Flags controlling how to normalize a string. - bool EndsWith(const WString& text, const WString& find, Normalization normalization)const; - }; - -#define INVLOC vl::Locale::Invariant() + } } #endif @@ -7703,6 +5781,420 @@ namespace vl #endif +/*********************************************************************** +.\GLOBALSTORAGE.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Global Storage + +Classes: + GlobalStorage : Global storage accessable by name, each storage will be initialized on the first access, and all storages will be released by FinalizeGlobalStorage + +***********************************************************************/ + +#ifndef VCZH_GLOBALSTORAGE +#define VCZH_GLOBALSTORAGE + + +namespace vl +{ + /// ) + /// + /// INITIALIZE_GLOBAL_STORAGE_CLASS + /// + /// FINALIZE_GLOBAL_STORAGE_CLASS + /// + /// END_GLOBAL_STORAGE_CLASS + /// Then you have a global storage. You can only use this global storage in the current cpp file. [M:vl.InitializeGlobalStorage] should be called before using any global storage. [M:vl.FinalizeGlobalStorage] is encouraged to call if you think you will not use any global storages anymore. It will reduce noices when you want to detect memory leaks. + /// If the key of the global variable is called Key, and the variable you want to access is called Variable, then you can use GetKey()->Variable to access that variable. The GetKey function is created in the macro calls before. + /// ]]> + class GlobalStorage : public Object, private NotCopyable + { + private: + bool cleared; + public: + GlobalStorage(const wchar_t* key); + ~GlobalStorage(); + + bool Cleared(); + virtual void ClearResource()=0; + }; + + extern GlobalStorage* GetGlobalStorage(const wchar_t* key); + extern GlobalStorage* GetGlobalStorage(const WString& key); + + /// Initialize the global storage. + extern void InitializeGlobalStorage(); + /// Finalize the global storage. + extern void FinalizeGlobalStorage(); +} + +#define BEGIN_GLOBAL_STORAGE_CLASS(NAME)\ + class NAME : public vl::GlobalStorage\ + {\ + public:\ + NAME()\ + :vl::GlobalStorage(L ## #NAME)\ + {\ + InitializeClearResource();\ + }\ + ~NAME()\ + {\ + if(!Cleared())ClearResource();\ + }\ + +#define INITIALIZE_GLOBAL_STORAGE_CLASS\ + void InitializeClearResource()\ + {\ + +#define FINALIZE_GLOBAL_STORAGE_CLASS\ + }\ + void ClearResource()\ + {\ + +#define END_GLOBAL_STORAGE_CLASS(NAME)\ + }\ + };\ + NAME& Get##NAME()\ + {\ + static NAME __global_storage_##NAME;\ + return __global_storage_##NAME;\ + }\ + +#define EXTERN_GLOBAL_STORAGE_CLASS(NAME)\ + class NAME;\ + extern NAME& Get##NAME();\ + +#endif + + +/*********************************************************************** +.\COLLECTIONS\PARTIALORDERING.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Data Structure::Partial Ordering + +***********************************************************************/ + +#ifndef VCZH_COLLECTIONS_PARTIALORDERING +#define VCZH_COLLECTIONS_PARTIALORDERING + + +namespace vl +{ + namespace collections + { +/*********************************************************************** +Partial Ordering +***********************************************************************/ + + namespace po + { + struct Node + { + bool visited = false; + vint component = -1; + const List* ins = nullptr; // all nodes that this node depends on + const List* outs = nullptr; // all nodes that depend on this node + const vint* firstSubClassItem = nullptr; // index of the first item in this sub class node + vint subClassItemCount = 0; // the number of items in this sub class node + }; + + struct Component + { + const vint* firstNode = nullptr; + vint nodeCount = 0; + }; + } + } + + namespace collections + { + /// + /// Partial ordering item sorter. + /// This class sorts items in a partial order using the given dependency information. + /// Node stored in this class using the index of items. + /// If a depends on b, then a.ins->Contains(b) && b.outs->Contains(a). + /// The sorting result is a list of strong connected components in order. + /// If a depends on b, then the component containing a appears after the component containing b. + /// Node could represent a sub class if InitWithSubClass is called. + /// + class PartialOrderingProcessor : public Object + { + template + using GroupOf = Group; + protected: + List emptyList; + Group ins; + Group outs; + Array firstNodesBuffer; + Array subClassItemsBuffer; + + void InitNodes(vint itemCount); + void VisitUnvisitedNode(po::Node& node, Array& reversedOrder, vint& used); + void AssignUnassignedNode(po::Node& node, vint componentIndex, vint& used); + public: + /// Nodes. + Array nodes; + + /// Strong connected components in order. + List components; + + /// Sort. This method can only be called once. + void Sort(); + + /// Initialize the processor, specifying dependency relationships as a group. + /// Type of the first parameter. + /// Items. + /// Dependences. If a depends on b, then depGroups[a].Contains(b) == true. + template + void InitWithGroup(const TList& items, const GroupOf& depGroup) + { + CHECK_ERROR(nodes.Count() == 0, L"PartialOrdering::InitWithGroup(items, depGroup)#Initializing twice is not allowed."); + + for (vint i = 0; i < depGroup.Count(); i++) + { + vint fromNode = items.IndexOf(KeyType::GetKeyValue(depGroup.Keys()[i])); + CHECK_ERROR(fromNode != -1, L"PartialOrdering::InitWithGroup(items, depGroup)#The key in outsGroup does not exist in items."); + + auto& edges = depGroup.GetByIndex(i); + for (vint j = 0; j < edges.Count(); j++) + { + vint toNode = items.IndexOf(KeyType::GetKeyValue(edges[j])); + CHECK_ERROR(toNode != -1, L"PartialOrdering::InitWithGroup(items, depGroup)#The value in outsGroup does not exist in items."); + + ins.Add(fromNode, toNode); + outs.Add(toNode, fromNode); + } + } + + InitNodes(items.Count()); + } + + /// Initialize the processor, specifying dependency relationships as a callback function. + /// Type of the first parameter. + /// Type of the second parameter. + /// Items. + /// Dependences. If a depends on b, then depFunc(a, b) == true. + template + void InitWithFunc(const TList& items, TFunc&& depFunc) + { + GroupOf depGroup; + for (vint i = 0; i < items.Count(); i++) + { + for (vint j = 0; j < items.Count(); j++) + { + if (depFunc(items[i], items[j])) + { + depGroup.Add(items[i], items[j]); + } + } + } + InitWithGroup(items, depGroup); + } + + /// Initialize the processor, specifying dependency relationships and sub class classification as two groups. + /// Type of the first parameter. + /// Type of the sub class. + /// Items. + /// Dependences. If a depends on b, then depGroups[a].Contains(b) == true. + /// To put multiple items in a node to represent a sub class, use these items as keys, use a unique value as a value, and put them in subClasses. + template + void InitWithSubClass(const TList& items, const GroupOf& depGroup, const Dictionary& subClasses) + { + CHECK_ERROR(nodes.Count() == 0, L"PartialOrdering::InitWithSubClass(items, degGroup, subClasses)#Initializing twice is not allowed."); + using ElementType = typename TList::ElementType; + using ElementKeyType = KeyType; + + Group scItems; + SortedList singleItems; + + for (vint i = 0; i < subClasses.Count(); i++) + { + const auto& key = subClasses.Keys()[i]; + const auto& value = subClasses.Values()[i]; + scItems.Add(value, key); + } + + for (vint i = 0; i < items.Count(); i++) + { + const auto& item = items[i]; + if (!subClasses.Keys().Contains(ElementKeyType::GetKeyValue(item))) + { + singleItems.Add(item); + } + } + + auto getSubClass = [&](const ElementType& item) + { + vint index = subClasses.Keys().IndexOf(ElementKeyType::GetKeyValue(item)); + if (index != -1) + { + index = scItems.Keys().IndexOf(KeyType::GetKeyValue(subClasses.Values()[index])); + CHECK_ERROR(index != -1, L"PartialOrdering::InitWithSubClass(items, degGroup, subClasses)#Internal Error."); + return index; + } + else + { + index = singleItems.IndexOf(ElementKeyType::GetKeyValue(item)); + CHECK_ERROR(index != -1, L"PartialOrdering::InitWithSubClass(items, degGroup, subClasses)#Internal Error."); + return scItems.Count() + index; + } + }; + + for (vint i = 0; i < depGroup.Count(); i++) + { + const auto& key = depGroup.Keys()[i]; + vint keyIndex = getSubClass(key); + const auto& values = depGroup.GetByIndex(i); + + for (vint j = 0; j < values.Count(); j++) + { + const auto& value = values[j]; + vint valueIndex = getSubClass(value); + + if (!ins.Contains(keyIndex, valueIndex)) + { + ins.Add(keyIndex, valueIndex); + } + } + } + + for (vint i = 0; i < ins.Count(); i++) + { + vint key = ins.Keys()[i]; + const auto& values = ins.GetByIndex(i); + for (vint j = 0; j < values.Count(); j++) + { + outs.Add(values[j], key); + } + } + + InitNodes(scItems.Count() + singleItems.Count()); + subClassItemsBuffer.Resize(items.Count()); + + vint used = 0; + vint scItemCount = scItems.Keys().Count(); + for (vint i = 0; i < nodes.Count(); i++) + { + auto& node = nodes[i]; + node.firstSubClassItem = &subClassItemsBuffer[used]; + if (i < scItemCount) + { + const auto& values = scItems.GetByIndex(i); + for (vint j = 0; j < values.Count(); j++) + { + subClassItemsBuffer[used++] = items.IndexOf(ElementKeyType::GetKeyValue(values[j])); + } + node.subClassItemCount = values.Count(); + } + else + { + subClassItemsBuffer[used++] = items.IndexOf(ElementKeyType::GetKeyValue(singleItems[i - scItemCount])); + node.subClassItemCount = 1; + } + } + } + }; + } +} + +#endif + + +/*********************************************************************** +.\UNITTEST\UNITTEST.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +UI::Console + +***********************************************************************/ + +#ifndef VCZH_UNITTEST +#define VCZH_UNITTEST + + +class UnitTestError +{ +}; + +namespace vl +{ + namespace unittest + { + /// ) + /// { + /// + /// + /// + /// + /// } + /// You should call [M:vl.unittest.UnitTest.RunAndDisposeTests] in your main function to run all test cases. + /// ]]> + class UnitTest abstract + { + public: + typedef void(*TestProc)(); + + /// Print a green message. + /// The content. + static void PrintMessage(const WString& string); + + /// Print a white information. + /// The content. + static void PrintInfo(const WString& string); + + /// Print a red error. + /// The content. + static void PrintError(const WString& string); + + static void PushTest(TestProc testProc); + + /// Run all test cases. + static void RunAndDisposeTests(); + }; + +#define TEST_CHECK_ERROR(CONDITION,DESCRIPTION) do{if(!(CONDITION))throw Error(DESCRIPTION);}while(0) +#define TEST_ASSERT(CONDITION) do{TEST_CHECK_ERROR(CONDITION,L"");}while(0) +#define TEST_ERROR(CONDITION) do{try{CONDITION;throw UnitTestError();}catch(const Error&){}catch(const UnitTestError&){TEST_CHECK_ERROR(false,L"");}}while(0) +#define TEST_CASE(NAME)\ + extern void TESTCASE_##NAME(); \ + namespace vl_unittest_executors \ + { \ + class TESTCASE_RUNNER_##NAME \ + { \ + public: \ + static void RunUnitTest() \ + { \ + vl::unittest::UnitTest::PrintMessage(L_(#NAME)); \ + TESTCASE_##NAME(); \ + } \ + TESTCASE_RUNNER_##NAME() \ + { \ + vl::unittest::UnitTest::PushTest(&TESTCASE_RUNNER_##NAME::RunUnitTest); \ + } \ + } TESTCASE_RUNNER_##NAME##_INSTANCE; \ + } \ + void TESTCASE_##NAME() +#define TEST_PRINT(x) vl::unittest::UnitTest::PrintInfo(x) +#define TEST_EXCEPTION(STATEMENT,EXCEPTION,ASSERT_FUNCTION) try{STATEMENT; TEST_ASSERT(false);}catch(const EXCEPTION& e){ASSERT_FUNCTION(e);} + } +} + +#endif + + /*********************************************************************** .\EVENT.H ***********************************************************************/ @@ -7814,6 +6306,472 @@ namespace vl #endif +/*********************************************************************** +.\LAZY.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Lazy Evaluation + +Classes: + Lazy : Object with lazy evaluation + +***********************************************************************/ + +#ifndef VCZH_LAZY +#define VCZH_LAZY + + +namespace vl +{ + /// A type representing a lazy evaluation. + /// The type of the evaluation result. + template + class Lazy : public Object + { + protected: + class Internal + { + public: + Func evaluator; + T value; + bool evaluated; + }; + + Ptr internalValue; + public: + /// Create an empty evaluation. + Lazy() + { + } + + /// Create an evaluation using a function. + /// The function. + Lazy(const Func& evaluator) + { + internalValue=new Internal; + internalValue->evaluated=false; + internalValue->evaluator=evaluator; + } + + /// Create an evaluation using the result directly. + /// The result that you have already known.0 + Lazy(const T& value) + { + internalValue=new Internal; + internalValue->evaluated=true; + internalValue->value=value; + } + + /// Copy an evaluation. + /// The evaluation to copy. + Lazy(const Lazy& lazy) + :internalValue(lazy.internalValue) + { + } + + Lazy& operator=(const Func& evaluator) + { + internalValue=new Internal; + internalValue->evaluated=false; + internalValue->evaluator=evaluator; + return *this; + } + + Lazy& operator=(const T& value) + { + internalValue=new Internal; + internalValue->evaluated=true; + internalValue->value=value; + return *this; + } + + Lazy& operator=(const Lazy& lazy) + { + internalValue=lazy.internalValue; + return *this; + } + + /// Get the evaluation result. If it has not been calculated yet, it will run the evaluation and cache the result. You will not need to calculate for the second time. + /// The evaluation result. + const T& Value()const + { + if(!internalValue->evaluated) + { + internalValue->evaluated=true; + internalValue->value=internalValue->evaluator(); + internalValue->evaluator=Func(); + } + return internalValue->value; + } + + /// Test if it has already been evaluated or not. + /// Returns true if it has already been evaluated. + const bool IsEvaluated()const + { + return internalValue->evaluated; + } + + /// Test if it is an empty evaluation or not. + /// Returns true if it is not empty. + const bool IsAvailable()const + { + return internalValue; + } + }; +} + +#endif + + +/*********************************************************************** +.\TUPLE.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Tuple + +This file is generated by: Vczh Functional Macro +***********************************************************************/ +#ifndef VCZH_TUPLE +#define VCZH_TUPLE + + +namespace vl +{ + class TupleNullItem + { + }; + template + class Tuple + { + }; + +/*********************************************************************** +vl::Tuple +***********************************************************************/ + template + class Tuple : public Object + { + public: + T0 f0; + + Tuple() + { + } + + Tuple(T0 p0) + :f0(p0) + { + } + + static int Compare(const Tuple& a, const Tuple& b) + { + if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1; + return 0; + } + + bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } + bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } + bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } + bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } + bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } + bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } + }; + +/*********************************************************************** +vl::Tuple +***********************************************************************/ + template + class Tuple : public Object + { + public: + T0 f0;T1 f1; + + Tuple() + { + } + + Tuple(T0 p0,T1 p1) + :f0(p0),f1(p1) + { + } + + static int Compare(const Tuple& a, const Tuple& b) + { + if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1; + return 0; + } + + bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } + bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } + bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } + bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } + bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } + bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } + }; + +/*********************************************************************** +vl::Tuple +***********************************************************************/ + template + class Tuple : public Object + { + public: + T0 f0;T1 f1;T2 f2; + + Tuple() + { + } + + Tuple(T0 p0,T1 p1,T2 p2) + :f0(p0),f1(p1),f2(p2) + { + } + + static int Compare(const Tuple& a, const Tuple& b) + { + if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1; + return 0; + } + + bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } + bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } + bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } + bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } + bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } + bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } + }; + +/*********************************************************************** +vl::Tuple +***********************************************************************/ + template + class Tuple : public Object + { + public: + T0 f0;T1 f1;T2 f2;T3 f3; + + Tuple() + { + } + + Tuple(T0 p0,T1 p1,T2 p2,T3 p3) + :f0(p0),f1(p1),f2(p2),f3(p3) + { + } + + static int Compare(const Tuple& a, const Tuple& b) + { + if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1; + return 0; + } + + bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } + bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } + bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } + bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } + bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } + bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } + }; + +/*********************************************************************** +vl::Tuple +***********************************************************************/ + template + class Tuple : public Object + { + public: + T0 f0;T1 f1;T2 f2;T3 f3;T4 f4; + + Tuple() + { + } + + Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4) + :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4) + { + } + + static int Compare(const Tuple& a, const Tuple& b) + { + if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1; + return 0; + } + + bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } + bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } + bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } + bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } + bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } + bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } + }; + +/*********************************************************************** +vl::Tuple +***********************************************************************/ + template + class Tuple : public Object + { + public: + T0 f0;T1 f1;T2 f2;T3 f3;T4 f4;T5 f5; + + Tuple() + { + } + + Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4,T5 p5) + :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4),f5(p5) + { + } + + static int Compare(const Tuple& a, const Tuple& b) + { + if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1;if (a.f5 < b.f5) return -1; else if (a.f5 > b.f5) return 1; + return 0; + } + + bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } + bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } + bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } + bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } + bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } + bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } + }; + +/*********************************************************************** +vl::Tuple +***********************************************************************/ + template + class Tuple : public Object + { + public: + T0 f0;T1 f1;T2 f2;T3 f3;T4 f4;T5 f5;T6 f6; + + Tuple() + { + } + + Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4,T5 p5,T6 p6) + :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4),f5(p5),f6(p6) + { + } + + static int Compare(const Tuple& a, const Tuple& b) + { + if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1;if (a.f5 < b.f5) return -1; else if (a.f5 > b.f5) return 1;if (a.f6 < b.f6) return -1; else if (a.f6 > b.f6) return 1; + return 0; + } + + bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } + bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } + bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } + bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } + bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } + bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } + }; + +/*********************************************************************** +vl::Tuple +***********************************************************************/ + template + class Tuple : public Object + { + public: + T0 f0;T1 f1;T2 f2;T3 f3;T4 f4;T5 f5;T6 f6;T7 f7; + + Tuple() + { + } + + Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4,T5 p5,T6 p6,T7 p7) + :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4),f5(p5),f6(p6),f7(p7) + { + } + + static int Compare(const Tuple& a, const Tuple& b) + { + if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1;if (a.f5 < b.f5) return -1; else if (a.f5 > b.f5) return 1;if (a.f6 < b.f6) return -1; else if (a.f6 > b.f6) return 1;if (a.f7 < b.f7) return -1; else if (a.f7 > b.f7) return 1; + return 0; + } + + bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } + bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } + bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } + bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } + bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } + bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } + }; + +/*********************************************************************** +vl::Tuple +***********************************************************************/ + template + class Tuple : public Object + { + public: + T0 f0;T1 f1;T2 f2;T3 f3;T4 f4;T5 f5;T6 f6;T7 f7;T8 f8; + + Tuple() + { + } + + Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4,T5 p5,T6 p6,T7 p7,T8 p8) + :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4),f5(p5),f6(p6),f7(p7),f8(p8) + { + } + + static int Compare(const Tuple& a, const Tuple& b) + { + if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1;if (a.f5 < b.f5) return -1; else if (a.f5 > b.f5) return 1;if (a.f6 < b.f6) return -1; else if (a.f6 > b.f6) return 1;if (a.f7 < b.f7) return -1; else if (a.f7 > b.f7) return 1;if (a.f8 < b.f8) return -1; else if (a.f8 > b.f8) return 1; + return 0; + } + + bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } + bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } + bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } + bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } + bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } + bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } + }; + +/*********************************************************************** +vl::Tuple +***********************************************************************/ + template + class Tuple : public Object + { + public: + T0 f0;T1 f1;T2 f2;T3 f3;T4 f4;T5 f5;T6 f6;T7 f7;T8 f8;T9 f9; + + Tuple() + { + } + + Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4,T5 p5,T6 p6,T7 p7,T8 p8,T9 p9) + :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4),f5(p5),f6(p6),f7(p7),f8(p8),f9(p9) + { + } + + static int Compare(const Tuple& a, const Tuple& b) + { + if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1;if (a.f5 < b.f5) return -1; else if (a.f5 > b.f5) return 1;if (a.f6 < b.f6) return -1; else if (a.f6 > b.f6) return 1;if (a.f7 < b.f7) return -1; else if (a.f7 > b.f7) return 1;if (a.f8 < b.f8) return -1; else if (a.f8 > b.f8) return 1;if (a.f9 < b.f9) return -1; else if (a.f9 > b.f9) return 1; + return 0; + } + + bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } + bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } + bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } + bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } + bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } + bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } + }; + +} +#endif + /*********************************************************************** .\COLLECTIONS\OPERATION.H ***********************************************************************/ @@ -8375,11567 +7333,3 @@ LazyList #endif - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTOR.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Reflection - -Interfaces: -***********************************************************************/ - -#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTOR -#define VCZH_REFLECTION_GUITYPEDESCRIPTOR - - -namespace vl -{ - namespace reflection - { - -/*********************************************************************** -Attribute -***********************************************************************/ - - namespace description - { - class ITypeDescriptor; - class ITypeInfo; - class IEventHandler; - class IEventInfo; - class IPropertyInfo; - class IParameterInfo; - class IMethodInfo; - class IMethodGroupInfo; - - class IValueFunctionProxy; - class IValueInterfaceProxy; - class IValueSubscription; - - class IValueEnumerable; - class IValueEnumerator; - class IValueReadonlyList; - class IValueList; - class IValueObservableList; - class IValueReadonlyDictionary; - class IValueDictionary; - - class IValueCallStack; - class IValueException; - - template - struct TypedValueSerializerProvider - { - }; - } - - /// Base class of all reflectable object. You can use pointer or smart pointer to DescriptableObject to define variables, but if you want to create a reflectable class, you should inherit from [T:vl.reflection.Description`1]. - class DescriptableObject - { - template - friend struct vl::ReferenceCounterOperator; - template - friend class Description; - - typedef collections::Dictionary> InternalPropertyMap; - typedef bool(*DestructorProc)(DescriptableObject* obj, bool forceDisposing); - private: - volatile vint referenceCounter; - -#ifndef VCZH_DEBUG_NO_REFLECTION - size_t objectSize; - description::ITypeDescriptor** typeDescriptor; -#endif - Ptr internalProperties; - -#ifndef VCZH_DEBUG_NO_REFLECTION - bool destructing; - DescriptableObject** aggregationInfo; - vint aggregationSize; -#endif - - protected: - DestructorProc sharedPtrDestructorProc; - - protected: - -#ifndef VCZH_DEBUG_NO_REFLECTION - bool IsAggregated(); - vint GetAggregationSize(); - DescriptableObject* GetAggregationRoot(); - void SetAggregationRoot(DescriptableObject* value); - DescriptableObject* GetAggregationParent(vint index); - void SetAggregationParent(vint index, DescriptableObject* value); - void SetAggregationParent(vint index, Ptr& value); - void InitializeAggregation(vint size); -#endif - void FinalizeAggregation(); - -#ifndef VCZH_DEBUG_NO_REFLECTION - template - void SafeAggregationCast(T*& result) - { - auto expected = dynamic_cast(this); - if (expected) - { - CHECK_ERROR(result == nullptr, L"vl::reflection::DescriptableObject::SafeAggregationCast()#Found multiple ways to do aggregation cast."); - result = expected; - } - if (IsAggregated()) - { - for (vint i = 0; i < aggregationSize; i++) - { - if (auto parent = GetAggregationParent(i)) - { - parent->SafeAggregationCast(result); - } - } - } - } -#endif - public: - DescriptableObject(); - virtual ~DescriptableObject(); - -#ifndef VCZH_DEBUG_NO_REFLECTION - /// Get the type descriptor that describe the real type of this object. - /// The real type. - description::ITypeDescriptor* GetTypeDescriptor(); -#endif - - /// Get an internal property of this object. This map is totally for customization. - /// Value of the internal property of this object. - /// Name of the property. - Ptr GetInternalProperty(const WString& name); - /// Set an internal property of this object. This map is totally for customization. - /// Name of the property. - /// Value of the internal property of this object. - void SetInternalProperty(const WString& name, Ptr value); - /// Try to delete this object. - /// Returns true if this operation succeeded. Returns false if the object refuces to be dispose. - /// Set to true to force disposing this object. If the reference counter is not 0 if you force disposing it, it will raise a [T:vl.reflection.description.ValueNotDisposableException]. - bool Dispose(bool forceDisposing); - -#ifndef VCZH_DEBUG_NO_REFLECTION - /// Get the aggregation root object. - /// The aggregation root object. If this object is not aggregated, or it is the root object of others, than this function return itself. - DescriptableObject* SafeGetAggregationRoot(); - -#endif - /// Cast the object to another type, considered aggregation. - /// The object with the expected type in all aggregated objects. - /// The expected type to cast. - template - T* SafeAggregationCast() - { -#ifndef VCZH_DEBUG_NO_REFLECTION - T* result = nullptr; - SafeGetAggregationRoot()->SafeAggregationCast(result); - return result; -#else - return dynamic_cast(this); -#endif - } - }; - - /// - /// { - /// ... - /// }; - /// - /// If you want YourClass to be inheritable in scripts, instead of using Description, you should use AggregatableDescription, like this: - /// class YourClass : public AggregatableDescription - /// { - /// ~YourClass() - /// { - /// FinalizeAggregation(); - /// } - /// }; - /// - /// After you have complete your type, use the following macros and functions to register your class into the global type table. Everything should be defined in vl::reflection::description namespaces. - /// Some of the predefined type has already been registered, if your types depend on these types, you should load those types by calling some or all of them: - /// [F:vl.reflection.description.LoadPredefinedTypes] - /// [F:vl.reflection.description.LoadParsingTypes] - /// [F:vl.reflection.description.JsonLoadTypes] - /// [F:vl.reflection.description.XmlLoadTypes] - /// - /// 1) (in header files) Create a macro that contains all types that you want to register. Content in the list will become the registered type names, so it is strongly recommended to use the full name. - /// #define MY_TYPELIST(F)\ - /// F(mynamespaces::MyClass1)\ - /// F(mynamespaces::MyClass2)\ - /// - /// 2) (in header files) Connect type names and types: - /// MY_TYPELIST(DECL_TYPE_INFO) - /// - /// 3) (in cpp files) Connect type names and types: - /// MY_TYPELIST(IMPL_VL_TYPE_INFO) - /// - /// 4) (in cpp files) Register all members: - /// - /// #define _ , - /// - /// a) enum: - /// use BEGIN_ENUM_ITEM_MERGABLE instead of BEGIN_ENUM_ITEM if enum items are consider mergable using "|". - /// - /// BEGIN_ENUM_ITEM(Season) - /// ENUM_ITEM(Spring) - /// ENUM_ITEM(Summer) - /// ENUM_ITEM(Autumn) - /// ENUM_ITEM(Winter) - /// END_ENUM_ITEM(Season) - /// - /// b) enum class: - /// use BEGIN_ENUM_ITEM_MERGABLE instead of BEGIN_ENUM_ITEM if enum items are consider mergable using "|". - /// - /// BEGIN_ENUM_ITEM(Season) - /// ENUM_CLASS_ITEM(Spring) - /// ENUM_CLASS_ITEM(Summer) - /// ENUM_CLASS_ITEM(Autumn) - /// ENUM_CLASS_ITEM(Winter) - /// END_ENUM_ITEM(Season) - /// - /// c) struct (pure data structure): - /// BEGIN_STRUCT_MEMBER(Point) - /// STRUCT_MEMBER(x) - /// STRUCT_MEMBER(y) - /// END_STRUCT_MEMBER(Point) - /// - /// d) class: - /// BEGIN_CLASS_MEMBER(MyClass) - /// - /// I) declare a base class (can have multiple base classes): - /// CLASS_MEMBER_BASE(MyBaseClass) - /// - /// II) declare a field: - /// CLASS_MEMBER_FIELD(myField) - /// - /// III) Empty constructor that results in a raw pointer: - /// CLASS_MEMBER_CONSTRUCTIOR(MyClass*(), NO_PARAMETER) - /// - /// IV) Empty constructor that results in a smart pointer: - /// CLASS_MEMBER_CONSTRUCTIOR(Ptr(), NO_PARAMETER) - /// - /// V) Constructor with arguments: - /// CLASS_MEMBER_CONSTRUCTOR(Ptr(int, const WString&), {L"numberParameter" _ L"stringParameter"}) - /// - /// VI) Inject a global function as a constructor - /// CLASS_MEMBER_EXTERNALCTOR(Ptr(int, const WString&), {L"numberParameter" _ L"stringParameter"}, mynamespace::CreateMyClass) - /// CLASS_MEMBER_EXTERNALCTOR_TEMPLATE(Ptr(int, const WString&), {L"numberParameter" _ L"stringParameter"}, CreateMyClass, L"mynamespace::GetMyClass($Arguments)", L"::vl::Func<$Func>(&mynamespace::GetMyClass)") - /// CLASS_MEMBER_EXTERNALCTOR_TEMPLATE(Ptr(), NO_PARAMETER, []()->Ptr{return nullptr;}, L"*", L"*") - /// - /// VII) Add unoverloaded functions - /// CLASS_MEMBER_METHOD(MyFunction1, NO_PARAMETER) - /// CLASS_MEMBER_METHOD(MyFunction2, {L"parameter1" _ L"parameter2"}) - /// - /// VIII) Add unoverloaded function but give a different names - /// CLASS_MEMBER_METHOD_RENAME(MyNewName1, MyFunction1, NO_PARAMETER) - /// CLASS_MEMBER_METHOD_RENAME(MyNewName2, MyFunction2, {L"parameter1" _ L"parameter2"}) - /// - /// IX) Add overloaded functions - /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction3, NO_PARAMETER, int(MyClass::*)()) - /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction3, {L"parameter"}, int(MyClass::*)(int)) - /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction3, {L"parameter1" _ L"parameter2"}, int(MyClass::*)(int, const WString&)) - /// - /// IX) Add overloaded functions but give different names - /// CLASS_MEMBER_METHOD_OVERLOAD_RENAME(MyNewName3, MyFunction3, NO_PARAMETER, int(MyClass::*)()) - /// CLASS_MEMBER_METHOD_OVERLOAD_RENAME(MyNewName4, MyFunction3, {L"parameter"}, int(MyClass::*)(int)) - /// CLASS_MEMBER_METHOD_OVERLOAD_RENAME(MyNewName4, MyFunction3, {L"parameter1" _ L"parameter2"}, int(MyClass::*)(int, const WString&)) - /// - /// X) Inject global functions as methods: - /// CLASS_MEMBER_EXTERNALMETHOD(MyNewName5, {L"parameter"}, int(MyClass::*)(int), mynamespace::AGlobalFunction) - /// CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(MyNewName5, {L"parameter1" _ L"parameter2"}, int(MyClass::*)(int, const WString&), [](MyClass* a, int b, const WString& c){return 0;}, L"*", L"*") - /// - /// XI) Add unoverloaded static functions - /// CLASS_MEMBER_STATIC_METHOD(MyFunction4, NO_PARAMETER) - /// CLASS_MEMBER_STATIC_METHOD(MyFunction5, {L"parameter1" _ L"parameter2"}) - /// - /// XII) Add overloaded static functions - /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction6, NO_PARAMETER, int(*)()) - /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction6, {L"parameter"}, int(*)(int)) - /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction6, {L"parameter1" _ L"parameter2"}, int(*)(int, const WString&)) - /// - /// XIII) Inject global functions as static methods: - /// CLASS_MEMBER_STATIC_EXTERNALMETHOD(MyNewName6, {L"parameter"}, int(*)(int), mynamespace::AGlobalFunction2) - /// CLASS_MEMBER_STATIC_EXTERNALMETHOD_INVOKETEMPLATE(MyNewName6, {L"parameter1" _ L"parameter2"}, int(*)(int, const WString&), [](int b, const WString& c){return 0;}, L"*") - /// - /// XIV) Add a getter function as a property - /// CLASS_MEMBER_PROPERTY_READONLY_FAST(X) - /// which is short for - /// CLASS_MEMBER_METHOD(GetX, NO_PARAMETER) - /// CLASS_MEMBER_PROPERTY_READONLY(X, GetX) - /// - /// XV) Add a pair of getter and setter functions as a property - /// CLASS_MEMBER_PROPERTY_FAST(X) - /// which is short for - /// CLASS_MEMBER_METHOD(GetX, NO_PARAMETER) - /// CLASS_MEMBER_METHOD(SetX, {L"value"}) - /// CLASS_MEMBER_PROPERTY(X, GetX, SetX) - /// - /// XVI) Add a getter function as a property with a property changed event - /// CLASS_MEMBER_EVENT(XChanged) - /// CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(X) - /// which is short for - /// CLASS_MEMBER_EVENT(XChanged) - /// CLASS_MEMBER_METHOD(GetX, NO_PARAMETER) - /// CLASS_MEMBER_PROPERTY_EVENT_READONLY(X, GetX, XChanged) - /// - /// XVII) Add a pair of getter and setter functions as a property with a property changed event - /// CLASS_MEMBER_EVENT(XChanged) - /// CLASS_MEMBER_PROPERTY_EVENT_FAST(X) - /// which is short for - /// CLASS_MEMBER_EVENT(XChanged) - /// CLASS_MEMBER_METHOD(GetX, NO_PARAMETER) - /// CLASS_MEMBER_METHOD(SetX, {L"value"}) - /// CLASS_MEMBER_PROPERTY_EVENT(X, GetX, SetX, XChanged) - /// - /// END_CLASS_MEMBER(MyClass) - /// - /// If the code compiles, the class should look like this: - /// class MyClass : public Description - /// { - /// public: - /// MyClass(); - /// MyClass(int numberParameter, const WString& stringParameter); - /// - /// int MyFunction1(); - /// int MyFunction2(int parameter1, const WString& parameter2); - /// int MyFunction3(); - /// int MyFunction3(int parameter); - /// int MyFunction3(int parameter1, const WString& parameter2); - /// - /// static int MyFunction4(); - /// static int MyFunction5(int parameter1, const WString& parameter2); - /// static int MyFunction6(); - /// static int MyFunction6(int parameter); - /// static int MyFunction6(int parameter1, const WString& parameter2); - /// - /// Event XChanged; - /// int GetX(); - /// void SetX(int value); - /// }; - /// - /// Ptr CreateMyClass(int numberParameter, const WString7 stringParameter); - /// int GlobalFunction(MyClass* self, int parameter); - /// - /// e) interface: - /// An interface is defined by - /// I) Directly or indirectly inherits [T:vl.reflection.IDescriptable] - /// II) The only registered constructor (if exists) should use Ptr<[T:vl.reflection.description.IValueInterfaceProxy]> as a parameter - /// - /// Suppose you have an interface like this: - /// class IMyInterface : public virtual IDescriptable, public Description - /// { - /// public: - /// int GetX(); - /// void SetX(int value); - /// }; - /// - /// If you want this interface implementable by Workflow script, you should first add a proxy like this: - /// #pragma warning(push) - /// #pragma warning(disable:4250) - /// BEGIN_INTERFACE_PROXY_NOPARENT_RAWPTR(IMyInterface) - /// or BEGIN_INTERFACE_PROXY_RAWPTR(IMyInterface, baseInterfaces...) - /// or BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IMyInterface) - /// or BEGIN_INTERFACE_PROXY_SHAREDPTR(IMyInterface, baseInterfaces...) - /// int GetX()override - /// { - /// INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetX) - /// } - /// - /// void SetX(int value)override - /// { - /// INVOKE_INTERFACE_PROXY(SetX, value) - /// } - /// END_INTERFACE_PROXY(IMyInterface) - /// #pragma warning(pop) - /// - /// And then use this code to register the interface: - /// BEGIN_INTERFACE_MEMBER(IMyInterface) - /// ... - /// END_INTERFACE_MEMBER(IMyInterface) - /// - /// Everything else is the same as registering classes. Use BEGIN_INTERFACE_MEMBER_NOPROXY to register an interface without a proxy, which means you cannot implement it in runtime dynamically. - /// - /// #undef _ - /// - /// 5) (in cpp files) Create a type loader: - /// class MyTypeLoader : public Object, public ITypeLoader - /// { - /// public: - /// void Load(ITypeManager* manager) - /// { - /// MY_TYPELIST(ADD_TYPE_INFO) - /// } - /// - /// void Unload(ITypeManager* manager) - /// { - /// } - /// }; - /// - /// 6) Load types when you think is a good timing using this code: - /// vl::reflection::description::GetGlobalTypeManager()->AddTypeLoader(new MyTypeLoader); - /// - /// ]]> - /// Type of your created reflection class. - template - class Description : public virtual DescriptableObject - { - protected: -#ifndef VCZH_DEBUG_NO_REFLECTION - static description::ITypeDescriptor* associatedTypeDescriptor; -#endif - public: - Description() - { -#ifndef VCZH_DEBUG_NO_REFLECTION - - if(objectSize - class AggregatableDescription : public Description - { - }; - -#ifndef VCZH_DEBUG_NO_REFLECTION - template - description::ITypeDescriptor* Description::associatedTypeDescriptor=0; -#endif - - /// Base types of all reflectable interfaces. All reflectable interface types should be virtual inherited. - class IDescriptable : public virtual Interface, public Description - { - public: - ~IDescriptable(){} - }; - -/*********************************************************************** -ReferenceCounterOperator -***********************************************************************/ - } - - template - struct ReferenceCounterOperator::YesNoType> - { - static __forceinline volatile vint* CreateCounter(T* reference) - { - reflection::DescriptableObject* obj=reference; -#ifndef VCZH_DEBUG_NO_REFLECTION - if (obj->IsAggregated()) - { - if (auto root = obj->GetAggregationRoot()) - { - return &root->referenceCounter; - } - } -#endif - return &obj->referenceCounter; - } - - static __forceinline void DeleteReference(volatile vint* counter, void* reference) - { - reflection::DescriptableObject* obj=(T*)reference; - obj->Dispose(false); - } - }; - - namespace reflection - { - - namespace description - { - -/*********************************************************************** -Value -***********************************************************************/ - - class IBoxedValue : public virtual IDescriptable, public Description - { - public: - enum CompareResult - { - Smaller, - Greater, - Equal, - NotComparable, - }; - - virtual Ptr Copy() = 0; - virtual CompareResult ComparePrimitive(Ptr boxedValue) = 0; - }; - - /// A type to store all values of reflectable types. - class Value : public Object - { - public: - /// Representing how the value is stored. - enum ValueType - { - /// The value is null. - Null, - /// The value stored using a raw pointer. - RawPtr, - /// The value stored using a smart pointer. - SharedPtr, - /// The value stored using a boxed value. - BoxedValue, - }; - protected: - ValueType valueType; - DescriptableObject* rawPtr; - Ptr sharedPtr; - Ptr boxedValue; -#ifndef VCZH_DEBUG_NO_REFLECTION - ITypeDescriptor* typeDescriptor; -#endif - - Value(DescriptableObject* value); - Value(Ptr value); - Value(Ptr value, ITypeDescriptor* associatedTypeDescriptor); - - vint Compare(const Value& a, const Value& b)const; - public: - Value(); - Value(const Value& value); - Value& operator=(const Value& value); - bool operator==(const Value& value)const { return Compare(*this, value) == 0; } - bool operator!=(const Value& value)const { return Compare(*this, value) != 0; } - bool operator<(const Value& value)const { return Compare(*this, value)<0; } - bool operator<=(const Value& value)const { return Compare(*this, value) <= 0; } - bool operator>(const Value& value)const { return Compare(*this, value)>0; } - bool operator>=(const Value& value)const { return Compare(*this, value) >= 0; } - - /// Get how the value is stored. - /// How the value is stored. - ValueType GetValueType()const; - /// Get the stored raw pointer if possible. - /// The stored raw pointer. Returns null if failed. - DescriptableObject* GetRawPtr()const; - /// Get the stored shared pointer if possible. - /// The stored shared pointer. Returns null if failed. - Ptr GetSharedPtr()const; - /// Get the stored text if possible. - /// The stored text. Returns empty if failed. - Ptr GetBoxedValue()const; - /// Get the real type of the stored object. - /// The real type. Returns null if the value is null. - - bool IsNull()const; -#ifndef VCZH_DEBUG_NO_REFLECTION - ITypeDescriptor* GetTypeDescriptor()const; - WString GetTypeFriendlyName()const; - bool CanConvertTo(ITypeDescriptor* targetType, ValueType targetValueType)const; - bool CanConvertTo(ITypeInfo* targetType)const; -#endif - - /// Store a raw pointer. - /// The boxed value. - /// The raw pointer to store. - static Value From(DescriptableObject* value); - /// Store a shared pointer. - /// The boxed value. - /// The shared pointer to store. - static Value From(Ptr value); - /// Store a text. - /// The boxed value. - /// The text to store. - /// The type that you expect to interpret the text. - static Value From(Ptr value, ITypeDescriptor* type); - -#ifndef VCZH_DEBUG_NO_REFLECTION - static IMethodInfo* SelectMethod(IMethodGroupInfo* methodGroup, collections::Array& arguments); - static Value Create(ITypeDescriptor* type); - static Value Create(ITypeDescriptor* type, collections::Array& arguments); - static Value Create(const WString& typeName); - static Value Create(const WString& typeName, collections::Array& arguments); - static Value InvokeStatic(const WString& typeName, const WString& name); - static Value InvokeStatic(const WString& typeName, const WString& name, collections::Array& arguments); - Value GetProperty(const WString& name)const; - void SetProperty(const WString& name, const Value& newValue); - Value Invoke(const WString& name)const; - Value Invoke(const WString& name, collections::Array& arguments)const; - Ptr AttachEvent(const WString& name, const Value& function)const; - bool DetachEvent(const WString& name, Ptr handler)const; -#endif - - /// Dispose the object is it is stored as a raw pointer. - /// Returns true if the object is disposed. Returns false if the object cannot be disposed. An exception will be thrown if the reference counter is not 0. - bool DeleteRawPtr(); - }; - -/*********************************************************************** -ValueType -***********************************************************************/ - - class IValueType : public virtual IDescriptable, public Description - { - public: - template - class TypedBox : public IBoxedValue - { - private: - template - static CompareResult ComparePrimitiveInternal(const U& a, const U& b, typename AcceptAlways::Compare)>::Type) - { - return TypedValueSerializerProvider::Compare(a, b); - } - - template - static CompareResult ComparePrimitiveInternal(const U& a, const U& b, double) - { -#if defined(__GNUC__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdynamic-class-memaccess" -#elif defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdynamic-class-memaccess" -#endif - auto result = memcmp(&a, &b, sizeof(U)); -#if defined(__GNUC__) -#pragma GCC diagnostic pop -#elif defined(__clang__) -#pragma clang diagnostic pop -#endif - if (result < 0) return IBoxedValue::Smaller; - if (result > 0) return IBoxedValue::Greater; - return IBoxedValue::Equal; - } - public: - T value; - - TypedBox() - :value{} - { - } - - TypedBox(const T& _value) - :value(_value) - { - } - - Ptr Copy()override - { - return new TypedBox(value); - } - - CompareResult ComparePrimitive(Ptr boxedValue)override - { - if (auto typedBox = boxedValue.Cast>()) - { - return ComparePrimitiveInternal(value, typedBox->value, (vint)0); - } - else - { - return IBoxedValue::NotComparable; - } - } - }; - - virtual Value CreateDefault() = 0; - virtual IBoxedValue::CompareResult Compare(const Value& a, const Value& b) = 0; - }; - - class IEnumType : public virtual IDescriptable, public Description - { - public: - virtual bool IsFlagEnum() = 0; - virtual vint GetItemCount() = 0; - virtual WString GetItemName(vint index) = 0; - virtual vuint64_t GetItemValue(vint index) = 0; - virtual vint IndexOfItem(WString name) = 0; - - virtual Value ToEnum(vuint64_t value) = 0; - virtual vuint64_t FromEnum(const Value& value) = 0; - }; - - class ISerializableType : public virtual IDescriptable, public Description - { - public: - virtual bool Serialize(const Value& input, WString& output) = 0; - virtual bool Deserialize(const WString& input, Value& output) = 0; - }; - -/*********************************************************************** -ITypeDescriptor (type) -***********************************************************************/ - - enum class TypeInfoHint - { - Normal, - LazyList, - Array, - List, - SortedList, - ObservableList, - Dictionary, - NativeCollectionReference, - }; - - class ITypeInfo : public virtual IDescriptable, public Description - { - public: - enum Decorator - { - RawPtr, - SharedPtr, - Nullable, - TypeDescriptor, - Generic, - }; - - virtual Decorator GetDecorator() = 0; - virtual TypeInfoHint GetHint() = 0; - virtual ITypeInfo* GetElementType() = 0; - virtual ITypeDescriptor* GetTypeDescriptor() = 0; - virtual vint GetGenericArgumentCount() = 0; - virtual ITypeInfo* GetGenericArgument(vint index) = 0; - virtual WString GetTypeFriendlyName() = 0; - }; - -/*********************************************************************** -ITypeDescriptor (basic) -***********************************************************************/ - - class IMemberInfo : public virtual IDescriptable, public Description - { - public: - virtual ITypeDescriptor* GetOwnerTypeDescriptor()=0; - virtual const WString& GetName()=0; - }; - -/*********************************************************************** -ITypeDescriptor (event) -***********************************************************************/ - - class IEventHandler : public virtual IDescriptable, public Description - { - public: - virtual bool IsAttached()=0; - }; - - class IEventInfo : public virtual IMemberInfo, public Description - { - public: - class ICpp : public virtual IDescriptable, public Description - { - public: - /* - Arguments: - $Name: Event name - $This: Expression for the "this" argument - $Handler: Event handler function / Event handler object - $Arguments: Expressions for arguments separated by ", " - Default (for Vlpp Event): - Attach: ::vl::__vwsn::EventAttach($This->$Name, $Handler) - Detach: ::vl::__vwsn::EventDetach($This->$Name, $Handler) - Invoke: ::vl::__vwsn::EventInvoke($This->$Name)($Arguments) - - GetInvokeTemplate() == L"*": - This event does not exist in C++ - */ - virtual const WString& GetAttachTemplate() = 0; - virtual const WString& GetDetachTemplate() = 0; - virtual const WString& GetInvokeTemplate() = 0; - }; - /* - Priority: - 1. Use ICpp - 2. Use Default - */ - virtual ICpp* GetCpp() = 0; - - virtual ITypeInfo* GetHandlerType()=0; - virtual vint GetObservingPropertyCount()=0; - virtual IPropertyInfo* GetObservingProperty(vint index)=0; - virtual Ptr Attach(const Value& thisObject, Ptr handler)=0; - virtual bool Detach(const Value& thisObject, Ptr handler)=0; - virtual void Invoke(const Value& thisObject, Ptr arguments)=0; - }; - -/*********************************************************************** -ITypeDescriptor (property) -***********************************************************************/ - - class IPropertyInfo : public virtual IMemberInfo, public Description - { - public: - class ICpp : public virtual IDescriptable, public Description - { - public: - /* - Arguments: - $Type: C++ full type name - $Name: Property name - $This: Expression for the "this" argument - Default: - Struct: $This.$Name - Class: $This->$Name - Example: - Token in syntax tree: $This->$Name.value - - GetReferenceTemplate() == L"*": - This property does not exist in C++ - */ - virtual const WString& GetReferenceTemplate() = 0; - }; - /* - Priority: - 1. Use ICpp - 2. Use ICpp from getter and setter - 3. Use default - */ - virtual ICpp* GetCpp() = 0; - - virtual bool IsReadable()=0; - virtual bool IsWritable()=0; - virtual ITypeInfo* GetReturn()=0; - virtual IMethodInfo* GetGetter()=0; - virtual IMethodInfo* GetSetter()=0; - virtual IEventInfo* GetValueChangedEvent()=0; - virtual Value GetValue(const Value& thisObject)=0; - virtual void SetValue(Value& thisObject, const Value& newValue)=0; - }; - -/*********************************************************************** -ITypeDescriptor (method) -***********************************************************************/ - - class IParameterInfo : public virtual IMemberInfo, public Description - { - public: - virtual ITypeInfo* GetType()=0; - virtual IMethodInfo* GetOwnerMethod()=0; - }; - - class IMethodInfo : public virtual IMemberInfo, public Description - { - public: - class ICpp : public virtual IDescriptable, public Description - { - public: - /* - Arguments: - $Type: C++ full type name - $Func: C++ function type (e.g. void(int)), object type not included for method - $Name: Method name - $This: Expression for the "this" argument; - $Arguments: Expressions for arguments separated by ", " - Default: - Constructor: new $Type($Arguments) - Static: $Type::$Name($Arguments) - Normal: $This->$Name($Arguments) - Example: - External constructor: ($Arguments) - External method: ($This, $Arguments) - Renamed method: $This->($Arguments) - - GetInvokeTemplate() == L"*": - This method does not exist in C++ - */ - virtual const WString& GetInvokeTemplate() = 0; - virtual const WString& GetClosureTemplate() = 0; - }; - /* - Priority: - 1. Use ICpp - 2. Use default - */ - virtual ICpp* GetCpp() = 0; - - virtual IMethodGroupInfo* GetOwnerMethodGroup()=0; - virtual IPropertyInfo* GetOwnerProperty()=0; - virtual vint GetParameterCount()=0; - virtual IParameterInfo* GetParameter(vint index)=0; - virtual ITypeInfo* GetReturn()=0; - virtual bool IsStatic()=0; - virtual void CheckArguments(collections::Array& arguments)=0; - virtual Value Invoke(const Value& thisObject, collections::Array& arguments)=0; - virtual Value CreateFunctionProxy(const Value& thisObject) = 0; - }; - - class IMethodGroupInfo : public virtual IMemberInfo, public Description - { - public: - virtual vint GetMethodCount()=0; - virtual IMethodInfo* GetMethod(vint index)=0; - }; - -/*********************************************************************** -ITypeDescriptor -***********************************************************************/ - - enum class TypeDescriptorFlags : vint - { - Undefined = 0, - Object = 1<<0, - IDescriptable = 1<<1, - Class = 1<<2, - Interface = 1<<3, - Primitive = 1<<4, - Struct = 1<<5, - FlagEnum = 1<<6, - NormalEnum = 1<<7, - - ClassType = Object | Class, - InterfaceType = IDescriptable | Interface, - ReferenceType = ClassType | InterfaceType, - EnumType = FlagEnum | NormalEnum, - StructType = Primitive | Struct, - }; - - inline TypeDescriptorFlags operator&(TypeDescriptorFlags a, TypeDescriptorFlags b) - { - return (TypeDescriptorFlags)((vint)a & (vint)b); - } - - inline TypeDescriptorFlags operator|(TypeDescriptorFlags a, TypeDescriptorFlags b) - { - return (TypeDescriptorFlags)((vint)a | (vint)b); - } - - class ITypeDescriptor : public virtual IDescriptable, public Description - { - public: - class ICpp : public virtual IDescriptable, public Description - { - public: - /* - Default: refer to TypeInfoContent::VlppType - - GetFullName() == L"*": - This type does not exist in C++ - */ - virtual const WString& GetFullName() = 0; - }; - /* - Priority: - 1. Use ICpp - 2. Use default - */ - virtual ICpp* GetCpp() = 0; - - virtual TypeDescriptorFlags GetTypeDescriptorFlags() = 0; - virtual bool IsAggregatable() = 0; - virtual const WString& GetTypeName() = 0; - - virtual IValueType* GetValueType() = 0; - virtual IEnumType* GetEnumType() = 0; - virtual ISerializableType* GetSerializableType() = 0; - - virtual vint GetBaseTypeDescriptorCount() = 0; - virtual ITypeDescriptor* GetBaseTypeDescriptor(vint index) = 0; - virtual bool CanConvertTo(ITypeDescriptor* targetType) = 0; - - virtual vint GetPropertyCount() = 0; - virtual IPropertyInfo* GetProperty(vint index) = 0; - virtual bool IsPropertyExists(const WString& name, bool inheritable) = 0; - virtual IPropertyInfo* GetPropertyByName(const WString& name, bool inheritable) = 0; - - virtual vint GetEventCount() = 0; - virtual IEventInfo* GetEvent(vint index) = 0; - virtual bool IsEventExists(const WString& name, bool inheritable) = 0; - virtual IEventInfo* GetEventByName(const WString& name, bool inheritable) = 0; - - virtual vint GetMethodGroupCount() = 0; - virtual IMethodGroupInfo* GetMethodGroup(vint index) = 0; - virtual bool IsMethodGroupExists(const WString& name, bool inheritable) = 0; - virtual IMethodGroupInfo* GetMethodGroupByName(const WString& name, bool inheritable) = 0; - virtual IMethodGroupInfo* GetConstructorGroup() = 0; - }; - -#ifndef VCZH_DEBUG_NO_REFLECTION - -/*********************************************************************** -ITypeManager -***********************************************************************/ - - class ITypeManager; - - class ITypeLoader : public virtual Interface - { - public: - virtual void Load(ITypeManager* manager)=0; - virtual void Unload(ITypeManager* manager)=0; - }; - - class ITypeManager : public virtual Interface - { - public: - virtual vint GetTypeDescriptorCount()=0; - virtual ITypeDescriptor* GetTypeDescriptor(vint index)=0; - virtual ITypeDescriptor* GetTypeDescriptor(const WString& name)=0; - virtual bool SetTypeDescriptor(const WString& name, Ptr typeDescriptor)=0; - - virtual bool AddTypeLoader(Ptr typeLoader)=0; - virtual bool RemoveTypeLoader(Ptr typeLoader)=0; - virtual bool Load()=0; - virtual bool Unload()=0; - virtual bool Reload()=0; - virtual bool IsLoaded()=0; - virtual ITypeDescriptor* GetRootType()=0; - }; - - extern ITypeManager* GetGlobalTypeManager(); - extern bool DestroyGlobalTypeManager(); - extern bool ResetGlobalTypeManager(); - extern ITypeDescriptor* GetTypeDescriptor(const WString& name); - extern bool IsInterfaceType(ITypeDescriptor* typeDescriptor, bool& acceptProxy); - extern void LogTypeManager(stream::TextWriter& writer); - -/*********************************************************************** -Cpp Helper Functions -***********************************************************************/ - - extern WString CppGetFullName(ITypeDescriptor* type); - extern WString CppGetReferenceTemplate(IPropertyInfo* prop); - extern WString CppGetClosureTemplate(IMethodInfo* method); - extern WString CppGetInvokeTemplate(IMethodInfo* method); - extern WString CppGetAttachTemplate(IEventInfo* ev); - extern WString CppGetDetachTemplate(IEventInfo* ev); - extern WString CppGetInvokeTemplate(IEventInfo* ev); - - extern bool CppExists(ITypeDescriptor* type); - extern bool CppExists(IPropertyInfo* prop); - extern bool CppExists(IMethodInfo* method); - extern bool CppExists(IEventInfo* ev); - -#endif - -/*********************************************************************** -Exceptions -***********************************************************************/ - - class TypeDescriptorException abstract : public Exception - { - public: - TypeDescriptorException(const WString& message) - :Exception(message) - { - } - }; - - class ValueNotDisposableException : public TypeDescriptorException - { - public: - ValueNotDisposableException() - :TypeDescriptorException(L"Cannot dispose an object whose reference counter is not 0.") - { - } - }; - -#ifndef VCZH_DEBUG_NO_REFLECTION - - class TypeNotExistsException : public TypeDescriptorException - { - public: - TypeNotExistsException(const WString& name) - :TypeDescriptorException(L"Cannot find the type \""+name+L"\".") - { - } - }; - - class ConstructorNotExistsException : public TypeDescriptorException - { - public: - ConstructorNotExistsException(ITypeDescriptor* type) - :TypeDescriptorException(L"Cannot find any constructor in type \"" + type->GetTypeName() + L"\".") - { - } - }; - - class MemberNotExistsException : public TypeDescriptorException - { - public: - MemberNotExistsException(const WString& name, ITypeDescriptor* type) - :TypeDescriptorException(L"Cannot find the member \"" + name + L"\" in type \"" + type->GetTypeName() + L"\".") - { - } - }; - - class PropertyIsNotReadableException : public TypeDescriptorException - { - public: - PropertyIsNotReadableException(IPropertyInfo* propertyInfo) - :TypeDescriptorException(L"Cannot read value from a property \"" + propertyInfo->GetName() + L"\" that is not readable in type \"" + propertyInfo->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") - { - } - }; - - class PropertyIsNotWritableException : public TypeDescriptorException - { - public: - PropertyIsNotWritableException(IPropertyInfo* propertyInfo) - :TypeDescriptorException(L"Cannot write value to a property \"" + propertyInfo->GetName() + L"\" that is not writable in type \"" + propertyInfo->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") - { - } - }; - - class ArgumentNullException : public TypeDescriptorException - { - public: - ArgumentNullException(const WString& name, const WString& member) - :TypeDescriptorException(L"Argument \"" + name + L"\" cannot be null when accessing its member \"" + member + L"\".") - { - } - - ArgumentNullException(const WString& name, IMethodInfo* target) - :TypeDescriptorException(L"Argument \"" + name + L"\" cannot be null when invoking method \"" + target->GetName() + L"\" in type \"" + target->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") - { - } - - ArgumentNullException(const WString& name, IEventInfo* target) - :TypeDescriptorException(L"Argument \"" + name + L"\" cannot be null when accessing event \"" + target->GetName() + L"\" in type \"" + target->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") - { - } - - ArgumentNullException(const WString& name, IPropertyInfo* target) - :TypeDescriptorException(L"Argument \"" + name + L"\" cannot be null when invoking property \"" + target->GetName() + L"\" in type \"" + target->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") - { - } - }; - - class ArgumentTypeMismtatchException : public TypeDescriptorException - { - public: - ArgumentTypeMismtatchException(const WString& name, ITypeInfo* expected, const Value& actual) - :TypeDescriptorException(L"Argument \"" + name + L"\" cannot convert from \"" + actual.GetTypeFriendlyName() + L"\" to \"" + expected->GetTypeFriendlyName() + L"\".") - { - } - - ArgumentTypeMismtatchException(const WString& name, ITypeDescriptor* type, Value::ValueType valueType, const Value& actual) - :TypeDescriptorException(L"Argument \"" + name + L"\" cannot convert from \"" + actual.GetTypeFriendlyName() + L"\" to \"" + - (valueType == Value::SharedPtr ? L"Ptr<" : L"") + type->GetTypeName() + (valueType == Value::SharedPtr ? L">" : valueType == Value::RawPtr ? L"*" : L"") - + L"\".") - { - } - }; - - class ArgumentCountMismtatchException : public TypeDescriptorException - { - public: - ArgumentCountMismtatchException() - :TypeDescriptorException(L"Argument count does not match the definition.") - { - } - - ArgumentCountMismtatchException(IMethodGroupInfo* target) - :TypeDescriptorException(L"Argument count does not match the definition when invoking method \"" + target->GetName() + L"\" in type \"" + target->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") - { - } - }; - -#endif - } - } -} - -#endif - -/*********************************************************************** -.\PARSING\PARSINGTREE.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parsing::Parsing Tree - -Classes: -***********************************************************************/ - -#ifndef VCZH_PARSING_PARSINGTREE -#define VCZH_PARSING_PARSINGTREE - - -namespace vl -{ - namespace parsing - { - -/*********************************************************************** -Location -***********************************************************************/ - - /// A type representing text position. - struct ParsingTextPos - { - static const vint UnknownValue=-2; - /// Character index, begins at 0. - vint index; - /// Row number, begins at 0. - vint row; - /// Column number, begins at 0. - vint column; - - ParsingTextPos() - :index(UnknownValue) - ,row(UnknownValue) - ,column(UnknownValue) - { - } - - ParsingTextPos(vint _index) - :index(_index) - ,row(UnknownValue) - ,column(UnknownValue) - { - } - - ParsingTextPos(vint _row, vint _column) - :index(UnknownValue) - ,row(_row) - ,column(_column) - { - } - - ParsingTextPos(vint _index, vint _row, vint _column) - :index(_index) - ,row(_row) - ,column(_column) - { - } - - /// Test if this position a valid position. - /// Returns true if this position is a valid position. - bool IsInvalid()const - { - return index < 0 && row < 0 && column < 0; - } - - static vint Compare(const ParsingTextPos& a, const ParsingTextPos& b) - { - if (a.IsInvalid() && b.IsInvalid()) - { - return 0; - } - else if (a.IsInvalid()) - { - return -1; - } - else if (b.IsInvalid()) - { - return 1; - } - else if (a.index >= 0 && b.index >= 0) - { - return a.index - b.index; - } - else if (a.row >= 0 && a.column >= 0 && b.row >= 0 && b.column >= 0) - { - if (a.row == b.row) - { - return a.column - b.column; - } - else - { - return a.row - b.row; - } - } - else - { - return 0; - } - } - - bool operator==(const ParsingTextPos& pos)const{return Compare(*this, pos)==0;} - bool operator!=(const ParsingTextPos& pos)const{return Compare(*this, pos)!=0;} - bool operator<(const ParsingTextPos& pos)const{return Compare(*this, pos)<0;} - bool operator<=(const ParsingTextPos& pos)const{return Compare(*this, pos)<=0;} - bool operator>(const ParsingTextPos& pos)const{return Compare(*this, pos)>0;} - bool operator>=(const ParsingTextPos& pos)const{return Compare(*this, pos)>=0;} - }; - - /// A type representing text range. - struct ParsingTextRange - { - /// Text position for the first character. - ParsingTextPos start; - /// Text position for the last character. - ParsingTextPos end; - /// Code index, refer to [F:vl.regex.RegexToken.codeIndex] - vint codeIndex; - - ParsingTextRange() - :codeIndex(-1) - { - end.index=-1; - end.column=-1; - } - - ParsingTextRange(const ParsingTextPos& _start, const ParsingTextPos& _end, vint _codeIndex = -1) - :start(_start) - , end(_end) - , codeIndex(_codeIndex) - { - } - - ParsingTextRange(const regex::RegexToken* startToken, const regex::RegexToken* endToken) - :codeIndex(startToken->codeIndex) - { - start.index=startToken->start; - start.row=startToken->rowStart; - start.column=startToken->columnStart; - end.index=endToken->start+endToken->length-1; - end.row=endToken->rowEnd; - end.column=endToken->columnEnd; - } - - bool operator==(const ParsingTextRange& range)const{return start==range.start && end==range.end;} - bool operator!=(const ParsingTextRange& range)const{return start!=range.start || end!=range.end;} - bool Contains(const ParsingTextPos& pos)const{return start<=pos && pos<=end;} - bool Contains(const ParsingTextRange& range)const{return start<=range.start && range.end<=end;} - }; - } - - namespace stream - { - namespace internal - { - BEGIN_SERIALIZATION(parsing::ParsingTextPos) - SERIALIZE(index) - SERIALIZE(row) - SERIALIZE(column) - END_SERIALIZATION - - BEGIN_SERIALIZATION(parsing::ParsingTextRange) - SERIALIZE(start) - SERIALIZE(end) - SERIALIZE(codeIndex) - END_SERIALIZATION - } - } - - namespace parsing - { -/*********************************************************************** -General Syntax Tree -***********************************************************************/ - - class ParsingTreeNode; - class ParsingTreeToken; - class ParsingTreeObject; - class ParsingTreeArray; - - /// Abstract syntax tree. - class ParsingTreeNode : public Object, public reflection::Description - { - public: - class IVisitor : public Interface - { - public: - virtual void Visit(ParsingTreeToken* node)=0; - virtual void Visit(ParsingTreeObject* node)=0; - virtual void Visit(ParsingTreeArray* node)=0; - }; - - class TraversalVisitor : public Object, public IVisitor - { - public: - enum TraverseDirection - { - ByTextPosition, - ByStorePosition - }; - protected: - TraverseDirection direction; - public: - TraversalVisitor(TraverseDirection _direction); - - virtual void BeforeVisit(ParsingTreeToken* node); - virtual void AfterVisit(ParsingTreeToken* node); - virtual void BeforeVisit(ParsingTreeObject* node); - virtual void AfterVisit(ParsingTreeObject* node); - virtual void BeforeVisit(ParsingTreeArray* node); - virtual void AfterVisit(ParsingTreeArray* node); - - virtual void Visit(ParsingTreeToken* node)override; - virtual void Visit(ParsingTreeObject* node)override; - virtual void Visit(ParsingTreeArray* node)override; - }; - protected: - typedef collections::List> NodeList; - - ParsingTextRange codeRange; - ParsingTreeNode* parent; - NodeList cachedOrderedSubNodes; - - virtual const NodeList& GetSubNodesInternal()=0; - bool BeforeAddChild(Ptr node); - void AfterAddChild(Ptr node); - bool BeforeRemoveChild(Ptr node); - void AfterRemoveChild(Ptr node); - public: - ParsingTreeNode(const ParsingTextRange& _codeRange); - ~ParsingTreeNode(); - - virtual void Accept(IVisitor* visitor)=0; - virtual Ptr Clone()=0; - ParsingTextRange GetCodeRange(); - void SetCodeRange(const ParsingTextRange& range); - - /// Precalculate for enhance searching performance for this node and all child nodes. - void InitializeQueryCache(); - /// Clear all cache made by . - void ClearQueryCache(); - /// Get the parent node. Using this function requires running before. - /// The parent node. - ParsingTreeNode* GetParent(); - /// Get the child nodes. Using this function requires running before. - /// The child nodes. - const NodeList& GetSubNodes(); - - /// Find a direct child node at the position. Using this function requires running before. - /// The found node. - /// The position. - ParsingTreeNode* FindSubNode(const ParsingTextPos& position); - /// Find a direct child node at the range. Using this function requires running before. - /// The found node. - /// The range. - ParsingTreeNode* FindSubNode(const ParsingTextRange& range); - /// Find a most deepest indirect child node at the position. Using this function requires running before. - /// The found node. - /// The position. - ParsingTreeNode* FindDeepestNode(const ParsingTextPos& position); - /// Find a most deepest indirect child node at the range. Using this function requires running before. - /// The found node. - /// The range. - ParsingTreeNode* FindDeepestNode(const ParsingTextRange& range); - }; - - /// Representing a token node in a abstract syntax tree. - class ParsingTreeToken : public ParsingTreeNode, public reflection::Description - { - protected: - WString value; - vint tokenIndex; - - const NodeList& GetSubNodesInternal()override; - public: - ParsingTreeToken(const WString& _value, vint _tokenIndex=-1, const ParsingTextRange& _codeRange=ParsingTextRange()); - ~ParsingTreeToken(); - - void Accept(IVisitor* visitor)override; - Ptr Clone()override; - vint GetTokenIndex(); - void SetTokenIndex(vint _tokenIndex); - /// Get the content of the token. - /// The content of the token. - const WString& GetValue(); - void SetValue(const WString& _value); - }; - - /// Representing an object node in a abstract syntax tree. - class ParsingTreeObject : public ParsingTreeNode, public reflection::Description - { - protected: - typedef collections::Dictionary> NodeMap; - typedef collections::SortedList NameList; - typedef collections::List RuleList; - - WString type; - NodeMap members; - RuleList rules; - - const NodeList& GetSubNodesInternal()override; - public: - ParsingTreeObject(const WString& _type=L"", const ParsingTextRange& _codeRange=ParsingTextRange()); - ~ParsingTreeObject(); - - void Accept(IVisitor* visitor)override; - Ptr Clone()override; - /// Get the type name of the object. - /// The type name of the object. - const WString& GetType(); - void SetType(const WString& _type); - /// Get all fields of the object. - /// All fields of the object. - NodeMap& GetMembers(); - /// Get a field of the object by the field name. - /// The field of the object. - /// The field name. - Ptr GetMember(const WString& name); - bool SetMember(const WString& name, Ptr node); - bool RemoveMember(const WString& name); - /// Get all field names. - /// All field names of the object. - const NameList& GetMemberNames(); - /// Get names of all rules that return this object. - /// Names of all rules. - RuleList& GetCreatorRules(); - }; - - /// Representing an array node in a abstract syntax tree. - class ParsingTreeArray : public ParsingTreeNode, public reflection::Description - { - protected: - typedef collections::List> NodeArray; - - WString elementType; - NodeArray items; - - const NodeList& GetSubNodesInternal()override; - public: - ParsingTreeArray(const WString& _elementType=L"", const ParsingTextRange& _codeRange=ParsingTextRange()); - ~ParsingTreeArray(); - - void Accept(IVisitor* visitor)override; - Ptr Clone()override; - /// Get the type of all elements. It could be different from any actual element's type, but it should at least be the base types of them. - /// The type of all elements. - const WString& GetElementType(); - void SetElementType(const WString& _elementType); - /// Get all elements in this array. - /// All elements in this array. - NodeArray& GetItems(); - /// Get a specified element in this array by the index. - /// The element. - /// The index of the element. - Ptr GetItem(vint index); - bool SetItem(vint index, Ptr node); - bool AddItem(Ptr node); - bool InsertItem(vint index, Ptr node); - bool RemoveItem(vint index); - bool RemoveItem(ParsingTreeNode* node); - vint IndexOfItem(ParsingTreeNode* node); - bool ContainsItem(ParsingTreeNode* node); - vint Count(); - bool Clear(); - }; - -/*********************************************************************** -AST Building Block -***********************************************************************/ - - /// Base type of all strong typed syntax tree. Normally all strong typed syntax tree are generated from a grammar file using ParserGen.exe in Tools project. See [T:vl.parsing.tabling.ParsingTable] for details. - class ParsingTreeCustomBase : public Object, public reflection::Description - { - public: - /// Range of all tokens that form this object. - ParsingTextRange codeRange; - /// Names of all rules that return this object. - collections::List creatorRules; - }; - - /// Strong typed token syntax node, for all class fields of type "token" in the grammar file. See [T:vl.parsing.tabling.ParsingTable] for details. - class ParsingToken : public ParsingTreeCustomBase, public reflection::Description - { - public: - /// Type of the token, representing the index of a regular expression that creates this token in the regular expression list in the grammar file. - vint tokenIndex; - /// Content of the token. - WString value; - - ParsingToken():tokenIndex(-1){} - }; - - /// Error. - class ParsingError : public Object, public reflection::Description - { - public: - /// Range where the error happens. - ParsingTextRange codeRange; - /// Token at which the error happens. - const regex::RegexToken* token; - /// A syntax tree that contains this error. - ParsingTreeCustomBase* parsingTree; - /// The error message. - WString errorMessage; - - ParsingError(); - ParsingError(const WString& _errorMessage); - ParsingError(const regex::RegexToken* _token, const WString& _errorMessage); - ParsingError(ParsingTreeCustomBase* _parsingTree, const WString& _errorMessage); - ~ParsingError(); - }; - -/*********************************************************************** -Syntax Tree Serialization Helper -***********************************************************************/ - - class ParsingTreeConverter : public Object - { - public: - typedef collections::List TokenList; - - virtual Ptr ConvertClass(Ptr obj, const TokenList& tokens)=0; - - bool SetMember(ParsingToken& member, Ptr node, const TokenList& tokens) - { - Ptr token=node.Cast(); - if(token) - { - member.tokenIndex=token->GetTokenIndex(); - member.value=token->GetValue(); - member.codeRange=token->GetCodeRange(); - return true; - } - return false; - } - - template - bool SetMember(collections::List& member, Ptr node, const TokenList& tokens) - { - Ptr arr=node.Cast(); - if(arr) - { - member.Clear(); - vint count=arr->Count(); - for(vint i=0;iGetItem(i), tokens); - member.Add(t); - } - return true; - } - return false; - } - - template - bool SetMember(Ptr& member, Ptr node, const TokenList& tokens) - { - Ptr obj=node.Cast(); - if(obj) - { - Ptr tree=ConvertClass(obj, tokens); - if(tree) - { - tree->codeRange=node->GetCodeRange(); - member=tree.Cast(); - return member; - } - } - return false; - } - }; - -/*********************************************************************** -Logging -***********************************************************************/ - - class IParsingPrintNodeRecorder : public virtual Interface - { - public: - virtual void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) = 0; - }; - - class ParsingEmptyPrintNodeRecorder : public Object, public virtual IParsingPrintNodeRecorder - { - public: - ParsingEmptyPrintNodeRecorder(); - ~ParsingEmptyPrintNodeRecorder(); - - void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range)override; - }; - - class ParsingMultiplePrintNodeRecorder : public Object, public virtual IParsingPrintNodeRecorder - { - typedef collections::List> RecorderList; - protected: - RecorderList recorders; - - public: - ParsingMultiplePrintNodeRecorder(); - ~ParsingMultiplePrintNodeRecorder(); - - void AddRecorder(Ptr recorder); - void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range)override; - }; - - class ParsingOriginalLocationRecorder : public Object, public virtual IParsingPrintNodeRecorder - { - protected: - Ptr recorder; - - public: - ParsingOriginalLocationRecorder(Ptr _recorder); - ~ParsingOriginalLocationRecorder(); - - void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range)override; - }; - - class ParsingGeneratedLocationRecorder : public Object, public virtual IParsingPrintNodeRecorder - { - typedef collections::Dictionary RangeMap; - protected: - RangeMap& rangeMap; - - public: - ParsingGeneratedLocationRecorder(RangeMap& _rangeMap); - ~ParsingGeneratedLocationRecorder(); - - void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range)override; - }; - - class ParsingUpdateLocationRecorder : public Object, public virtual IParsingPrintNodeRecorder - { - public: - ParsingUpdateLocationRecorder(); - ~ParsingUpdateLocationRecorder(); - - void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range)override; - }; - - class ParsingWriter : public stream::TextWriter - { - typedef collections::Pair NodePosPair; - typedef collections::List NodePosList; - protected: - stream::TextWriter& writer; - Ptr recorder; - vint codeIndex; - ParsingTextPos lastPos; - ParsingTextPos currentPos; - NodePosList nodePositions; - - void HandleChar(wchar_t c); - public: - ParsingWriter(stream::TextWriter& _writer, Ptr _recorder = nullptr, vint _codeIndex = -1); - ~ParsingWriter(); - - using stream::TextWriter::WriteString; - void WriteChar(wchar_t c)override; - void WriteString(const wchar_t* string, vint charCount)override; - void BeforePrint(ParsingTreeCustomBase* node); - void AfterPrint(ParsingTreeCustomBase* node); - }; - - extern void Log(ParsingTreeNode* node, const WString& originalInput, stream::TextWriter& writer, const WString& prefix=L""); - } -} - -#endif - - -/*********************************************************************** -.\PARSING\PARSINGTABLE.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parsing::Table - -Classes: -***********************************************************************/ - -#ifndef VCZH_PARSING_PARSINGTABLE -#define VCZH_PARSING_PARSINGTABLE - - -namespace vl -{ - namespace parsing - { - namespace tabling - { - -/*********************************************************************** -Parsing Table -***********************************************************************/ - - /// " // (multiple) e.g. "../Import/Vlpp.h" - /// classPrefix: // (single) A prefix that will be add before all generated types and function. e.g. Xml - /// guard: // (single) The C++ header guard pattern macro name. e.g. VCZH_PARSING_XML_PARSINGXML_PARSER - /// namespace: // (single) Namespaces separated by "." to contain the generated code. e.g. vl.parsing.xml - /// reflection: // (single) Namespaces separated by "." to contain the name of reflectable types. In most of the cases this should be the same as namespace. e.g. vl.parsing.xml - /// parser:() // (multiple) Pair a function name to a rule name. ParserGen.exe will generate a function called "" to parse the input using rule named "". e.g. ParseDocument(XDocument) - /// ambiguity:(enabled|disabled) // (single) Set to "enabled" indicating that the grammar is by design to have ambiguity. - /// serialization:(enabled|disabled) // (single) Set to "enabled" to serialize the parsing table as binary in the generated C++ code, so that when the "LoadTable" function is called to load the table, it can deserialize from the binary data directly, instead of parsing the grammar again. But the grammar text will always be contained in the generated C++ code regardless of the value of "serialization", it can always be retrived using the "GetParserTextBuffer" function. - /// grammar: // (single) Configuration ends here. All content after "grammar:" will be treated as the grammar to define the input. - /// - /// Here is the brief description of the grammar. - /// The grammar is formed by 3 parts: types, token definitions and rule definitions. There is only one character escaping in strings: "", which means the " character. - /// - /// 1) Types: - /// You can write attributes like @AttributeName("argument1", "argument2", ...) in the middle of types. But attributes don't affect the parsing. All attribute definitions will be stored in the generated parsing table, and who uses the table defines how attributes work. Multiple attributes are separated by ",". - /// - /// a) Enum: - /// enum EnumName - /// { - /// Item1 , - /// Item2 , - /// ... // cannot skip the last "," - /// } - /// - /// b) Class: - /// class Name [ambiguous(AmbiguousType)] [: ParentType] - /// { - /// Type name [(UnescapingFunction)] ; - /// } - /// - /// UnescapingFunction is a callback, which will be called when the contained type is fully constructed. The generated C++ code will define forward declarations of all unescaping functions in the cpp file. You should implement them in other places, or you will get linking errors. - /// - /// If the grammar enables ambiguity, then the parsing result may contain ambiguous results for the same part of the input. For example, in C++: - /// A*B; - /// has two meaning (if we only consider context-free parsing): multiplication expression and pointer variable definition. - /// So if the grammar doesn't enable ambiguity, ParserGen.exe will refuce to generate C++ codes because the grammar is wrong. - /// If the grammar enables ambiguity, than the syntax tree should be defined like this: - /// - /// class Statement ambiguous(AmbiguousStatement) - /// { - /// } - /// - /// class AmbiguousStatement : Statement // due to the definition of "Statement" class, "AmbiguousStatement" should inherit from "Statement" - /// { - /// Statement[] items; // required by naming convention - /// } - /// - /// class ExpressionStatement : Statement - /// { - /// Expression expression; - /// } - /// - /// class VariableDefinitionStatement : Statement - /// { - /// Type type; - /// token name; - /// } - /// - /// So for the "A*B;" part in the whole input, it will becomes an AmbiguousStatement, in which the "items" field contains 2 instance of "ExpressionStatement" and "VariableDefinitionStatement". - /// And you can write C++ code to resolve the ambiguity in later passes. - /// - /// c) Type references: - /// Types can be defined globally or inside classes. Generic type is not supported. When you want to refer to a specific type, it could be: - /// token: Store a token, which will becomes [T:vl.parsing.ParsingToken]. - /// Type[]: Array, which will becomes [T:vl.collections.List`2] to the element type. Token cannot be the element of arrays. - /// ClassName: Instance of a specified type, which will becomes [T:vl.Ptr`1] to that type. - /// OuterClass.InnerClass: Refer to the "InnerClass" defined inside the "OuterClass". - /// - /// 2) Token definitions: - /// token TokenName = "regular expression" ; - /// discardtoken TokenName = "regular expression"; - /// - /// "discardtoken" means if such a token is identified, it will not appear in the lexical analyzing result. And you cannot refer to names of "discardtoken" in the grammar. - /// - /// 3) Rule definitions: - /// rule RuleType RuleName - /// = Grammar1 - /// = Grammar2 - /// ... - /// ; - /// - /// It means rule "RuleName" is defined by those grammars, and matching this rule will create an instance of "RuleType" or its whatever types that inheriting "RuleType". - /// - /// 4) Grammars: - /// RuleName: Defines an input that matches a rule. - /// TokenName: Defines an input that formed by the specified token. - /// "StringConstant": Defins an input that formed by exactly the string constant. This constant should define a token in the token list. - /// Grammar : FieldName: Defines an input that matches Grammar (should be either a rule name or a token name), and the result will be stored in field "FieldName" of a class, whose type will appear later. - /// !Grammar: Defines an input that matches Grammar, and the rule will return the result from this grammar. The input should still match other part of the rule, but result of other parts are ignored. - /// [Grammar]: Defines an input that, if match Grammar, will returns the result from that grammar; if not, the result is null. - /// {Grammar}: Defines an input that matches 0, 1 or more Grammar. - /// (Grammar): Defins an input that matches the the grammar. Brackets is only for changing operator associations. - /// Grammar1 Grammar2: Defines an input that should match Grammar1 right before Grammar2. - /// Grammar1 | Grammar2: Defines an input that match either Grammar1 or Grammar2. - /// Grammar as Type: Defines an input that matches the Grammar, and the whole branch of the rule creates an instance of type "Type" - /// Grammar with { FieldName = Value }: Defins an input that matches the Grammar, and will assign "Value", which should be an enum item, to the field "FieldName" of the created instance. - /// - /// 5) Example - /// Here is an example to parse expression containing +, -, *, /, () and numbers:\ - /// - /// include:"Vlpp.h" - /// classPrefix:Calc - /// guard:VCZH_CALCULATOR_PARSER - /// namespace:vl.calculator - /// reflection:vl.calculator - /// parser:ParseExpression(Expr) - /// ambiguity:disabled - /// serialization:enabled - /// grammar: - /// - /// class Expression - /// { - /// } - /// - /// enum BinaryOperator - /// { - /// Add, Sub, Mul, Div, - /// } - /// - /// class NumberExpression : Expression - /// { - /// token number; - /// } - /// - /// class BinaryExpression : Expression - /// { - /// BinaryOperator op; - /// Expression left; - /// Expression right; - /// } - /// - /// token ADD "\+" - /// token SUB "-" - /// token MUL "\*" - /// token DIV "\/" - /// token NUMBER "\d+(.\d+)?" - /// token OPEN "(" - /// token CLOSE ")" - /// - /// rule Expression Factor - /// = NUMBER : number as NumberExpression - /// = "(" !Expr ")" - /// ; - /// rule Expression Term - /// = !Factor - /// = Term : left "*" Factor : right as BinaryExpression with {op = "Mul"} - /// = Term : left "/" Factor : right as BinaryExpression with {op = "Div"} - /// ; - /// rule Expression Expr - /// = !Term - /// = Expr : left "+" Term : right as BinaryExpression with {op = "Add"} - /// = Expr : left "-" Term : right as BinaryExpression with {op = "Sub"} - /// ; - /// - /// After using ParserGen.exe to generate C++ codes, you can do this: - /// auto table = CalcLoadTable(); // this table can be used several times, don't load each type for each parsing, it will have a big performance overhead. - /// List> errors; - /// auto expression = CalcParseExpression(L"(1+2) * (3+4)", table, errors); // it should be a Ptr, will returns nullptr if the input is wrong, with all errors filled into the "errors" variable. - /// You don't need to define the "errors" if you don't actually care how the input is wrong. There will be a overloaded version of CalcParseExpression that doesn't need the error list. - /// - /// If you want to parse a wrong input and do automatic error recovering, which means if the input is not too wrong, you can still get a syntax tree, but some fields are null, with errors filled into the "error" variable. It will be a little complex: - /// auto table = CalcLoadTable(); // Load the table. - /// ParsingState state(L"(1+2) * (3+4)", table); // Initialize a state with the input and the table. - /// state.Reset(L"Expr"); // Set the rule to parse. - /// auto parser = CreateAutoRecoverParser(table); // Create an appropriate automatic error recoverable parser. - /// List> errors; // Define an error list. - /// auto node = parser->Parse(state, errors); // Parse to get an abstract syntax tree, which is a Ptr. - /// if (node) - /// { - /// auto expression = CalcConvertParsingTreeNode(node, state.GetTokens()).Cast(); - /// } - /// - /// After you get a strong typed syntax tree, you can use the generated visitor interface to do something, like evaluate the results of the expression: - /// class Evaluator : public Object, public virtual CalcExpression::IVisitor - /// { - /// private: - /// double result; - /// - /// double Call(CalcExpression* node) - /// { - /// node->Accept(this); - /// return result; - /// } - /// - /// public: - /// - /// static double Evaluate(CalcExpression* node) - /// { - /// return Evaluator().Call(node); - /// } - /// - /// void Visit(CalcNumberExpression* node)override - /// { - /// return wtof(node->number.value); - /// } - /// - /// void Visit(CalcBinaryExpression* node)override - /// { - /// auto left = Calc(node->left.Obj()); - /// auto right = Calc(node->right.Obj()); - /// switch (node->op) - /// { - /// case CalcBinaryOperator::Add: - /// result = left + right; - /// break; - /// case CalcBinaryOperator::Sub: - /// result = left 0 right; - /// break; - /// case CalcBinaryOperator::Mul: - /// result = left * right; - /// break; - /// case CalcBinaryOperator::Div: - /// result = left / right; - /// break; - /// } - /// } - /// }; - /// - /// Nullable EvaluateExpression(const WString& input) - /// { - /// static auto table = CalcLoadTable(); - /// auto expression = CalcParseExpression(input, table); - /// Nulllable result; - /// if (expression) - /// { - /// result = Evaluator::Evaulate(expression.Obj()); - /// } - /// return result; - /// } - /// - /// ]]> - class ParsingTable : public Object - { - public: - static const vint TokenBegin=0; - static const vint TokenFinish=1; - static const vint NormalReduce=2; - static const vint LeftRecursiveReduce=3; - static const vint UserTokenStart=4; - - class AttributeInfo : public Object - { - public: - WString name; - collections::List arguments; - - AttributeInfo(const WString& _name = L"") - :name(_name) - { - } - - AttributeInfo* Argument(const WString& argument) - { - arguments.Add(argument); - return this; - } - }; - - class AttributeInfoList : public Object - { - public: - collections::List> attributes; - - Ptr FindFirst(const WString& name); - }; - - class TreeTypeInfo - { - public: - WString type; - vint attributeIndex; - - TreeTypeInfo() - :attributeIndex(-1) - { - } - - TreeTypeInfo(const WString& _type, vint _attributeIndex) - :type(_type) - ,attributeIndex(_attributeIndex) - { - } - }; - - class TreeFieldInfo - { - public: - WString type; - WString field; - vint attributeIndex; - - TreeFieldInfo() - :attributeIndex(-1) - { - } - - TreeFieldInfo(const WString& _type, const WString& _field, vint _attributeIndex) - :type(_type) - ,field(_field) - ,attributeIndex(_attributeIndex) - { - } - }; - - class TokenInfo - { - public: - WString name; - WString regex; - vint regexTokenIndex; - vint attributeIndex; - - TokenInfo() - :regexTokenIndex(-1) - ,attributeIndex(-1) - { - } - - TokenInfo(const WString& _name, const WString& _regex, vint _attributeIndex) - :name(_name) - ,regex(_regex) - ,regexTokenIndex(-1) - ,attributeIndex(_attributeIndex) - { - } - }; - - class StateInfo - { - public: - WString ruleName; - WString stateName; - WString stateExpression; - - WString ruleAmbiguousType; // filled in Initialize() - - StateInfo() - { - } - - StateInfo(const WString& _ruleName, const WString& _stateName, const WString& _stateExpression) - :ruleName(_ruleName) - ,stateName(_stateName) - ,stateExpression(_stateExpression) - { - } - }; - - class RuleInfo - { - public: - WString name; - WString type; - WString ambiguousType; - vint rootStartState; - vint attributeIndex; - - RuleInfo() - :rootStartState(-1) - ,attributeIndex(-1) - { - } - - RuleInfo(const WString& _name, const WString& _type, const WString& _ambiguousType, vint _rootStartState, vint _attributeIndex) - :name(_name) - ,type(_type) - ,ambiguousType(_ambiguousType) - ,rootStartState(_rootStartState) - ,attributeIndex(_attributeIndex) - { - } - }; - - class Instruction - { - public: - enum InstructionType - { - Create, - Assign, - Item, - Using, - Setter, - Shift, - Reduce, - LeftRecursiveReduce, - }; - - InstructionType instructionType; - vint stateParameter; - WString nameParameter; - WString value; - WString creatorRule; - - Instruction() - :instructionType(Create) - ,stateParameter(0) - { - } - - Instruction(InstructionType _instructionType, vint _stateParameter, const WString& _nameParameter, const WString& _value, const WString& _creatorRule) - :instructionType(_instructionType) - ,stateParameter(_stateParameter) - ,nameParameter(_nameParameter) - ,value(_value) - ,creatorRule(_creatorRule) - { - } - }; - - class LookAheadInfo - { - public: - collections::List tokens; - vint state; - - LookAheadInfo() - :state(-1) - { - } - - enum PrefixResult - { - Prefix, - Equal, - NotPrefix, - }; - - static PrefixResult TestPrefix(Ptr a, Ptr b); - static void WalkInternal(Ptr table, Ptr previous, vint state, collections::SortedList& walkedStates, collections::List>& newInfos); - static void Walk(Ptr table, Ptr previous, vint state, collections::List>& newInfos); - }; - - class TransitionItem - { - public: - vint token; - vint targetState; - collections::List> lookAheads; - collections::List stackPattern; - collections::List instructions; - - enum OrderResult - { - CorrectOrder, - WrongOrder, - SameOrder, - UnknownOrder, - }; - - TransitionItem(){} - - TransitionItem(vint _token, vint _targetState) - :token(_token) - ,targetState(_targetState) - { - } - - static OrderResult CheckOrder(Ptr t1, Ptr t2, OrderResult defaultResult = UnknownOrder); - static vint Compare(Ptr t1, Ptr t2, OrderResult defaultResult); - }; - - class TransitionBag - { - public: - collections::List> transitionItems; - }; - - protected: - // metadata - bool ambiguity; - collections::Array> attributeInfos; - collections::Array treeTypeInfos; - collections::Array treeFieldInfos; - - // LALR table - vint tokenCount; // tokenInfos.Count() + discardTokenInfos.Count() - vint stateCount; // stateInfos.Count() - collections::Array tokenInfos; - collections::Array discardTokenInfos; - collections::Array stateInfos; - collections::Array ruleInfos; - collections::Array> transitionBags; - - // generated data - Ptr lexer; - collections::Dictionary ruleMap; - collections::Dictionary treeTypeInfoMap; - collections::Dictionary, vint> treeFieldInfoMap; - - template - void IO(TIO& io); - - public: - ParsingTable(vint _attributeInfoCount, vint _treeTypeInfoCount, vint _treeFieldInfoCount, vint _tokenCount, vint _discardTokenCount, vint _stateCount, vint _ruleCount); - /// Deserialize the parsing table from a stream. should be before using this table. - /// The stream. - ParsingTable(stream::IStream& input); - ~ParsingTable(); - - /// Serialize the parsing table to a stream. - /// The stream. - void Serialize(stream::IStream& output); - - bool GetAmbiguity(); - void SetAmbiguity(bool value); - - vint GetAttributeInfoCount(); - Ptr GetAttributeInfo(vint index); - void SetAttributeInfo(vint index, Ptr info); - - vint GetTreeTypeInfoCount(); - const TreeTypeInfo& GetTreeTypeInfo(vint index); - const TreeTypeInfo& GetTreeTypeInfo(const WString& type); - void SetTreeTypeInfo(vint index, const TreeTypeInfo& info); - - vint GetTreeFieldInfoCount(); - const TreeFieldInfo& GetTreeFieldInfo(vint index); - const TreeFieldInfo& GetTreeFieldInfo(const WString& type, const WString& field); - void SetTreeFieldInfo(vint index, const TreeFieldInfo& info); - - vint GetTokenCount(); - const TokenInfo& GetTokenInfo(vint token); - void SetTokenInfo(vint token, const TokenInfo& info); - - vint GetDiscardTokenCount(); - const TokenInfo& GetDiscardTokenInfo(vint token); - void SetDiscardTokenInfo(vint token, const TokenInfo& info); - - vint GetStateCount(); - const StateInfo& GetStateInfo(vint state); - void SetStateInfo(vint state, const StateInfo& info); - - vint GetRuleCount(); - const RuleInfo& GetRuleInfo(const WString& ruleName); - const RuleInfo& GetRuleInfo(vint rule); - void SetRuleInfo(vint rule, const RuleInfo& info); - - const regex::RegexLexer& GetLexer(); - Ptr GetTransitionBag(vint state, vint token); - void SetTransitionBag(vint state, vint token, Ptr bag); - /// Initialize the parsing table. This function should be called after deserializing the table from a string. - void Initialize(); - bool IsInputToken(vint regexTokenIndex); - vint GetTableTokenIndex(vint regexTokenIndex); - vint GetTableDiscardTokenIndex(vint regexTokenIndex); - }; - -/*********************************************************************** -Helper Functions -***********************************************************************/ - - extern void Log(Ptr table, stream::TextWriter& writer); - } - } -} - -#endif - -/*********************************************************************** -.\PARSING\PARSINGSTATE.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parsing::State - -Classes: -***********************************************************************/ - -#ifndef VCZH_PARSING_PARSINGSTATE -#define VCZH_PARSING_PARSINGSTATE - - -namespace vl -{ - namespace parsing - { - namespace tabling - { - -/*********************************************************************** -Syntax Analyzer -***********************************************************************/ - - class ParsingTokenWalker : public Object - { - protected: - class LookAheadEnumerator : public Object, public collections::IEnumerator - { - protected: - const ParsingTokenWalker* walker; - vint firstToken; - vint currentToken; - vint currentValue; - vint index; - - public: - LookAheadEnumerator(const ParsingTokenWalker* _walker, vint _currentToken); - LookAheadEnumerator(const LookAheadEnumerator& _enumerator); - - collections::IEnumerator* Clone()const override; - const vint& Current()const override; - vint Index()const override; - bool Next()override; - void Reset()override; - }; - - class TokenLookAhead : public Object, public collections::IEnumerable - { - protected: - const ParsingTokenWalker* walker; - public: - TokenLookAhead(const ParsingTokenWalker* _talker); - - collections::IEnumerator* CreateEnumerator()const override; - }; - - class ReduceLookAhead : public Object, public collections::IEnumerable - { - protected: - const ParsingTokenWalker* walker; - public: - ReduceLookAhead(const ParsingTokenWalker* _walker); - - collections::IEnumerator* CreateEnumerator()const override; - }; - - protected: - collections::List& tokens; - Ptr table; - vint currentToken; - TokenLookAhead tokenLookAhead; - ReduceLookAhead reduceLookAhead; - - vint GetNextIndex(vint index)const; - vint GetTableTokenIndex(vint index)const; - public: - ParsingTokenWalker(collections::List& _tokens, Ptr _table); - ~ParsingTokenWalker(); - - const collections::IEnumerable& GetTokenLookahead()const; - const collections::IEnumerable& GetReduceLookahead()const; - void Reset(); - bool Move(); - vint GetTableTokenIndex()const; - regex::RegexToken* GetRegexToken()const; - vint GetTokenIndexInStream()const; - }; - - class ParsingState : public Object - { - public: - struct ShiftReduceRange - { - regex::RegexToken* shiftToken; - regex::RegexToken* reduceToken; - - ShiftReduceRange() - :shiftToken(0) - ,reduceToken(0) - { - } - }; - - struct TransitionResult - { - enum TransitionType - { - ExecuteInstructions, - AmbiguityBegin, - AmbiguityBranch, - AmbiguityEnd, - SkipToken, - }; - - TransitionType transitionType; - vint ambiguityAffectedStackNodeCount; - WString ambiguityNodeType; - - vint tableTokenIndex; - vint tableStateSource; - vint tableStateTarget; - vint tokenIndexInStream; - regex::RegexToken* token; - - ParsingTable::TransitionItem* transition; - vint instructionBegin; - vint instructionCount; - Ptr> shiftReduceRanges; - - TransitionResult(TransitionType _transitionType=ExecuteInstructions) - :transitionType(_transitionType) - ,ambiguityAffectedStackNodeCount(0) - ,tableTokenIndex(-1) - ,tableStateSource(-1) - ,tableStateTarget(-1) - ,tokenIndexInStream(-1) - ,token(0) - ,transition(0) - ,instructionBegin(-1) - ,instructionCount(-1) - { - } - - operator bool()const - { - return transitionType!=ExecuteInstructions || transition!=0; - } - - void AddShiftReduceRange(regex::RegexToken* shiftToken, regex::RegexToken* reduceToken) - { - ShiftReduceRange range; - range.shiftToken=shiftToken; - range.reduceToken=reduceToken; - if(!shiftReduceRanges) - { - shiftReduceRanges=new collections::List(); - } - shiftReduceRanges->Add(range); - } - }; - - struct Future - { - vint currentState; - vint reduceStateCount; - collections::List shiftStates; - regex::RegexToken* selectedRegexToken; - vint selectedToken; - ParsingTable::TransitionItem* selectedItem; - Future* previous; - Future* next; - - Future() - :currentState(-1) - ,reduceStateCount(0) - ,selectedRegexToken(0) - ,selectedToken(-1) - ,selectedItem(0) - ,previous(0) - ,next(0) - { - } - - Future* Clone() - { - Future* future = new Future; - future->currentState = currentState; - future->reduceStateCount = reduceStateCount; - CopyFrom(future->shiftStates, shiftStates); - future->selectedRegexToken = selectedRegexToken; - future->selectedToken = selectedToken; - future->selectedItem = selectedItem; - future->previous = previous; - return future; - } - }; - - struct StateGroup - { - collections::List stateStack; - vint currentState; - vint tokenSequenceIndex; - - collections::List shiftTokenStack; - regex::RegexToken* shiftToken; - regex::RegexToken* reduceToken; - - StateGroup(); - StateGroup(const ParsingTable::RuleInfo& info); - StateGroup(const StateGroup& group); - }; - private: - WString input; - Ptr table; - collections::List tokens; - Ptr walker; - - WString parsingRule; - vint parsingRuleStartState; - Ptr stateGroup; - public: - ParsingState(const WString& _input, Ptr _table, vint codeIndex=-1); - ~ParsingState(); - - const WString& GetInput(); - Ptr GetTable(); - const collections::List& GetTokens(); - regex::RegexToken* GetToken(vint index); - - vint Reset(const WString& rule); - WString GetParsingRule(); - vint GetParsingRuleStartState(); - vint GetCurrentToken(); - vint GetCurrentTableTokenIndex(); - const collections::List& GetStateStack(); - vint GetCurrentState(); - void SkipCurrentToken(); - - bool TestTransitionItemInFuture(vint tableTokenIndex, Future* future, ParsingTable::TransitionItem* item, const collections::IEnumerable* lookAheadTokens); - ParsingTable::TransitionItem* MatchTokenInFuture(vint tableTokenIndex, Future* future, const collections::IEnumerable* lookAheadTokens); - ParsingTable::TransitionItem* MatchToken(vint tableTokenIndex, const collections::IEnumerable* lookAheadTokens); - void RunTransitionInFuture(ParsingTable::TransitionItem* transition, Future* previous, Future* now); - ParsingState::TransitionResult RunTransition(ParsingTable::TransitionItem* transition, regex::RegexToken* regexToken, vint instructionBegin, vint instructionCount, bool lastPart); - ParsingState::TransitionResult RunTransition(ParsingTable::TransitionItem* transition, regex::RegexToken* regexToken); - - bool ReadTokenInFuture(vint tableTokenIndex, Future* previous, Future* now, const collections::IEnumerable* lookAheadTokens); - TransitionResult ReadToken(vint tableTokenIndex, regex::RegexToken* regexToken, const collections::IEnumerable* lookAheadTokens); - TransitionResult ReadToken(); - - bool TestExplore(vint tableTokenIndex, Future* previous); - bool Explore(vint tableTokenIndex, Future* previous, collections::List& possibilities); - bool ExploreStep(collections::List& previousFutures, vint start, vint count, collections::List& possibilities); - bool ExploreNormalReduce(collections::List& previousFutures, vint start, vint count, collections::List& possibilities); - bool ExploreLeftRecursiveReduce(collections::List& previousFutures, vint start, vint count, collections::List& possibilities); - Future* ExploreCreateRootFuture(); - - Ptr TakeSnapshot(); - void RestoreSnapshot(Ptr group); - }; - -/*********************************************************************** -AST Generating -***********************************************************************/ - - class ParsingTransitionProcessor : public Object - { - public: - virtual void Reset()=0; - virtual bool Run(const ParsingState::TransitionResult& result)=0; - virtual bool GetProcessingAmbiguityBranch()=0; - }; - - class ParsingTreeBuilder : public ParsingTransitionProcessor - { - protected: - Ptr createdObject; - Ptr operationTarget; - collections::List> nodeStack; - - bool processingAmbiguityBranch; - Ptr ambiguityBranchCreatedObject; - Ptr ambiguityBranchOperationTarget; - vint ambiguityBranchSharedNodeCount; - collections::List> ambiguityBranchNodeStack; - collections::List> ambiguityNodes; - public: - ParsingTreeBuilder(); - ~ParsingTreeBuilder(); - - void Reset()override; - bool Run(const ParsingState::TransitionResult& result)override; - bool GetProcessingAmbiguityBranch()override; - Ptr GetNode()const; - }; - - class ParsingTransitionCollector : public ParsingTransitionProcessor - { - typedef collections::List TransitionResultList; - protected: - vint ambiguityBegin; - TransitionResultList transitions; - - collections::Dictionary ambiguityBeginToEnds; - collections::Group ambiguityBeginToBranches; - collections::Dictionary ambiguityBranchToBegins; - public: - ParsingTransitionCollector(); - ~ParsingTransitionCollector(); - - void Reset()override; - bool Run(const ParsingState::TransitionResult& result)override; - bool GetProcessingAmbiguityBranch()override; - - const TransitionResultList& GetTransitions()const; - vint GetAmbiguityEndFromBegin(vint transitionIndex)const; - const collections::List& GetAmbiguityBranchesFromBegin(vint transitionIndex)const; - vint GetAmbiguityBeginFromBranch(vint transitionIndex)const; - }; - } - } -} - -#endif - -/*********************************************************************** -.\THREADING.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Threading - -Classes: - Thread : Thread - CriticalSection - Mutex - Semaphore - EventObject -***********************************************************************/ - -#ifndef VCZH_THREADING -#define VCZH_THREADING - - -namespace vl -{ - -/*********************************************************************** -Kernel Mode Objects -***********************************************************************/ - - namespace threading_internal - { - struct WaitableData; - struct ThreadData; - struct MutexData; - struct SemaphoreData; - struct EventData; - struct CriticalSectionData; - struct ReaderWriterLockData; - struct ConditionVariableData; - } - - /// Base type of all synchronization objects. - class WaitableObject : public Object, public NotCopyable - { -#if defined VCZH_MSVC - private: - threading_internal::WaitableData* waitableData; - protected: - - WaitableObject(); - void SetData(threading_internal::WaitableData* data); - public: - /// Test if the object has already been created. Some of the synchronization objects should initialize itself after the constructor. This function is only available in Windows. - /// Returns true if the object has already been created. - bool IsCreated(); - /// Wait for this object to signal. - /// Returns true if the object is signaled. Returns false if this operation failed. - bool Wait(); - /// Wait for this object to signal for a period of time. This function is only available in Windows. - /// Returns true if the object is signaled. Returns false if this operation failed, including time out. - /// Time in milliseconds. - bool WaitForTime(vint ms); - - /// Wait for multiple objects. This function is only available in Windows. - /// Returns true if all objects are signaled. Returns false if this operation failed. - /// A pointer to an array to pointers. - /// The number of objects in the array. - static bool WaitAll(WaitableObject** objects, vint count); - /// Wait for multiple objects for a period of time. This function is only available in Windows. - /// Returns true if all objects are signaled. Returns false if this operation failed, including time out. - /// A pointer to an array to pointers. - /// The number of objects in the array. - /// Time in milliseconds. - static bool WaitAllForTime(WaitableObject** objects, vint count, vint ms); - /// Wait for one of the objects. This function is only available in Windows. - /// Returns the index of the first signaled or abandoned object, according to the "abandoned" parameter. Returns -1 if this operation failed. - /// A pointer to an array to pointers. - /// The number of objects in the array. - /// Returns true if the waiting is canceled by an abandoned object. An abandoned object is caused by it's owner thread existing without releasing it. - static vint WaitAny(WaitableObject** objects, vint count, bool* abandoned); - /// Wait for one of the objects for a period of time. This function is only available in Windows. - /// Returns the index of the first signaled or abandoned object, according to the "abandoned" parameter. Returns -1 if this operation failed, including time out. - /// A pointer to an array to pointers. - /// The number of objects in the array. - /// Time in milliseconds. - /// Returns true if the waiting is canceled by an abandoned object. An abandoned object is caused by it's owner thread existing without releasing it. - static vint WaitAnyForTime(WaitableObject** objects, vint count, vint ms, bool* abandoned); -#elif defined VCZH_GCC - virtual bool Wait() = 0; -#endif - }; - - /// Representing a thread. [M:vl.Thread.CreateAndStart] is the suggested way to create threads. - class Thread : public WaitableObject - { - friend void InternalThreadProc(Thread* thread); - public: - /// Thread state. - enum ThreadState - { - /// The thread has not started. - NotStarted, - /// The thread is running. - Running, - /// The thread has been stopped. - Stopped - }; - - typedef void(*ThreadProcedure)(Thread*, void*); - protected: - threading_internal::ThreadData* internalData; - volatile ThreadState threadState; - - virtual void Run()=0; - - Thread(); - public: - ~Thread(); - - /// Create a thread using a function pointer. - /// Returns the created thread. - /// The function pointer. - /// The argument to call the function pointer. - /// Set to true (by default) to make the thread delete itself after the job is done. If you set this argument to true, you are not suggested to touch the returned thread pointer in any way. - static Thread* CreateAndStart(ThreadProcedure procedure, void* argument=0, bool deleteAfterStopped=true); - /// Create a thread using a function object or a lambda expression. - /// Returns the created thread. - /// The function object or the lambda expression. - /// Set to true (by default) to make the thread delete itself after the job is done. If you set this argument to true, you are not suggested to touch the returned thread pointer in any way. - static Thread* CreateAndStart(const Func& procedure, bool deleteAfterStopped=true); - /// Pause the caller thread for a period of time. - /// Time in milliseconds. - static void Sleep(vint ms); - /// Get the number of logical processors. - /// The number of logical processor. - static vint GetCPUCount(); - /// Get the current thread id. - /// The current thread id. - static vint GetCurrentThreadId(); - - /// Start the thread. - /// Returns true if this operation succeeded. - bool Start(); -#if defined VCZH_GCC - bool Wait(); -#endif - /// Stop the thread. - /// Returns true if this operation succeeded. - bool Stop(); - /// Get the state of the thread. - /// The state of the thread. - ThreadState GetState(); -#ifdef VCZH_MSVC - void SetCPU(vint index); -#endif - }; - - /// Mutex. - class Mutex : public WaitableObject - { - private: - threading_internal::MutexData* internalData; - public: - Mutex(); - ~Mutex(); - - /// Create a mutex. - /// Returns true if this operation succeeded. - /// Set to true to own the created mutex. - /// Name of the mutex. If it is not empty, than it is a global named mutex. This argument is ignored in Linux. - bool Create(bool owned=false, const WString& name=L""); - /// Open an existing global named mutex. - /// Returns true if this operation succeeded. - /// Set to true make the mutex visible to all all child processes. This argument is only used in Windows. - /// Name of the mutex. This argument is ignored in Linux. - bool Open(bool inheritable, const WString& name); - - /// - /// Release the mutex. - /// In the implementation for Linux, calling Release() more than once between two Wait(), or calling Wait() more than once between two Release(), will results in an undefined behavior. - /// - /// Returns true if this operation succeeded. - bool Release(); -#ifdef VCZH_GCC - bool Wait(); -#endif - }; - - /// Semaphore. - class Semaphore : public WaitableObject - { - private: - threading_internal::SemaphoreData* internalData; - public: - Semaphore(); - ~Semaphore(); - - /// Create a semaphore. - /// Returns true if this operation succeeded. - /// Define the counter of the semaphore. - /// Define the maximum value of the counter of the semaphore. This argument is only used in Windows. - /// Name of the semaphore. If it is not empty, than it is a global named semaphore. This argument is ignored in Linux. - bool Create(vint initialCount, vint maxCount, const WString& name=L""); - /// Open an existing global named semaphore. - /// Returns true if this operation succeeded. - /// Set to true make the semaphore visible to all all child processes. This argument is only used in Windows. - /// Name of the semaphore. This argument is ignored in Linux. - bool Open(bool inheritable, const WString& name); - - /// Release the semaphore once. - /// Returns true if this operation succeeded. - bool Release(); - /// Release the semaphore multiple times. - /// Returns true if this operation succeeded. - /// The amout to release. - vint Release(vint count); -#ifdef VCZH_GCC - bool Wait(); -#endif - }; - - /// Event. - class EventObject : public WaitableObject - { - private: - threading_internal::EventData* internalData; - public: - EventObject(); - ~EventObject(); - - /// Create an auto unsignal event. Auto unsignal means, when one thread waits for the event and succeeded, the event will become unsignaled immediately. - /// Returns true if this operation succeeded. - /// Set to true make the event signaled at the beginning. - /// Name of the event. If it is not empty, than it is a global named mutex. This argument is only used in Windows. - bool CreateAutoUnsignal(bool signaled, const WString& name=L""); - /// Create a manual unsignal event. - /// Returns true if this operation succeeded. - /// Set to true make the event signaled at the beginning. - /// Name of the event. If it is not empty, than it is a global named mutex. This argument is only used in Windows. - bool CreateManualUnsignal(bool signaled, const WString& name=L""); - /// Open an existing global named event. - /// Returns true if this operation succeeded. - /// Set to true make the event visible to all all child processes. This argument is only used in Windows. - /// Name of the event. This argument is only used in Windows. - bool Open(bool inheritable, const WString& name); - - /// Signal the event. - /// Returns true if this operation succeeded. - bool Signal(); - /// Unsignal the event. - /// Returns true if this operation succeeded. - bool Unsignal(); -#ifdef VCZH_GCC - bool Wait(); -#endif - }; - -/*********************************************************************** -Thread Pool -***********************************************************************/ - - /// A light-weight thread pool. - class ThreadPoolLite : public Object - { - private: - ThreadPoolLite(); - ~ThreadPoolLite(); - public: - /// Queue a function pointer. - /// Returns true if this operation succeeded. - /// The function pointer. - /// The argument to call the function pointer. - static bool Queue(void(*proc)(void*), void* argument); - /// Queue a function object. - /// Returns true if this operation succeeded. - /// The function object. - static bool Queue(const Func& proc); - - /// Queue a lambda expression. - /// The type of the lambda expression. - /// The lambda expression. - template - static void QueueLambda(const T& proc) - { - Queue(Func(proc)); - } - -#ifdef VCZH_GCC - static bool Stop(bool discardPendingTasks); -#endif - }; - -/*********************************************************************** -Kernel Mode Objects in Process -***********************************************************************/ - - /// - /// } - /// ]]> - class CriticalSection : public Object, public NotCopyable - { - private: - friend class ConditionVariable; - threading_internal::CriticalSectionData* internalData; - public: - /// Create a critical section. - CriticalSection(); - ~CriticalSection(); - - /// Try enter a critical section. This function will return immediately. - /// Returns true if the current thread owned the critical section. - bool TryEnter(); - /// Enter a critical section. - void Enter(); - /// Leave a critical section. - void Leave(); - - public: - class Scope : public Object, public NotCopyable - { - private: - CriticalSection* criticalSection; - public: - Scope(CriticalSection& _criticalSection); - ~Scope(); - }; - }; - - /// - /// } - /// or - /// WRITER_LOCK(yourLock) - /// { - /// - /// } - /// ]]> - class ReaderWriterLock : public Object, public NotCopyable - { - private: - friend class ConditionVariable; - threading_internal::ReaderWriterLockData* internalData; - public: - /// Create a reader writer lock. - ReaderWriterLock(); - ~ReaderWriterLock(); - - /// Try acquire a reader lock. This function will return immediately. - /// Returns true if the current thread acquired the reader lock. - bool TryEnterReader(); - /// Acquire a reader lock. - void EnterReader(); - /// Release a reader lock. - void LeaveReader(); - /// Try acquire a writer lock. This function will return immediately. - /// Returns true if the current thread acquired the writer lock. - bool TryEnterWriter(); - /// Acquire a writer lock. - void EnterWriter(); - /// Release a writer lock. - void LeaveWriter(); - public: - class ReaderScope : public Object, public NotCopyable - { - private: - ReaderWriterLock* lock; - public: - ReaderScope(ReaderWriterLock& _lock); - ~ReaderScope(); - }; - - class WriterScope : public Object, public NotCopyable - { - private: - ReaderWriterLock* lock; - public: - WriterScope(ReaderWriterLock& _lock); - ~WriterScope(); - }; - }; - - /// Conditional variable. - class ConditionVariable : public Object, public NotCopyable - { - private: - threading_internal::ConditionVariableData* internalData; - public: - /// Create a conditional variable. - ConditionVariable(); - ~ConditionVariable(); - - /// Bind a conditional variable with a owned critical section and release it. When the function returns, the condition variable is activated, and the current thread owned the critical section again. - /// Returns true if this operation succeeded. - /// The critical section. - bool SleepWith(CriticalSection& cs); -#ifdef VCZH_MSVC - /// Bind a conditional variable with a owned critical section and release it for a period of time. When the function returns, the condition variable is activated or it is time out, and the current thread owned the critical section again. This function is only available in Windows. - /// Returns true if this operation succeeded. - /// The critical section. - /// Time in milliseconds. - bool SleepWithForTime(CriticalSection& cs, vint ms); - /// Bind a conditional variable with a owned reader lock and release it. When the function returns, the condition variable is activated, and the current thread owned the reader lock again. This function is only available in Windows. - /// Returns true if this operation succeeded. - /// The reader lock. - bool SleepWithReader(ReaderWriterLock& lock); - /// Bind a conditional variable with a owned reader lock and release it for a period of time. When the function returns, the condition variable is activated or it is time out, and the current thread owned the reader lock again. This function is only available in Windows. - /// Returns true if this operation succeeded. - /// The reader lock. - /// Time in milliseconds. - bool SleepWithReaderForTime(ReaderWriterLock& lock, vint ms); - /// Bind a conditional variable with a owned writer lock and release it. When the function returns, the condition variable is activated, and the current thread owned the writer lock again. This function is only available in Windows. - /// Returns true if this operation succeeded. - /// The writer lock. - bool SleepWithWriter(ReaderWriterLock& lock); - /// Bind a conditional variable with a owned writer lock and release it for a period of time. When the function returns, the condition variable is activated or it is time out, and the current thread owned the writer lock again. This function is only available in Windows. - /// Returns true if this operation succeeded. - /// The writer lock. - /// Time in milliseconds. - bool SleepWithWriterForTime(ReaderWriterLock& lock, vint ms); -#endif - /// Wake one thread that pending on this condition variable. - void WakeOnePending(); - /// Wake all thread that pending on this condition variable. - void WakeAllPendings(); - }; - -/*********************************************************************** -User Mode Objects -***********************************************************************/ - - typedef long LockedInt; - - /// - /// } - /// ]]> - class SpinLock : public Object, public NotCopyable - { - protected: - volatile LockedInt token; - public: - /// Create a spin lock. - SpinLock(); - ~SpinLock(); - - /// Try enter a spin lock. This function will return immediately. - /// Returns true if the current thread owned the spin lock. - bool TryEnter(); - /// Enter a spin lock. - void Enter(); - /// Leave a spin lock. - void Leave(); - - public: - class Scope : public Object, public NotCopyable - { - private: - SpinLock* spinLock; - public: - Scope(SpinLock& _spinLock); - ~Scope(); - }; - }; - -#define SPIN_LOCK(LOCK) SCOPE_VARIABLE(const SpinLock::Scope&, scope, LOCK) -#define CS_LOCK(LOCK) SCOPE_VARIABLE(const CriticalSection::Scope&, scope, LOCK) -#define READER_LOCK(LOCK) SCOPE_VARIABLE(const ReaderWriterLock::ReaderScope&, scope, LOCK) -#define WRITER_LOCK(LOCK) SCOPE_VARIABLE(const ReaderWriterLock::WriterScope&, scope, LOCK) - -/*********************************************************************** -Thread Local Storage - -ThreadLocalStorage and ThreadVariable are designed to be used as global value types only. -Dynamically create instances of them are undefined behavior. -***********************************************************************/ - - /// Thread local storage operations. - class ThreadLocalStorage : public Object, private NotCopyable - { - typedef void(*Destructor)(void*); - protected: - vuint64_t key; - Destructor destructor; - volatile bool disposed = false; - - static void PushStorage(ThreadLocalStorage* storage); - public: - ThreadLocalStorage(Destructor _destructor); - ~ThreadLocalStorage(); - - void* Get(); - void Set(void* data); - void Clear(); - void Dispose(); - - /// Fix all storage creation. - static void FixStorages(); - /// Clear all storages for the current thread. For threads that are created using [T:vl.Thread], this function will be automatically called when before the thread exit. - static void ClearStorages(); - /// Clear all storages for the current thread (should be the main thread) and clear all records. This function can only be called by the main thread when all other threads are exited. It will reduce noices when you want to detect memory leaks. - static void DisposeStorages(); - }; - - /// Thread local variable. This type can only be used to define global variables. Different threads can store different values to and obtain differnt values from a thread local variable. - /// Type of the storage. - template - class ThreadVariable : public Object, private NotCopyable - { - protected: - ThreadLocalStorage storage; - - static void Destructor(void* data) - { - if (data) - { - delete (T*)data; - } - } - public: - /// Create a thread local variable. - ThreadVariable() - :storage(&Destructor) - { - } - - ~ThreadVariable() - { - } - - /// Test if the storage has data. - /// Returns true if the storage has data. - bool HasData() - { - return storage.Get() != nullptr; - } - - /// Remove the data from this storage. - void Clear() - { - storage.Clear(); - } - - /// Get the stored data. - /// The stored ata. - T& Get() - { - return *(T*)storage.Get(); - } - - /// Set data to this storage. - /// The data to set. - void Set(const T& value) - { - storage.Clear(); - storage.Set(new T(value)); - } - }; - - template - class ThreadVariable : public Object, private NotCopyable - { - protected: - ThreadLocalStorage storage; - - public: - ThreadVariable() - :storage(nullptr) - { - } - - ~ThreadVariable() - { - } - - bool HasData() - { - return storage.Get() != nullptr; - } - - void Clear() - { - storage.Set(nullptr); - } - - T* Get() - { - return (T*)storage.Get(); - } - - void Set(T* value) - { - storage.Set((void*)value); - } - }; - -/*********************************************************************** -RepeatingTaskExecutor -***********************************************************************/ - - /// Queued task executor. It is different from a thread pool by: 1) Task execution is single threaded, 2) If you queue a task, it will override the the unexecuted queued task. - /// The type of the argument to run a task. - template - class RepeatingTaskExecutor : public Object - { - private: - SpinLock inputLock; - T inputData; - volatile bool inputDataAvailable; - SpinLock executingEvent; - volatile bool executing; - - void ExecutingProcInternal() - { - while(true) - { - bool currentInputDataAvailable; - T currentInputData; - SPIN_LOCK(inputLock) - { - currentInputData=inputData; - inputData=T(); - currentInputDataAvailable=inputDataAvailable; - inputDataAvailable=false; - if(!currentInputDataAvailable) - { - executing=false; - goto FINISH_EXECUTING; - } - } - Execute(currentInputData); - } - FINISH_EXECUTING: - executingEvent.Leave(); - } - - static void ExecutingProc(void* argument) - { - ((RepeatingTaskExecutor*)argument)->ExecutingProcInternal(); - } - - protected: - /// This function is called when it is ready to execute a task. Task execution is single threaded. All task code should be put inside the function. - /// The argument to run a task. - virtual void Execute(const T& input)=0; - - public: - /// Create a task executor. - RepeatingTaskExecutor() - :inputDataAvailable(false) - ,executing(false) - { - } - - ~RepeatingTaskExecutor() - { - EnsureTaskFinished(); - } - - /// Wait for all tasks to finish. - void EnsureTaskFinished() - { - executingEvent.Enter(); - executingEvent.Leave(); - } - - /// Queue a task. If there is a queued task that has not been executied yet, those tasks will be canceled. Only one task can be queued at the same moment. - /// The argument to run a task. - void SubmitTask(const T& input) - { - SPIN_LOCK(inputLock) - { - inputData=input; - inputDataAvailable=true; - } - if(!executing) - { - executing=true; - executingEvent.Enter(); - ThreadPoolLite::Queue(&ExecutingProc, this); - } - } - }; -} -#endif - - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTORPREDEFINED.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Reflection - -Interfaces: -***********************************************************************/ - -#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORPREDEFINED -#define VCZH_REFLECTION_GUITYPEDESCRIPTORPREDEFINED - -#include - -namespace vl -{ - namespace reflection - { - namespace description - { - struct VoidValue {}; - -/*********************************************************************** -Collections -***********************************************************************/ - - class IValueEnumerator : public virtual IDescriptable, public Description - { - public: - virtual Value GetCurrent() = 0; - virtual vint GetIndex() = 0; - virtual bool Next() = 0; - }; - - class IValueEnumerable : public virtual IDescriptable, public Description - { - public: - virtual Ptr CreateEnumerator() = 0; - - static Ptr Create(collections::LazyList values); - }; - - class IValueReadonlyList : public virtual IValueEnumerable, public Description - { - public: - virtual vint GetCount() = 0; - virtual Value Get(vint index) = 0; - virtual bool Contains(const Value& value) = 0; - virtual vint IndexOf(const Value& value) = 0; - }; - - class IValueList : public virtual IValueReadonlyList, public Description - { - public: - virtual void Set(vint index, const Value& value) = 0; - virtual vint Add(const Value& value) = 0; - virtual vint Insert(vint index, const Value& value) = 0; - virtual bool Remove(const Value& value) = 0; - virtual bool RemoveAt(vint index) = 0; - virtual void Clear() = 0; - - static Ptr Create(); - static Ptr Create(Ptr values); - static Ptr Create(collections::LazyList values); - }; - - class IValueObservableList : public virtual IValueList, public Description - { - typedef void ItemChangedProc(vint index, vint oldCount, vint newCount); - public: - Event ItemChanged; - - static Ptr Create(); - static Ptr Create(Ptr values); - static Ptr Create(collections::LazyList values); - }; - - class IValueReadonlyDictionary : public virtual IDescriptable, public Description - { - public: - virtual Ptr GetKeys() = 0; - virtual Ptr GetValues() = 0; - virtual vint GetCount() = 0; - virtual Value Get(const Value& key) = 0; - }; - - class IValueDictionary : public virtual IValueReadonlyDictionary, public Description - { - public: - virtual void Set(const Value& key, const Value& value) = 0; - virtual bool Remove(const Value& key) = 0; - virtual void Clear() = 0; - - static Ptr Create(); - static Ptr Create(Ptr values); - static Ptr Create(collections::LazyList> values); - }; - -/*********************************************************************** -Interface Implementation Proxy -***********************************************************************/ - - class IValueInterfaceProxy : public virtual IDescriptable, public Description - { - public: - virtual Value Invoke(IMethodInfo* methodInfo, Ptr arguments) = 0; - }; - - class IValueFunctionProxy : public virtual IDescriptable, public Description - { - public: - virtual Value Invoke(Ptr arguments) = 0; - }; - - class IValueSubscription : public virtual IDescriptable, public Description - { - typedef void ValueChangedProc(const Value& newValue); - public: - Event ValueChanged; - - virtual bool Open() = 0; - virtual bool Update() = 0; - virtual bool Close() = 0; - }; - -/*********************************************************************** -Interface Implementation Proxy (Implement) -***********************************************************************/ - - class ValueInterfaceRoot : public virtual IDescriptable - { - protected: - Ptr proxy; - - void SetProxy(Ptr value) - { - proxy = value; - } - public: - Ptr GetProxy() - { - return proxy; - } - }; - - template - class ValueInterfaceProxy - { - }; - -#pragma warning(push) -#pragma warning(disable:4250) - template - class ValueInterfaceImpl : public virtual ValueInterfaceRoot, public virtual TInterface, public ValueInterfaceProxy... - { - public: - ~ValueInterfaceImpl() - { - FinalizeAggregation(); - } - }; -#pragma warning(pop) - -/*********************************************************************** -Runtime Exception -***********************************************************************/ - - class IValueCallStack : public virtual IDescriptable, public Description - { - public: - virtual Ptr GetLocalVariables() = 0; - virtual Ptr GetLocalArguments() = 0; - virtual Ptr GetCapturedVariables() = 0; - virtual Ptr GetGlobalVariables() = 0; - virtual WString GetFunctionName() = 0; - virtual WString GetSourceCodeBeforeCodegen() = 0; - virtual WString GetSourceCodeAfterCodegen() = 0; - virtual vint GetRowBeforeCodegen() = 0; - virtual vint GetRowAfterCodegen() = 0; - }; - - class IValueException : public virtual IDescriptable, public Description - { - public: -#pragma push_macro("GetMessage") -#if defined GetMessage -#undef GetMessage -#endif - virtual WString GetMessage() = 0; -#pragma pop_macro("GetMessage") - virtual bool GetFatal() = 0; - virtual Ptr GetCallStack() = 0; - - static Ptr Create(const WString& message); - }; - } - } -} - -#endif - - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTORBUILDER.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Reflection - -Interfaces: -***********************************************************************/ - -#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER -#define VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER - - -namespace vl -{ - namespace collections - { - template - class ObservableList; - } - - namespace reflection - { - namespace description - { - -#ifndef VCZH_DEBUG_NO_REFLECTION - -/*********************************************************************** -TypeInfo -***********************************************************************/ - -#define DECL_TYPE_INFO(TYPENAME) template<>struct TypeInfo{ static const TypeInfoContent content; }; -#define IMPL_VL_TYPE_INFO(TYPENAME) const TypeInfoContent TypeInfo::content = { L ## #TYPENAME, nullptr, TypeInfoContent::VlppType }; -#define IMPL_CPP_TYPE_INFO(TYPENAME) const TypeInfoContent TypeInfo::content = { L ## #TYPENAME, nullptr, TypeInfoContent::CppType }; -#define IMPL_TYPE_INFO_RENAME(TYPENAME, EXPECTEDNAME) const TypeInfoContent TypeInfo::content = { L ## #EXPECTEDNAME, L ## #TYPENAME, TypeInfoContent::Renamed }; - - struct TypeInfoContent - { - enum TypeInfoCppName - { - VlppType, // vl:: - CppType, // - Renamed, // CppFullTypeName - }; - - const wchar_t* typeName; - const wchar_t* cppFullTypeName; - TypeInfoCppName cppName; - }; - - template - struct TypeInfo - { - }; - - template - ITypeDescriptor* GetTypeDescriptor() - { - return GetTypeDescriptor(TypeInfo::content.typeName); - } - -/*********************************************************************** -SerializableTypeDescriptor -***********************************************************************/ - - class TypeDescriptorImplBase : public Object, public ITypeDescriptor, private ITypeDescriptor::ICpp - { - private: - TypeDescriptorFlags typeDescriptorFlags; - const TypeInfoContent* typeInfoContent; - WString typeName; - WString cppFullTypeName; - - const WString& GetFullName()override; - - protected: - const TypeInfoContent* GetTypeInfoContentInternal(); - - public: - TypeDescriptorImplBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent); - ~TypeDescriptorImplBase(); - - ITypeDescriptor::ICpp* GetCpp()override; - TypeDescriptorFlags GetTypeDescriptorFlags()override; - const WString& GetTypeName()override; - }; - - class ValueTypeDescriptorBase : public TypeDescriptorImplBase - { - protected: - bool loaded; - Ptr valueType; - Ptr enumType; - Ptr serializableType; - - virtual void LoadInternal();; - void Load(); - public: - ValueTypeDescriptorBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent); - ~ValueTypeDescriptorBase(); - - bool IsAggregatable()override; - IValueType* GetValueType()override; - IEnumType* GetEnumType()override; - ISerializableType* GetSerializableType()override; - - vint GetBaseTypeDescriptorCount()override; - ITypeDescriptor* GetBaseTypeDescriptor(vint index)override; - bool CanConvertTo(ITypeDescriptor* targetType)override; - vint GetPropertyCount()override; - IPropertyInfo* GetProperty(vint index)override; - bool IsPropertyExists(const WString& name, bool inheritable)override; - IPropertyInfo* GetPropertyByName(const WString& name, bool inheritable)override; - vint GetEventCount()override; - IEventInfo* GetEvent(vint index)override; - bool IsEventExists(const WString& name, bool inheritable)override; - IEventInfo* GetEventByName(const WString& name, bool inheritable)override; - vint GetMethodGroupCount()override; - IMethodGroupInfo* GetMethodGroup(vint index)override; - bool IsMethodGroupExists(const WString& name, bool inheritable)override; - IMethodGroupInfo* GetMethodGroupByName(const WString& name, bool inheritable)override; - IMethodGroupInfo* GetConstructorGroup()override; - }; - - template - class TypedValueTypeDescriptorBase : public ValueTypeDescriptorBase - { - public: - TypedValueTypeDescriptorBase() - :ValueTypeDescriptorBase(TDFlags, &TypeInfo::content) - { - } - }; - -/*********************************************************************** -TypeInfoImp -***********************************************************************/ - - class TypeDescriptorTypeInfo : public Object, public ITypeInfo - { - protected: - ITypeDescriptor* typeDescriptor; - TypeInfoHint hint; - - public: - TypeDescriptorTypeInfo(ITypeDescriptor* _typeDescriptor, TypeInfoHint _hint); - ~TypeDescriptorTypeInfo(); - - Decorator GetDecorator()override; - TypeInfoHint GetHint()override; - ITypeInfo* GetElementType()override; - ITypeDescriptor* GetTypeDescriptor()override; - vint GetGenericArgumentCount()override; - ITypeInfo* GetGenericArgument(vint index)override; - WString GetTypeFriendlyName()override; - }; - - class DecoratedTypeInfo : public Object, public ITypeInfo - { - protected: - Ptr elementType; - - public: - DecoratedTypeInfo(Ptr _elementType); - ~DecoratedTypeInfo(); - - TypeInfoHint GetHint()override; - ITypeInfo* GetElementType()override; - ITypeDescriptor* GetTypeDescriptor()override; - vint GetGenericArgumentCount()override; - ITypeInfo* GetGenericArgument(vint index)override; - }; - - class RawPtrTypeInfo : public DecoratedTypeInfo - { - public: - RawPtrTypeInfo(Ptr _elementType); - ~RawPtrTypeInfo(); - - Decorator GetDecorator()override; - WString GetTypeFriendlyName()override; - }; - - class SharedPtrTypeInfo : public DecoratedTypeInfo - { - public: - SharedPtrTypeInfo(Ptr _elementType); - ~SharedPtrTypeInfo(); - - Decorator GetDecorator()override; - WString GetTypeFriendlyName()override; - }; - - class NullableTypeInfo : public DecoratedTypeInfo - { - public: - NullableTypeInfo(Ptr _elementType); - ~NullableTypeInfo(); - - Decorator GetDecorator()override; - WString GetTypeFriendlyName()override; - }; - - class GenericTypeInfo : public DecoratedTypeInfo - { - protected: - collections::List> genericArguments; - - public: - GenericTypeInfo(Ptr _elementType); - ~GenericTypeInfo(); - - Decorator GetDecorator()override; - vint GetGenericArgumentCount()override; - ITypeInfo* GetGenericArgument(vint index)override; - WString GetTypeFriendlyName()override; - - void AddGenericArgument(Ptr value); - }; - -/*********************************************************************** -ParameterInfoImpl -***********************************************************************/ - - class ParameterInfoImpl : public Object, public IParameterInfo - { - protected: - IMethodInfo* ownerMethod; - WString name; - Ptr type; - public: - ParameterInfoImpl(IMethodInfo* _ownerMethod, const WString& _name, Ptr _type); - ~ParameterInfoImpl(); - - ITypeDescriptor* GetOwnerTypeDescriptor()override; - const WString& GetName()override; - ITypeInfo* GetType()override; - IMethodInfo* GetOwnerMethod()override; - }; - -/*********************************************************************** -MethodInfoImpl -***********************************************************************/ - - class MethodInfoImpl : public Object, public IMethodInfo - { - friend class PropertyInfoImpl; - protected: - IMethodGroupInfo* ownerMethodGroup; - IPropertyInfo* ownerProperty; - collections::List> parameters; - Ptr returnInfo; - bool isStatic; - - virtual Value InvokeInternal(const Value& thisObject, collections::Array& arguments)=0; - virtual Value CreateFunctionProxyInternal(const Value& thisObject) = 0; - public: - MethodInfoImpl(IMethodGroupInfo* _ownerMethodGroup, Ptr _return, bool _isStatic); - ~MethodInfoImpl(); - - ITypeDescriptor* GetOwnerTypeDescriptor()override; - IPropertyInfo* GetOwnerProperty()override; - const WString& GetName()override; - IMethodGroupInfo* GetOwnerMethodGroup()override; - vint GetParameterCount()override; - IParameterInfo* GetParameter(vint index)override; - ITypeInfo* GetReturn()override; - bool IsStatic()override; - void CheckArguments(collections::Array& arguments)override; - Value Invoke(const Value& thisObject, collections::Array& arguments)override; - Value CreateFunctionProxy(const Value& thisObject)override; - bool AddParameter(Ptr parameter); - bool SetOwnerMethodgroup(IMethodGroupInfo* _ownerMethodGroup); - }; - -/*********************************************************************** -MethodGroupInfoImpl -***********************************************************************/ - - class MethodGroupInfoImpl : public Object, public IMethodGroupInfo - { - protected: - ITypeDescriptor* ownerTypeDescriptor; - WString name; - collections::List> methods; - public: - MethodGroupInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name); - ~MethodGroupInfoImpl(); - - ITypeDescriptor* GetOwnerTypeDescriptor()override; - const WString& GetName()override; - vint GetMethodCount()override; - IMethodInfo* GetMethod(vint index)override; - bool AddMethod(Ptr _method); - }; - -/*********************************************************************** -EventInfoImpl -***********************************************************************/ - - class EventInfoImpl : public Object, public IEventInfo - { - friend class PropertyInfoImpl; - - protected: - ITypeDescriptor* ownerTypeDescriptor; - collections::List observingProperties; - WString name; - Ptr handlerType; - - virtual Ptr AttachInternal(DescriptableObject* thisObject, Ptr handler)=0; - virtual bool DetachInternal(DescriptableObject* thisObject, Ptr handler)=0; - virtual void InvokeInternal(DescriptableObject* thisObject, Ptr arguments)=0; - virtual Ptr GetHandlerTypeInternal()=0; - public: - EventInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name); - ~EventInfoImpl(); - - ITypeDescriptor* GetOwnerTypeDescriptor()override; - const WString& GetName()override; - ITypeInfo* GetHandlerType()override; - vint GetObservingPropertyCount()override; - IPropertyInfo* GetObservingProperty(vint index)override; - Ptr Attach(const Value& thisObject, Ptr handler)override; - bool Detach(const Value& thisObject, Ptr handler)override; - void Invoke(const Value& thisObject, Ptr arguments)override; - }; - -/*********************************************************************** -TypeDescriptorImpl -***********************************************************************/ - - class PropertyInfoImpl : public Object, public IPropertyInfo - { - protected: - ITypeDescriptor* ownerTypeDescriptor; - WString name; - Ptr cpp; - MethodInfoImpl* getter; - MethodInfoImpl* setter; - EventInfoImpl* valueChangedEvent; - - public: - PropertyInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, MethodInfoImpl* _getter, MethodInfoImpl* _setter, EventInfoImpl* _valueChangedEvent); - ~PropertyInfoImpl(); - - ITypeDescriptor* GetOwnerTypeDescriptor()override; - const WString& GetName()override; - IPropertyInfo::ICpp* GetCpp()override; - - bool IsReadable()override; - bool IsWritable()override; - ITypeInfo* GetReturn()override; - IMethodInfo* GetGetter()override; - IMethodInfo* GetSetter()override; - IEventInfo* GetValueChangedEvent()override; - Value GetValue(const Value& thisObject)override; - void SetValue(Value& thisObject, const Value& newValue)override; - }; - - class PropertyInfoImpl_StaticCpp : public PropertyInfoImpl, private IPropertyInfo::ICpp - { - private: - WString referenceTemplate; - - const WString& GetReferenceTemplate()override; - - public: - PropertyInfoImpl_StaticCpp(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, MethodInfoImpl* _getter, MethodInfoImpl* _setter, EventInfoImpl* _valueChangedEvent, const WString& _referenceTemplate); - ~PropertyInfoImpl_StaticCpp(); - - IPropertyInfo::ICpp* GetCpp()override; - }; - -/*********************************************************************** -FieldInfoImpl -***********************************************************************/ - - class FieldInfoImpl : public Object, public IPropertyInfo - { - protected: - ITypeDescriptor* ownerTypeDescriptor; - Ptr returnInfo; - WString name; - - virtual Value GetValueInternal(const Value& thisObject)=0; - virtual void SetValueInternal(Value& thisObject, const Value& newValue)=0; - public: - FieldInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, Ptr _returnInfo); - ~FieldInfoImpl(); - - ITypeDescriptor* GetOwnerTypeDescriptor()override; - const WString& GetName()override; - bool IsReadable()override; - bool IsWritable()override; - ITypeInfo* GetReturn()override; - IMethodInfo* GetGetter()override; - IMethodInfo* GetSetter()override; - IEventInfo* GetValueChangedEvent()override; - Value GetValue(const Value& thisObject)override; - void SetValue(Value& thisObject, const Value& newValue)override; - }; - -/*********************************************************************** -TypeDescriptorImpl -***********************************************************************/ - - class TypeDescriptorImpl : public TypeDescriptorImplBase - { - private: - bool loaded; - collections::List baseTypeDescriptors; - collections::Dictionary> properties; - collections::Dictionary> events; - collections::Dictionary> methodGroups; - Ptr constructorGroup; - - protected: - MethodGroupInfoImpl* PrepareMethodGroup(const WString& name); - MethodGroupInfoImpl* PrepareConstructorGroup(); - IPropertyInfo* AddProperty(Ptr value); - IEventInfo* AddEvent(Ptr value); - IMethodInfo* AddMethod(const WString& name, Ptr value); - IMethodInfo* AddConstructor(Ptr value); - void AddBaseType(ITypeDescriptor* value); - - virtual void LoadInternal()=0; - void Load(); - public: - TypeDescriptorImpl(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent); - ~TypeDescriptorImpl(); - - bool IsAggregatable()override; - IValueType* GetValueType()override; - IEnumType* GetEnumType()override; - ISerializableType* GetSerializableType()override; - - vint GetBaseTypeDescriptorCount()override; - ITypeDescriptor* GetBaseTypeDescriptor(vint index)override; - bool CanConvertTo(ITypeDescriptor* targetType)override; - - vint GetPropertyCount()override; - IPropertyInfo* GetProperty(vint index)override; - bool IsPropertyExists(const WString& name, bool inheritable)override; - IPropertyInfo* GetPropertyByName(const WString& name, bool inheritable)override; - - vint GetEventCount()override; - IEventInfo* GetEvent(vint index)override; - bool IsEventExists(const WString& name, bool inheritable)override; - IEventInfo* GetEventByName(const WString& name, bool inheritable)override; - - vint GetMethodGroupCount()override; - IMethodGroupInfo* GetMethodGroup(vint index)override; - bool IsMethodGroupExists(const WString& name, bool inheritable)override; - IMethodGroupInfo* GetMethodGroupByName(const WString& name, bool inheritable)override; - IMethodGroupInfo* GetConstructorGroup()override; - }; - -#endif - -/*********************************************************************** -TypeFlagTester -***********************************************************************/ - - enum class TypeFlags - { - NonGenericType =0, - FunctionType =1<<0, - EnumerableType =1<<1, - ReadonlyListType =1<<2, - ListType =1<<3, - ObservableListType =1<<4, - ReadonlyDictionaryType =1<<5, - DictionaryType =1<<6, - }; - - template - struct ValueRetriver - { - T* pointer; - }; - - template - struct ValueRetriver - { - T* pointer; - }; - - template - struct TypeFlagTester - { - static const TypeFlags Result=TypeFlags::NonGenericType; - }; - - template - struct TypeFlagTester - { - template - static void* Inherit(const Func* source){} - static char Inherit(void* source){} - static char Inherit(const void* source){} - - static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::FunctionType:TypeFlags::NonGenericType; - }; - - template - struct TypeFlagTester - { - template - static void* Inherit(const collections::LazyList* source){} - static char Inherit(void* source){} - static char Inherit(const void* source){} - - static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::EnumerableType:TypeFlags::NonGenericType; - }; - - template - struct TypeFlagTester - { - template - static void* Inherit(const collections::IEnumerable* source){} - static char Inherit(void* source){} - static char Inherit(const void* source){} - - static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::ReadonlyListType:TypeFlags::NonGenericType; - }; - - template - struct TypeFlagTester - { - template - static void* Inherit(collections::IEnumerable* source){} - static char Inherit(void* source){} - static char Inherit(const void* source){} - - static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::ListType:TypeFlags::NonGenericType; - }; - - template - struct TypeFlagTester - { - template - static void* Inherit(collections::ObservableList* source) {} - static char Inherit(void* source) {} - static char Inherit(const void* source) {} - - static const TypeFlags Result = sizeof(Inherit(((ValueRetriver*)0)->pointer)) == sizeof(void*) ? TypeFlags::ObservableListType : TypeFlags::NonGenericType; - }; - - template - struct TypeFlagTester - { - template - static void* Inherit(const collections::Dictionary* source){} - static char Inherit(void* source){} - static char Inherit(const void* source){} - - static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::ReadonlyDictionaryType:TypeFlags::NonGenericType; - }; - - template - struct TypeFlagTester - { - template - static void* Inherit(collections::Dictionary* source){} - static char Inherit(void* source){} - static char Inherit(const void* source){} - - static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::DictionaryType:TypeFlags::NonGenericType; - }; - -/*********************************************************************** -TypeFlagSelector -***********************************************************************/ - - template - struct TypeFlagSelectorCase - { - static const TypeFlags Result=TypeFlags::NonGenericType; - }; - - template - struct TypeFlagSelectorCase - { - static const TypeFlags Result=TypeFlags::FunctionType; - }; - - template - struct TypeFlagSelectorCase - { - static const TypeFlags Result=TypeFlags::EnumerableType; - }; - - template - struct TypeFlagSelectorCase - { - static const TypeFlags Result=TypeFlags::EnumerableType; - }; - - template - struct TypeFlagSelectorCase - { - static const TypeFlags Result=TypeFlags::ListType; - }; - - template - struct TypeFlagSelectorCase - { - static const TypeFlags Result = TypeFlags::ObservableListType; - }; - - template - struct TypeFlagSelectorCase - { - static const TypeFlags Result=TypeFlags::ReadonlyListType; - }; - - template - struct TypeFlagSelectorCase - { - static const TypeFlags Result=TypeFlags::DictionaryType; - }; - - template - struct TypeFlagSelectorCase - { - static const TypeFlags Result=TypeFlags::ReadonlyDictionaryType; - }; - - template - struct TypeFlagSelector - { - static const TypeFlags Result = - TypeFlagSelectorCase< - T, - (TypeFlags) - ( (vint)TypeFlagTester::Result - | (vint)TypeFlagTester::Result - | (vint)TypeFlagTester::Result - | (vint)TypeFlagTester::Result - | (vint)TypeFlagTester::Result - | (vint)TypeFlagTester::Result - | (vint)TypeFlagTester::Result - ) - >::Result; - }; - -/*********************************************************************** -TypeHintTester -***********************************************************************/ - - template - struct TypeHintTester - { - static const TypeInfoHint Result = TypeInfoHint::Normal; - }; - - template - struct TypeHintTesterForReference - { - static const TypeInfoHint Result = TypeInfoHint::NativeCollectionReference; - }; - - template<> - struct TypeHintTesterForReference - { - static const TypeInfoHint Result = TypeInfoHint::Normal; - }; - - template<> - struct TypeHintTesterForReference - { - static const TypeInfoHint Result = TypeInfoHint::Normal; - }; - - template - struct TypeHintTester - { - static const TypeInfoHint Result = TypeHintTester::Result; - }; - - template - struct TypeHintTester - { - static const TypeInfoHint Result = TypeHintTester::Result == TypeInfoHint::Normal - ? TypeHintTesterForReference::Result>::Result - : TypeHintTester::Result - ; - }; - - template - struct TypeHintTester - { - static const TypeInfoHint Result = TypeHintTester::Result; - }; - - template - struct TypeHintTester> - { - static const TypeInfoHint Result = TypeInfoHint::LazyList; - }; - - template - struct TypeHintTester> - { - static const TypeInfoHint Result = TypeInfoHint::Array; - }; - - template - struct TypeHintTester> - { - static const TypeInfoHint Result = TypeInfoHint::List; - }; - - template - struct TypeHintTester> - { - static const TypeInfoHint Result = TypeInfoHint::SortedList; - }; - - template - struct TypeHintTester> - { - static const TypeInfoHint Result = TypeInfoHint::ObservableList; - }; - - template - struct TypeHintTester> - { - static const TypeInfoHint Result = TypeInfoHint::Dictionary; - }; - -/*********************************************************************** -TypeInfoRetriver -***********************************************************************/ - - template - struct DetailTypeInfoRetriver - { - static const ITypeInfo::Decorator Decorator=ITypeInfo::TypeDescriptor; - typedef void Type; - typedef void TempValueType; - typedef void ResultReferenceType; - typedef void ResultNonReferenceType; - }; - - template - struct TypeInfoRetriver - { - static const TypeFlags TypeFlag = TypeFlagSelector::Result; - static const TypeInfoHint Hint = TypeHintTester::Result; - static const ITypeInfo::Decorator Decorator = DetailTypeInfoRetriver::Decorator; - - typedef typename DetailTypeInfoRetriver::Type Type; - typedef typename DetailTypeInfoRetriver::TempValueType TempValueType; - typedef typename DetailTypeInfoRetriver::ResultReferenceType ResultReferenceType; - typedef typename DetailTypeInfoRetriver::ResultNonReferenceType ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo() - { - return DetailTypeInfoRetriver::Type, TypeFlag>::CreateTypeInfo(Hint); - } -#endif - }; - -/*********************************************************************** -TypeInfoRetriver Helper Functions (BoxValue, UnboxValue) -***********************************************************************/ - - template - struct ValueAccessor - { - }; - - /// Box an reflectable object. Its type cannot be generic. - /// The boxed value. - /// Type of the object. - /// The object to box. - /// The type descriptor of the object (optional). - template - Value BoxValue(const T& object, ITypeDescriptor* typeDescriptor=0) - { - using Type = typename RemoveCVR::Type; - return ValueAccessor::Decorator>::BoxValue(object, typeDescriptor); - } - - /// Unbox an reflectable object. Its type cannot be generic. - /// The unboxed object. - /// Type of the object. - /// The value to unbox. - /// The type descriptor of the object (optional). - /// The name of the object to provide a friendly exception message if the conversion is failed (optional). - template - T UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor=0, const WString& valueName=L"value") - { - using Type = typename RemoveCVR::Type; - return ValueAccessor::Decorator>::UnboxValue(value, typeDescriptor, valueName); - } - -/*********************************************************************** -TypeInfoRetriver Helper Functions (UnboxParameter) -***********************************************************************/ - - template - struct ParameterAccessor - { - }; - - /// Box an reflectable object. It supports generic types such as containers, functions, etc. - /// The boxed value. - /// Type of the object. - /// The object to box. - /// The type descriptor of the object (optional). - template - Value BoxParameter(typename TypeInfoRetriver::ResultReferenceType object, ITypeDescriptor* typeDescriptor=0) - { - return ParameterAccessor::ResultNonReferenceType, TypeInfoRetriver::TypeFlag>::BoxParameter(object, typeDescriptor); - } - - /// Box an reflectable object. It supports generic types such as containers, functions, etc. - /// Type of the object. - /// The value to unbox. - /// The unboxed object. - /// The type descriptor of the object (optional). - /// The name of the object to provide a friendly exception message if the conversion is failed (optional). - template - void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor=0, const WString& valueName=L"value") - { - ParameterAccessor::TypeFlag>::UnboxParameter(value, result, typeDescriptor, valueName); - } - -#ifndef VCZH_DEBUG_NO_REFLECTION - -/*********************************************************************** -Value_xs -***********************************************************************/ - - class Value_xs - { - protected: - collections::Array arguments; - public: - Value_xs() - { - } - - template - Value_xs& operator,(T& value) - { - arguments.Resize(arguments.Count() + 1); - arguments[arguments.Count() - 1] = BoxParameter(value); - return *this; - } - - template - Value_xs& operator,(const T& value) - { - arguments.Resize(arguments.Count() + 1); - arguments[arguments.Count() - 1] = BoxParameter(value); - return *this; - } - - Value_xs& operator,(const Value& value) - { - arguments.Resize(arguments.Count()+1); - arguments[arguments.Count()-1]=value; - return *this; - } - - operator collections::Array&() - { - return arguments; - } - }; - -/*********************************************************************** -CustomFieldInfoImpl -***********************************************************************/ - - template - class CustomFieldInfoImpl : public FieldInfoImpl - { - protected: - TField TClass::* fieldRef; - - Value GetValueInternal(const Value& thisObject)override - { - TClass* object=UnboxValue(thisObject); - if(object) - { - return BoxParameter(object->*fieldRef, GetReturn()->GetTypeDescriptor()); - } - return Value(); - } - - void SetValueInternal(Value& thisObject, const Value& newValue)override - { - TClass* object=UnboxValue(thisObject); - if(object) - { - UnboxParameter(newValue, object->*fieldRef, GetReturn()->GetTypeDescriptor(), L"newValue"); - } - } - public: - CustomFieldInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, TField TClass::* _fieldRef) - :FieldInfoImpl(_ownerTypeDescriptor, _name, TypeInfoRetriver::CreateTypeInfo()) - , fieldRef(_fieldRef) - { - } - - IPropertyInfo::ICpp* GetCpp()override - { - return nullptr; - } - }; - -/*********************************************************************** -PrimitiveTypeDescriptor -***********************************************************************/ - - template - class SerializableValueType : public Object, public virtual IValueType - { - public: - Value CreateDefault()override - { - return BoxValue(TypedValueSerializerProvider::GetDefaultValue()); - } - - IBoxedValue::CompareResult Compare(const Value& a, const Value& b)override - { - auto va = UnboxValue(a); - auto vb = UnboxValue(b); - return TypedValueSerializerProvider::Compare(va, vb); - } - }; - - template - class SerializableType : public Object, public virtual ISerializableType - { - public: - bool Serialize(const Value& input, WString& output)override - { - return TypedValueSerializerProvider::Serialize(UnboxValue(input), output); - } - - bool Deserialize(const WString& input, Value& output)override - { - T value; - if (!TypedValueSerializerProvider::Deserialize(input, value)) - { - return false; - } - output = BoxValue(value); - return true; - } - }; - - template - class PrimitiveTypeDescriptor : public TypedValueTypeDescriptorBase - { - protected: - void LoadInternal()override - { - this->valueType = new SerializableValueType(); - this->serializableType = new SerializableType(); - } - }; - -/*********************************************************************** -EnumTypeDescriptor -***********************************************************************/ - - template - class EnumValueType : public Object, public virtual IValueType - { - public: - Value CreateDefault()override - { - return BoxValue(static_cast(0)); - } - - IBoxedValue::CompareResult Compare(const Value& a, const Value& b)override - { - auto ea = static_cast(UnboxValue(a)); - auto eb = static_cast(UnboxValue(b)); - if (ea < eb) return IBoxedValue::Smaller; - if (ea > eb)return IBoxedValue::Greater; - return IBoxedValue::Equal; - } - }; - - template - class EnumType : public Object, public virtual IEnumType - { - protected: - collections::Dictionary candidates; - - public: - void AddItem(WString name, T value) - { - candidates.Add(name, value); - } - - bool IsFlagEnum()override - { - return Flag; - } - - vint GetItemCount()override - { - return candidates.Count(); - } - - WString GetItemName(vint index)override - { - if (index < 0 || index >= candidates.Count()) - { - return L""; - } - return candidates.Keys()[index]; - } - - vuint64_t GetItemValue(vint index)override - { - if (index < 0 || index >= candidates.Count()) - { - return 0; - } - return static_cast(candidates.Values()[index]); - } - - vint IndexOfItem(WString name)override - { - return candidates.Keys().IndexOf(name); - } - - Value ToEnum(vuint64_t value)override - { - return BoxValue(static_cast(value)); - } - - vuint64_t FromEnum(const Value& value)override - { - return static_cast(UnboxValue(value)); - } - }; - - template - class EnumTypeDescriptor : public TypedValueTypeDescriptorBase - { - using TEnumType = EnumType; - protected: - Ptr enumType; - - void LoadInternal()override - { - this->enumType = new TEnumType; - this->valueType = new EnumValueType(); - TypedValueTypeDescriptorBase::enumType = enumType; - } - }; - -/*********************************************************************** -StructTypeDescriptor -***********************************************************************/ - - template - class StructValueType : public Object, public virtual IValueType - { - public: - Value CreateDefault()override - { - return BoxValue(T{}); - } - - IBoxedValue::CompareResult Compare(const Value& a, const Value& b)override - { - return IBoxedValue::NotComparable; - } - }; - - template - class StructTypeDescriptor : public TypedValueTypeDescriptorBase - { - protected: - template - class StructFieldInfo : public FieldInfoImpl - { - protected: - TField T::* field; - - Value GetValueInternal(const Value& thisObject)override - { - auto structValue = thisObject.GetBoxedValue().Cast>(); - if (!structValue) - { - throw ArgumentTypeMismtatchException(L"thisObject", GetOwnerTypeDescriptor(), Value::BoxedValue, thisObject); - } - return BoxValue(structValue->value.*field); - } - - void SetValueInternal(Value& thisObject, const Value& newValue)override - { - auto structValue = thisObject.GetBoxedValue().Cast>(); - if (!structValue) - { - throw ArgumentTypeMismtatchException(L"thisObject", GetOwnerTypeDescriptor(), Value::BoxedValue, thisObject); - } - (structValue->value.*field) = UnboxValue(newValue); - } - public: - StructFieldInfo(ITypeDescriptor* _ownerTypeDescriptor, TField T::* _field, const WString& _name) - :field(_field) - , FieldInfoImpl(_ownerTypeDescriptor, _name, TypeInfoRetriver::CreateTypeInfo()) - { - } - - IPropertyInfo::ICpp* GetCpp()override - { - return nullptr; - } - }; - - protected: - collections::Dictionary> fields; - - public: - StructTypeDescriptor() - { - this->valueType = new StructValueType(); - } - - vint GetPropertyCount()override - { - this->Load(); - return fields.Count(); - } - - IPropertyInfo* GetProperty(vint index)override - { - this->Load(); - if (index < 0 || index >= fields.Count()) - { - return nullptr; - } - return fields.Values()[index].Obj(); - } - - bool IsPropertyExists(const WString& name, bool inheritable)override - { - this->Load(); - return fields.Keys().Contains(name); - } - - IPropertyInfo* GetPropertyByName(const WString& name, bool inheritable)override - { - this->Load(); - vint index = fields.Keys().IndexOf(name); - if (index == -1) return nullptr; - return fields.Values()[index].Obj(); - } - }; -#endif - } - } -} - -#endif - - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTORBUILDER_CONTAINER.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Reflection - -Interfaces: -***********************************************************************/ - -#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_CONTAINER -#define VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_CONTAINER - - -namespace vl -{ - namespace reflection - { - namespace description - { - -/*********************************************************************** -Enumerable Wrappers -***********************************************************************/ - - template - class TypedEnumerator : public Object, public collections::IEnumerator - { - private: - Ptr enumerable; - Ptr enumerator; - vint index; - T value; - - public: - TypedEnumerator(Ptr _enumerable, vint _index, const T& _value) - :enumerable(_enumerable) - ,index(_index) - ,value(_value) - { - enumerator=enumerable->CreateEnumerator(); - vint current=-1; - while(current++Next(); - } - } - - TypedEnumerator(Ptr _enumerable) - :enumerable(_enumerable) - ,index(-1) - { - Reset(); - } - - collections::IEnumerator* Clone()const override - { - return new TypedEnumerator(enumerable, index, value); - } - - const T& Current()const override - { - return value; - } - - vint Index()const override - { - return index; - } - - bool Next() override - { - if(enumerator->Next()) - { - index++; - value=UnboxValue(enumerator->GetCurrent()); - return true; - } - else - { - return false; - } - } - - void Reset() override - { - index=-1; - enumerator=enumerable->CreateEnumerator(); - } - }; - - template - collections::LazyList GetLazyList(Ptr value) - { - return collections::LazyList(new TypedEnumerator(value)); - } - - template - collections::LazyList GetLazyList(Ptr value) - { - return collections::Range(0, value->GetCount()) - .Select([value](vint i) - { - return UnboxValue(value->Get(i)); - }); - } - - template - collections::LazyList GetLazyList(Ptr value) - { - return GetLazyList(Ptr(value)); - } - - template - collections::LazyList GetLazyList(Ptr value) - { - return GetLazyList(Ptr(value)); - } - - template - collections::LazyList> GetLazyList(Ptr value) - { - return collections::Range(0, value->GetCount()) - .Select([value](vint i) - { - return collections::Pair(UnboxValue(value->GetKeys()->Get(i)), UnboxValue(value->GetValues()->Get(i))); - }); - } - - template - collections::LazyList> GetLazyList(Ptr value) - { - return GetLazyList(Ptr(value)); - } - -/*********************************************************************** -Collection Wrappers -***********************************************************************/ - - namespace trait_helper - { - template - struct RemovePtr - { - typedef T Type; - }; - - template - struct RemovePtr - { - typedef T Type; - }; - - template - struct RemovePtr> - { - typedef T Type; - }; - } - -#pragma warning(push) -#pragma warning(disable:4250) - template - class ValueEnumeratorWrapper : public Object, public virtual IValueEnumerator - { - protected: - typedef typename trait_helper::RemovePtr::Type ContainerType; - typedef typename ContainerType::ElementType ElementType; - - T wrapperPointer; - public: - ValueEnumeratorWrapper(const T& _wrapperPointer) - :wrapperPointer(_wrapperPointer) - { - } - - Value GetCurrent()override - { - return BoxValue(wrapperPointer->Current()); - } - - vint GetIndex()override - { - return wrapperPointer->Index(); - } - - bool Next()override - { - return wrapperPointer->Next(); - } - }; - - template - class ValueEnumerableWrapper : public Object, public virtual IValueEnumerable - { - protected: - typedef typename trait_helper::RemovePtr::Type ContainerType; - typedef typename ContainerType::ElementType ElementType; - - T wrapperPointer; - public: - ValueEnumerableWrapper(const T& _wrapperPointer) - :wrapperPointer(_wrapperPointer) - { - } - - Ptr CreateEnumerator()override - { - return new ValueEnumeratorWrapper>>(wrapperPointer->CreateEnumerator()); - } - }; - -#define WRAPPER_POINTER this->wrapperPointer - - template - class ValueReadonlyListWrapper : public ValueEnumerableWrapper, public virtual IValueReadonlyList - { - protected: - typedef typename trait_helper::RemovePtr::Type ContainerType; - typedef typename ContainerType::ElementType ElementType; - typedef typename KeyType::Type ElementKeyType; - - public: - ValueReadonlyListWrapper(const T& _wrapperPointer) - :ValueEnumerableWrapper(_wrapperPointer) - { - } - - vint GetCount()override - { - return WRAPPER_POINTER->Count(); - } - - Value Get(vint index)override - { - return BoxValue(WRAPPER_POINTER->Get(index)); - } - - bool Contains(const Value& value)override - { - ElementKeyType item=UnboxValue(value); - return WRAPPER_POINTER->Contains(item); - } - - vint IndexOf(const Value& value)override - { - ElementKeyType item=UnboxValue(value); - return WRAPPER_POINTER->IndexOf(item); - } - }; - - template - class ValueListWrapper : public ValueReadonlyListWrapper, public virtual IValueList - { - protected: - typedef typename trait_helper::RemovePtr::Type ContainerType; - typedef typename ContainerType::ElementType ElementType; - typedef typename KeyType::Type ElementKeyType; - - public: - ValueListWrapper(const T& _wrapperPointer) - :ValueReadonlyListWrapper(_wrapperPointer) - { - } - - void Set(vint index, const Value& value)override - { - ElementType item=UnboxValue(value); - WRAPPER_POINTER->Set(index, item); - } - - vint Add(const Value& value)override - { - ElementType item=UnboxValue(value); - return WRAPPER_POINTER->Add(item); - } - - vint Insert(vint index, const Value& value)override - { - ElementType item=UnboxValue(value); - return WRAPPER_POINTER->Insert(index, item); - } - - bool Remove(const Value& value)override - { - ElementKeyType item=UnboxValue(value); - return WRAPPER_POINTER->Remove(item); - } - - bool RemoveAt(vint index)override - { - return WRAPPER_POINTER->RemoveAt(index); - } - - void Clear()override - { - WRAPPER_POINTER->Clear(); - } - }; - - template - class ValueListWrapper*> : public ValueReadonlyListWrapper*>, public virtual IValueList - { - protected: - typedef collections::Array ContainerType; - typedef T ElementType; - typedef K ElementKeyType; - - public: - ValueListWrapper(collections::Array* _wrapperPointer) - :ValueReadonlyListWrapper*>(_wrapperPointer) - { - } - - void Set(vint index, const Value& value)override - { - ElementType item = UnboxValue(value); - WRAPPER_POINTER->Set(index, item); - } - - vint Add(const Value& value)override - { - throw Exception(L"Array doesn't have Add method."); - } - - vint Insert(vint index, const Value& value)override - { - throw Exception(L"Array doesn't have Insert method."); - } - - bool Remove(const Value& value)override - { - throw Exception(L"Array doesn't have Remove method."); - } - - bool RemoveAt(vint index)override - { - throw Exception(L"Array doesn't have RemoveAt method."); - } - - void Clear()override - { - throw Exception(L"Array doesn't have Clear method."); - } - }; - - template - class ValueListWrapper*> : public ValueReadonlyListWrapper*>, public virtual IValueList - { - protected: - typedef collections::SortedList ContainerType; - typedef T ElementType; - typedef K ElementKeyType; - - public: - ValueListWrapper(collections::SortedList* _wrapperPointer) - :ValueReadonlyListWrapper*>(_wrapperPointer) - { - } - - void Set(vint index, const Value& value)override - { - throw Exception(L"SortedList doesn't have Set method."); - } - - vint Add(const Value& value)override - { - ElementType item = UnboxValue(value); - return WRAPPER_POINTER->Add(item); - } - - vint Insert(vint index, const Value& value)override - { - throw Exception(L"SortedList doesn't have Insert method."); - } - - bool Remove(const Value& value)override - { - ElementKeyType item = UnboxValue(value); - return WRAPPER_POINTER->Remove(item); - } - - bool RemoveAt(vint index)override - { - return WRAPPER_POINTER->RemoveAt(index); - } - - void Clear()override - { - WRAPPER_POINTER->Clear(); - } - }; - - template - class ValueObservableListWrapper : public ValueListWrapper, public virtual IValueObservableList - { - public: - ValueObservableListWrapper(const T& _wrapperPointer) - :ValueListWrapper(_wrapperPointer) - { - } - }; - -#undef WRAPPER_POINTER - - template - class ValueReadonlyDictionaryWrapper : public virtual Object, public virtual IValueReadonlyDictionary - { - protected: - typedef typename trait_helper::RemovePtr::Type ContainerType; - typedef typename ContainerType::KeyContainer KeyContainer; - typedef typename ContainerType::ValueContainer ValueContainer; - typedef typename KeyContainer::ElementType KeyValueType; - typedef typename KeyType::Type KeyKeyType; - typedef typename ValueContainer::ElementType ValueType; - - T wrapperPointer; - Ptr keys; - Ptr values; - public: - ValueReadonlyDictionaryWrapper(const T& _wrapperPointer) - :wrapperPointer(_wrapperPointer) - { - } - - Ptr GetKeys()override - { - if(!keys) - { - keys=new ValueReadonlyListWrapper(&wrapperPointer->Keys()); - } - return keys; - } - - Ptr GetValues()override - { - if(!values) - { - values=new ValueReadonlyListWrapper(&wrapperPointer->Values()); - } - return values; - } - - vint GetCount()override - { - return wrapperPointer->Count(); - } - - Value Get(const Value& key)override - { - KeyKeyType item=UnboxValue(key); - ValueType result=wrapperPointer->Get(item); - return BoxValue(result); - } - }; - -#define WRAPPER_POINTER ValueReadonlyDictionaryWrapper::wrapperPointer -#define KEY_VALUE_TYPE typename ValueReadonlyDictionaryWrapper::KeyValueType -#define VALUE_TYPE typename ValueReadonlyDictionaryWrapper::ValueType -#define KEY_KEY_TYPE typename ValueReadonlyDictionaryWrapper::KeyKeyType - - template - class ValueDictionaryWrapper : public virtual ValueReadonlyDictionaryWrapper, public virtual IValueDictionary - { - public: - ValueDictionaryWrapper(const T& _wrapperPointer) - :ValueReadonlyDictionaryWrapper(_wrapperPointer) - { - } - - void Set(const Value& key, const Value& value)override - { - KEY_VALUE_TYPE item=UnboxValue(key); - VALUE_TYPE result=UnboxValue(value); - WRAPPER_POINTER->Set(item, result); - } - - bool Remove(const Value& key)override - { - KEY_KEY_TYPE item=UnboxValue(key); - return WRAPPER_POINTER->Remove(item); - } - - void Clear()override - { - WRAPPER_POINTER->Clear(); - } - }; -#undef WRAPPER_POINTER -#undef KEY_VALUE_TYPE -#undef VALUE_TYPE -#undef KEY_KEY_TYPE -#pragma warning(pop) - -/*********************************************************************** -DetailTypeInfoRetriver -***********************************************************************/ - - template - struct DetailTypeInfoRetriver - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; - typedef IValueEnumerable Type; - typedef typename UpLevelRetriver::TempValueType TempValueType; - typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; - typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - typedef typename DetailTypeInfoRetriver::Type ContainerType; - typedef typename ContainerType::ElementType ElementType; - - auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); - - auto genericType = MakePtr(arrayType); - genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); - - auto type = MakePtr(genericType); - return type; - } -#endif - }; - - template - struct DetailTypeInfoRetriver - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; - typedef IValueReadonlyList Type; - typedef typename UpLevelRetriver::TempValueType TempValueType; - typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; - typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - typedef typename DetailTypeInfoRetriver::Type ContainerType; - typedef typename ContainerType::ElementType ElementType; - - auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); - - auto genericType = MakePtr(arrayType); - genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); - - auto type = MakePtr(genericType); - return type; - } -#endif - }; - - template - struct DetailTypeInfoRetriver - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; - typedef IValueList Type; - typedef typename UpLevelRetriver::TempValueType TempValueType; - typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; - typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - typedef typename DetailTypeInfoRetriver::Type ContainerType; - typedef typename ContainerType::ElementType ElementType; - - auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); - - auto genericType = MakePtr(arrayType); - genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); - - auto type = MakePtr(genericType); - return type; - } -#endif - }; - - template - struct DetailTypeInfoRetriver - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator = UpLevelRetriver::Decorator; - typedef IValueObservableList Type; - typedef typename UpLevelRetriver::TempValueType TempValueType; - typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; - typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - typedef typename DetailTypeInfoRetriver::Type ContainerType; - typedef typename ContainerType::ElementType ElementType; - - auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); - - auto genericType = MakePtr(arrayType); - genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); - - auto type = MakePtr(genericType); - return type; - } -#endif - }; - - template - struct DetailTypeInfoRetriver - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; - typedef IValueReadonlyList Type; - typedef typename UpLevelRetriver::TempValueType TempValueType; - typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; - typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - typedef typename DetailTypeInfoRetriver::Type ContainerType; - typedef typename ContainerType::KeyContainer KeyContainer; - typedef typename ContainerType::ValueContainer ValueContainer; - typedef typename KeyContainer::ElementType KeyType; - typedef typename ValueContainer::ElementType ValueType; - - auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); - - auto genericType = MakePtr(arrayType); - genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); - genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); - - auto type = MakePtr(genericType); - return type; - } -#endif - }; - - template - struct DetailTypeInfoRetriver - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; - typedef IValueReadonlyList Type; - typedef typename UpLevelRetriver::TempValueType TempValueType; - typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; - typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - typedef typename DetailTypeInfoRetriver::Type ContainerType; - typedef typename ContainerType::KeyContainer KeyContainer; - typedef typename ContainerType::ValueContainer ValueContainer; - typedef typename KeyContainer::ElementType KeyType; - typedef typename ValueContainer::ElementType ValueType; - - auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); - - auto genericType = MakePtr(arrayType); - genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); - genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); - - auto type = MakePtr(genericType); - return type; - } -#endif - }; - -/*********************************************************************** -ParameterAccessor -***********************************************************************/ - - template - struct ParameterAccessor, TypeFlags::EnumerableType> - { - static Value BoxParameter(collections::LazyList& object, ITypeDescriptor* typeDescriptor) - { - Ptr result=IValueEnumerable::Create( - collections::From(object) - .Select([](const T& item) - { - return BoxValue(item); - }) - ); - - ITypeDescriptor* td = nullptr; -#ifndef VCZH_DEBUG_NO_REFLECTION - td = Description::GetAssociatedTypeDescriptor(); -#endif - return BoxValue>(result, td); - } - - static void UnboxParameter(const Value& value, collections::LazyList& result, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - typedef typename collections::LazyList::ElementType ElementType; - Ptr listProxy=UnboxValue>(value, typeDescriptor, valueName); - result=GetLazyList(listProxy); - } - }; - - template - struct ParameterAccessor - { - static Value BoxParameter(T& object, ITypeDescriptor* typeDescriptor) - { - Ptr result=new ValueReadonlyListWrapper(&object); - - ITypeDescriptor* td = nullptr; -#ifndef VCZH_DEBUG_NO_REFLECTION - td = Description::GetAssociatedTypeDescriptor(); -#endif - return BoxValue>(result, td); - } - - static void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - typedef typename T::ElementType ElementType; - Ptr listProxy=UnboxValue>(value, typeDescriptor, valueName); - collections::LazyList lazyList=GetLazyList(listProxy); - collections::CopyFrom(result, lazyList); - } - }; - - template - struct ParameterAccessor - { - static Value BoxParameter(T& object, ITypeDescriptor* typeDescriptor) - { - Ptr result=new ValueListWrapper(&object); - - ITypeDescriptor* td = nullptr; -#ifndef VCZH_DEBUG_NO_REFLECTION - td = Description::GetAssociatedTypeDescriptor(); -#endif - return BoxValue>(result, td); - } - - static void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - typedef typename T::ElementType ElementType; - Ptr listProxy=UnboxValue>(value, typeDescriptor, valueName); - collections::LazyList lazyList=GetLazyList(listProxy); - collections::CopyFrom(result, lazyList); - } - }; - - template - struct ParameterAccessor, TypeFlags::ObservableListType> - { - static Value BoxParameter(collections::ObservableList& object, ITypeDescriptor* typeDescriptor) - { - ITypeDescriptor* td = nullptr; -#ifndef VCZH_DEBUG_NO_REFLECTION - td = Description::GetAssociatedTypeDescriptor(); -#endif - return BoxValue>(object.GetWrapper(), td); - } - }; - - template - struct ParameterAccessor - { - static Value BoxParameter(T& object, ITypeDescriptor* typeDescriptor) - { - Ptr result=new ValueReadonlyDictionaryWrapper(&object); - - ITypeDescriptor* td = nullptr; -#ifndef VCZH_DEBUG_NO_REFLECTION - td = Description::GetAssociatedTypeDescriptor(); -#endif - return BoxValue>(result, td); - } - - static void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - typedef typename T::KeyContainer KeyContainer; - typedef typename T::ValueContainer ValueContainer; - typedef typename KeyContainer::ElementType KeyType; - typedef typename ValueContainer::ElementType ValueType; - - Ptr dictionaryProxy=UnboxValue>(value, typeDescriptor, valueName); - collections::LazyList> lazyList=GetLazyList(dictionaryProxy); - collections::CopyFrom(result, lazyList); - } - }; - - template - struct ParameterAccessor - { - static Value BoxParameter(T& object, ITypeDescriptor* typeDescriptor) - { - Ptr result=new ValueDictionaryWrapper(&object); - - ITypeDescriptor* td = nullptr; -#ifndef VCZH_DEBUG_NO_REFLECTION - td = Description::GetAssociatedTypeDescriptor(); -#endif - return BoxValue>(result, td); - } - - static void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - typedef typename T::KeyContainer KeyContainer; - typedef typename T::ValueContainer ValueContainer; - typedef typename KeyContainer::ElementType KeyType; - typedef typename ValueContainer::ElementType ValueType; - - Ptr dictionaryProxy=UnboxValue>(value, typeDescriptor, valueName); - collections::LazyList> lazyList=GetLazyList(dictionaryProxy); - collections::CopyFrom(result, lazyList); - } - }; - } - } - - namespace collections - { - template::Type> - class ObservableListBase : public Object, public virtual collections::IEnumerable - { - protected: - collections::List items; - - virtual void NotifyUpdateInternal(vint start, vint count, vint newCount) - { - } - - virtual bool QueryInsert(vint index, const T& value) - { - return true; - } - - virtual void BeforeInsert(vint index, const T& value) - { - } - - virtual void AfterInsert(vint index, const T& value) - { - } - - virtual bool QueryRemove(vint index, const T& value) - { - return true; - } - - virtual void BeforeRemove(vint index, const T& value) - { - } - - virtual void AfterRemove(vint index, vint count) - { - } - - public: - ObservableListBase() - { - } - - ~ObservableListBase() - { - } - - collections::IEnumerator* CreateEnumerator()const - { - return items.CreateEnumerator(); - } - - bool NotifyUpdate(vint start, vint count = 1) - { - if (start<0 || start >= items.Count() || count <= 0 || start + count>items.Count()) - { - return false; - } - else - { - NotifyUpdateInternal(start, count, count); - return true; - } - } - - bool Contains(const K& item)const - { - return items.Contains(item); - } - - vint Count()const - { - return items.Count(); - } - - vint Count() - { - return items.Count(); - } - - const T& Get(vint index)const - { - return items.Get(index); - } - - const T& operator[](vint index)const - { - return items.Get(index); - } - - vint IndexOf(const K& item)const - { - return items.IndexOf(item); - } - - vint Add(const T& item) - { - return Insert(items.Count(), item); - } - - bool Remove(const K& item) - { - vint index = items.IndexOf(item); - if (index == -1) return false; - return RemoveAt(index); - } - - bool RemoveAt(vint index) - { - if (0 <= index && index < items.Count() && QueryRemove(index, items[index])) - { - BeforeRemove(index, items[index]); - T item = items[index]; - items.RemoveAt(index); - AfterRemove(index, 1); - NotifyUpdateInternal(index, 1, 0); - return true; - } - return false; - } - - bool RemoveRange(vint index, vint count) - { - if (count <= 0) return false; - if (0 <= index && index - class ObservableList : public ObservableListBase - { - protected: - Ptr observableList; - - void NotifyUpdateInternal(vint start, vint count, vint newCount)override - { - if (observableList) - { - observableList->ItemChanged(start, count, newCount); - } - } - public: - - Ptr GetWrapper() - { - if (!observableList) - { - observableList = new reflection::description::ValueObservableListWrapper*>(this); - } - return observableList; - } - }; - - namespace randomaccess_internal - { - template - struct RandomAccessable> - { - static const bool CanRead = true; - static const bool CanResize = false; - }; - - template - struct RandomAccessable> - { - static const bool CanRead = true; - static const bool CanResize = false; - }; - } - } -} - -#endif - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTORBUILDER_FUNCTION.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Reflection - -Interfaces: -***********************************************************************/ - -#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_FUNCTION -#define VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_FUNCTION - - -namespace vl -{ - namespace reflection - { - namespace description - { - template - struct EventHelper - { - using Handler = const Func&; - - class EventHandlerImpl : public Object, public reflection::description::IEventHandler - { - public: - Ptr handler; - - EventHandlerImpl(Ptr _handler) - :handler(_handler) - { - } - - bool IsAttached()override - { - return handler->IsAttached(); - } - }; - - static Ptr Attach(Event& e, Handler handler) - { - return MakePtr(e.Add(handler)); - } - - static bool Detach(Event& e, Ptr handler) - { - auto impl = handler.Cast(); - if (!impl) return false; - return e.Remove(impl->handler); - } - - static Event& Invoke(Event& e) - { - return e; - } - }; - -/*********************************************************************** -DetailTypeInfoRetriver> -***********************************************************************/ - -#ifndef VCZH_DEBUG_NO_REFLECTION - namespace internal_helper - { - template - struct GenericArgumentAdder - { - static void Add(Ptr genericType) - { - } - }; - - template - struct GenericArgumentAdder> - { - static void Add(Ptr genericType) - { - genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); - GenericArgumentAdder>::Add(genericType); - } - }; - } -#endif - - template - struct DetailTypeInfoRetriver, TypeFlags::FunctionType> - { - typedef DetailTypeInfoRetriver, TypeFlags::NonGenericType> UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; - typedef IValueList Type; - typedef typename UpLevelRetriver::TempValueType TempValueType; - typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; - typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - auto functionType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); - - auto genericType = MakePtr(functionType); - genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); - internal_helper::GenericArgumentAdder>::Add(genericType); - - auto type = MakePtr(genericType); - return type; - } -#endif - }; - - template - struct DetailTypeInfoRetriver, TypeFlags::FunctionType> - : DetailTypeInfoRetriver, TypeFlags::FunctionType> - { - }; - -/*********************************************************************** -ValueFunctionProxyWrapper> -***********************************************************************/ - - template - class ValueFunctionProxyWrapper - { - }; - - namespace internal_helper - { - extern void UnboxSpecifiedParameter(Ptr arguments, vint index); - - template - void UnboxSpecifiedParameter(Ptr arguments, vint index, T0& p0, TArgs& ...args) - { - UnboxParameter::TempValueType>(arguments->Get(index), p0, 0, itow(index + 1) + L"-th argument"); - UnboxSpecifiedParameter(arguments, index + 1, args...); - } - - template - struct BoxedFunctionInvoker - { - static Value Invoke(const Func& function, Ptr arguments, typename RemoveCVR::Type&& ...args) - { - UnboxSpecifiedParameter(arguments, 0, args...); - R result = function(args...); - return BoxParameter(result); - } - }; - - template - struct BoxedFunctionInvoker - { - static Value Invoke(const Func& function, Ptr arguments, typename RemoveCVR::Type&& ...args) - { - UnboxSpecifiedParameter(arguments, 0, args...); - function(args...); - return Value(); - } - }; - } - - template - class ValueFunctionProxyWrapper : public Object, public virtual IValueFunctionProxy - { - typedef Func FunctionType; - protected: - FunctionType function; - - public: - ValueFunctionProxyWrapper(const FunctionType& _function) - :function(_function) - { - } - - FunctionType GetFunction() - { - return function; - } - - Value Invoke(Ptr arguments)override - { - if (!arguments || arguments->GetCount() != sizeof...(TArgs)) - { -#ifndef VCZH_DEBUG_NO_REFLECTION - throw ArgumentCountMismtatchException(); -#else - CHECK_FAIL(L"Argument count mismatch."); -#endif - } - return internal_helper::BoxedFunctionInvoker::Invoke(function, arguments, typename RemoveCVR::Type()...); - } - }; - -/*********************************************************************** -ParameterAccessor> -***********************************************************************/ - - namespace internal_helper - { - extern void AddValueToList(Ptr arguments); - - template - void AddValueToList(Ptr arguments, T0&& p0, TArgs&& ...args) - { - arguments->Add(description::BoxParameter(p0)); - AddValueToList(arguments, args...); - } - } - - template - struct ParameterAccessor, TypeFlags::FunctionType> - { - static Value BoxParameter(const Func& object, ITypeDescriptor* typeDescriptor) - { - typedef R(RawFunctionType)(TArgs...); - Ptr result=new ValueFunctionProxyWrapper(object); - - ITypeDescriptor* td = nullptr; -#ifndef VCZH_DEBUG_NO_REFLECTION - td = Description::GetAssociatedTypeDescriptor(); -#endif - return BoxValue>(result, td); - } - - static void UnboxParameter(const Value& value, Func& result, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - typedef R(RawFunctionType)(TArgs...); - typedef ValueFunctionProxyWrapper ProxyType; - Ptr functionProxy=UnboxValue>(value, typeDescriptor, valueName); - if(functionProxy) - { - if(Ptr proxy=functionProxy.Cast()) - { - result=proxy->GetFunction(); - } - else - { - result=[functionProxy](TArgs ...args) - { - Ptr arguments = IValueList::Create(); - internal_helper::AddValueToList(arguments, ForwardValue(args)...); - typedef typename TypeInfoRetriver::TempValueType ResultType; - ResultType proxyResult; - description::UnboxParameter(functionProxy->Invoke(arguments), proxyResult); - return proxyResult; - }; - } - } - } - }; - - template - struct ParameterAccessor, TypeFlags::FunctionType> : ParameterAccessor, TypeFlags::FunctionType> - { - }; - -#ifndef VCZH_DEBUG_NO_REFLECTION - -/*********************************************************************** -MethodInfoImpl -***********************************************************************/ - - template - class CustomConstructorInfoImpl{}; - - template - class CustomMethodInfoImpl{}; - - template - class CustomExternalMethodInfoImpl{}; - - template - class CustomStaticMethodInfoImpl{}; - - template - class CustomEventInfoImpl{}; - -/*********************************************************************** -CustomConstructorInfoImpl -***********************************************************************/ - - namespace internal_helper - { - extern void UnboxSpecifiedParameter(MethodInfoImpl* methodInfo, collections::Array& arguments, vint index); - - template - void UnboxSpecifiedParameter(MethodInfoImpl* methodInfo, collections::Array& arguments, vint index, T0& p0, TArgs& ...args) - { - UnboxParameter::TempValueType>(arguments[index], p0, methodInfo->GetParameter(index)->GetType()->GetTypeDescriptor(), itow(index) + L"-th argument"); - UnboxSpecifiedParameter(methodInfo, arguments, index + 1, args...); - } - - template - struct BoxedConstructorInvoker - { - static Value Invoke(MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) - { - UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); - R result = new typename TypeInfoRetriver::Type(args...); - return BoxParameter(result); - } - }; - - template - struct ConstructorArgumentAdder - { - static void Add(MethodInfoImpl* methodInfo, const wchar_t* parameterNames[], vint index) - { - } - }; - - template - struct ConstructorArgumentAdder> - { - static void Add(MethodInfoImpl* methodInfo, const wchar_t* parameterNames[], vint index) - { - methodInfo->AddParameter(new ParameterInfoImpl(methodInfo, parameterNames[index], TypeInfoRetriver::CreateTypeInfo())); - ConstructorArgumentAdder>::Add(methodInfo, parameterNames, index + 1); - } - }; - } - - template - class CustomConstructorInfoImpl : public MethodInfoImpl - { - protected: - Value InvokeInternal(const Value& thisObject, collections::Array& arguments)override - { - return internal_helper::BoxedConstructorInvoker::Invoke(this, arguments, typename RemoveCVR::Type()...); - } - - Value CreateFunctionProxyInternal(const Value& thisObject)override - { - Func proxy( - LAMBDA([](TArgs ...args)->R - { - R result = new typename TypeInfoRetriver::Type(args...); - return result; - }) - ); - return BoxParameter>(proxy); - } - public: - CustomConstructorInfoImpl(const wchar_t* parameterNames[]) - :MethodInfoImpl(0, TypeInfoRetriver::CreateTypeInfo(), true) - { - internal_helper::ConstructorArgumentAdder>::Add(this, parameterNames, 0); - } - - IMethodInfo::ICpp* GetCpp()override - { - return nullptr; - } - }; - -/*********************************************************************** -CustomMethodInfoImpl -CustomStaticMethodInfoImpl -***********************************************************************/ - - namespace internal_helper - { - template - struct BoxedMethodInvoker - { - static Value Invoke(TClass* object, R(__thiscall TClass::* method)(TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) - { - UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); - R result = (object->*method)(args...); - return BoxParameter(result, methodInfo->GetReturn()->GetTypeDescriptor()); - } - }; - - template - struct BoxedMethodInvoker - { - static Value Invoke(TClass* object, void(__thiscall TClass::* method)(TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) - { - UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); - (object->*method)(args...); - return Value(); - } - }; - - template - struct BoxedExternalMethodInvoker - { - static Value Invoke(TClass* object, R(*method)(TClass*, TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) - { - UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); - R result = method(object, args...); - return BoxParameter(result, methodInfo->GetReturn()->GetTypeDescriptor()); - } - }; - - template - struct BoxedExternalMethodInvoker - { - static Value Invoke(TClass* object, void(*method)(TClass*, TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) - { - UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); - method(object, args...); - return Value(); - } - }; - } - class MethodInfoImpl_StaticCpp : public MethodInfoImpl, private IMethodInfo::ICpp - { - private: - WString invokeTemplate; - WString closureTemplate; - - const WString& GetInvokeTemplate()override - { - return invokeTemplate; - } - - const WString& GetClosureTemplate()override - { - return closureTemplate; - } - public: - MethodInfoImpl_StaticCpp(IMethodGroupInfo* _ownerMethodGroup, Ptr _return, bool _isStatic, const wchar_t* _invokeTemplate, const wchar_t* _closureTemplate) - :MethodInfoImpl(_ownerMethodGroup, _return, _isStatic) - { - CHECK_ERROR((_invokeTemplate == nullptr) == (_closureTemplate == nullptr), L"MethodInfoImpl_StaticCpp::MethodInfoImpl_StaticCpp()#Templates should all be set or default at the same time."); - if (_invokeTemplate) - { - invokeTemplate = WString(_invokeTemplate, false); - } - if (_closureTemplate) - { - closureTemplate = WString(_closureTemplate, false); - } - } - - IMethodInfo::ICpp* GetCpp()override - { - return invokeTemplate.Length() == 0 || closureTemplate.Length() == 0 ? nullptr : this; - } - }; - - template - class CustomMethodInfoImpl : public MethodInfoImpl_StaticCpp - { - protected: - R(__thiscall TClass::* method)(TArgs...); - - Value InvokeInternal(const Value& thisObject, collections::Array& arguments)override - { - TClass* object=UnboxValue(thisObject, GetOwnerTypeDescriptor(), L"thisObject"); - return internal_helper::BoxedMethodInvoker::Invoke(object, method, this, arguments, typename RemoveCVR::Type()...); - } - - Value CreateFunctionProxyInternal(const Value& thisObject)override - { - TClass* object=UnboxValue(thisObject, GetOwnerTypeDescriptor(), L"thisObject"); - Func proxy(object, method); - return BoxParameter>(proxy); - } - public: - CustomMethodInfoImpl(const wchar_t* parameterNames[], R(__thiscall TClass::* _method)(TArgs...), const wchar_t* _invokeTemplate, const wchar_t* _closureTemplate) - :MethodInfoImpl_StaticCpp(0, TypeInfoRetriver::CreateTypeInfo(), false, _invokeTemplate, _closureTemplate) - ,method(_method) - { - internal_helper::ConstructorArgumentAdder>::Add(this, parameterNames, 0); - } - }; - - template - class CustomExternalMethodInfoImpl : public MethodInfoImpl_StaticCpp - { - protected: - R(*method)(TClass*, TArgs...); - - Value InvokeInternal(const Value& thisObject, collections::Array& arguments)override - { - TClass* object=UnboxValue(thisObject, GetOwnerTypeDescriptor(), L"thisObject"); - return internal_helper::BoxedExternalMethodInvoker::Invoke(object, method, this, arguments, typename RemoveCVR::Type()...); - } - - Value CreateFunctionProxyInternal(const Value& thisObject)override - { - TClass* object=UnboxValue(thisObject, GetOwnerTypeDescriptor(), L"thisObject"); - Func proxy = Curry(Func(method))(object); - return BoxParameter>(proxy); - } - public: - CustomExternalMethodInfoImpl(const wchar_t* parameterNames[], R(*_method)(TClass*, TArgs...), const wchar_t* _invokeTemplate, const wchar_t* _closureTemplate) - :MethodInfoImpl_StaticCpp(0, TypeInfoRetriver::CreateTypeInfo(), false, _invokeTemplate, _closureTemplate) - ,method(_method) - { - internal_helper::ConstructorArgumentAdder>::Add(this, parameterNames, 0); - } - }; - -/*********************************************************************** -CustomStaticMethodInfoImpl -***********************************************************************/ - - namespace internal_helper - { - template - struct BoxedStaticMethodInvoker - { - static Value Invoke(R(* method)(TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) - { - UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); - R result = method(args...); - return BoxParameter(result, methodInfo->GetReturn()->GetTypeDescriptor()); - } - }; - - template - struct BoxedStaticMethodInvoker - { - static Value Invoke(void(* method)(TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) - { - UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); - method(args...); - return Value(); - } - }; - } - - template - class CustomStaticMethodInfoImpl : public MethodInfoImpl_StaticCpp - { - protected: - R(* method)(TArgs...); - - Value InvokeInternal(const Value& thisObject, collections::Array& arguments)override - { - return internal_helper::BoxedStaticMethodInvoker::Invoke(method, this, arguments, typename RemoveCVR::Type()...); - } - - Value CreateFunctionProxyInternal(const Value& thisObject)override - { - Func proxy(method); - return BoxParameter>(proxy); - } - public: - CustomStaticMethodInfoImpl(const wchar_t* parameterNames[], R(* _method)(TArgs...), const wchar_t* _invokeTemplate, const wchar_t* _closureTemplate) - :MethodInfoImpl_StaticCpp(0, TypeInfoRetriver::CreateTypeInfo(), true, _invokeTemplate, _closureTemplate) - ,method(_method) - { - internal_helper::ConstructorArgumentAdder>::Add(this, parameterNames, 0); - } - }; - -/*********************************************************************** -CustomEventInfoImpl -***********************************************************************/ - - namespace internal_helper - { - template - struct BoxedEventInvoker - { - static void Invoke(Event& eventObject, Ptr arguments, typename RemoveCVR::Type&& ...args) - { - UnboxSpecifiedParameter(arguments, 0, args...); - eventObject(args...); - } - }; - } - - template - class CustomEventInfoImpl : public EventInfoImpl - { - protected: - Event TClass::* eventRef; - - Ptr AttachInternal(DescriptableObject* thisObject, Ptr handler)override - { - TClass* object = UnboxValue(Value::From(thisObject), GetOwnerTypeDescriptor(), L"thisObject"); - Event& eventObject = object->*eventRef; - auto func = Func([=](TArgs ...args) - { - auto arguments = IValueList::Create(); - internal_helper::AddValueToList(arguments, ForwardValue(args)...); - handler->Invoke(arguments); - }); - return EventHelper::Attach(eventObject, func); - } - - bool DetachInternal(DescriptableObject* thisObject, Ptr handler)override - { - TClass* object = UnboxValue(Value::From(thisObject), GetOwnerTypeDescriptor(), L"thisObject"); - Event& eventObject = object->*eventRef; - return EventHelper::Detach(eventObject, handler); - } - - void InvokeInternal(DescriptableObject* thisObject, Ptr arguments)override - { - TClass* object = UnboxValue(Value::From(thisObject), GetOwnerTypeDescriptor(), L"thisObject"); - Event& eventObject = object->*eventRef; - internal_helper::BoxedEventInvoker::Invoke(eventObject, arguments, typename RemoveCVR::Type()...); - } - - Ptr GetHandlerTypeInternal()override - { - return TypeInfoRetriver>::CreateTypeInfo(); - } - public: - CustomEventInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, Event TClass::* _eventRef) - :EventInfoImpl(_ownerTypeDescriptor, _name) - , eventRef(_eventRef) - { - } - - ~CustomEventInfoImpl() - { - } - - IEventInfo::ICpp* GetCpp()override - { - return nullptr; - } - }; - - template - struct CustomEventFunctionTypeRetriver - { - typedef vint Type; - }; - - template - struct CustomEventFunctionTypeRetriver TClass::*> - { - typedef TEvent Type; - }; -#endif - } - } -} - -#endif - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTORBUILDER_STRUCT.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Reflection - -Interfaces: -***********************************************************************/ - -#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_STRUCT -#define VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_STRUCT - - -namespace vl -{ - namespace reflection - { - namespace description - { - -/*********************************************************************** -DetailTypeInfoRetriver -***********************************************************************/ - - template - struct DetailTypeInfoRetriver - { - static const ITypeInfo::Decorator Decorator=ITypeInfo::TypeDescriptor; - typedef T Type; - typedef T TempValueType; - typedef T& ResultReferenceType; - typedef T ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - return MakePtr(GetTypeDescriptor(), hint); - } -#endif - }; - - template - struct DetailTypeInfoRetriver - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; - typedef typename UpLevelRetriver::Type Type; - typedef T TempValueType; - typedef const T& ResultReferenceType; - typedef const T ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - return TypeInfoRetriver::CreateTypeInfo(); - } -#endif - }; - - template - struct DetailTypeInfoRetriver - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; - typedef typename UpLevelRetriver::Type Type; - typedef T TempValueType; - typedef T& ResultReferenceType; - typedef T ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - return TypeInfoRetriver::CreateTypeInfo(); - } -#endif - }; - - template - struct DetailTypeInfoRetriver - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=ITypeInfo::RawPtr; - typedef typename UpLevelRetriver::Type Type; - typedef T* TempValueType; - typedef T*& ResultReferenceType; - typedef T* ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - return MakePtr(TypeInfoRetriver::CreateTypeInfo()); - } -#endif - }; - - template - struct DetailTypeInfoRetriver, TypeFlags::NonGenericType> - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=ITypeInfo::SharedPtr; - typedef typename UpLevelRetriver::Type Type; - typedef Ptr TempValueType; - typedef Ptr& ResultReferenceType; - typedef Ptr ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - return MakePtr(TypeInfoRetriver::CreateTypeInfo()); - } -#endif - }; - - template - struct DetailTypeInfoRetriver, TypeFlags::NonGenericType> - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=ITypeInfo::Nullable; - typedef typename UpLevelRetriver::Type Type; - typedef Nullable TempValueType; - typedef Nullable& ResultReferenceType; - typedef Nullable ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - return MakePtr(TypeInfoRetriver::CreateTypeInfo()); - } -#endif - }; - - template - struct DetailTypeInfoRetriver - { - typedef DetailTypeInfoRetriver UpLevelRetriver; - - static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; - typedef typename UpLevelRetriver::Type Type; - typedef typename UpLevelRetriver::TempValueType TempValueType; - typedef T& ResultReferenceType; - typedef T ResultNonReferenceType; - -#ifndef VCZH_DEBUG_NO_REFLECTION - static Ptr CreateTypeInfo(TypeInfoHint hint) - { - return TypeInfoRetriver::CreateTypeInfo(); - } -#endif - }; - - template<> - struct TypeInfoRetriver : public TypeInfoRetriver - { - }; - -/*********************************************************************** -ParameterAccessor -***********************************************************************/ - - template - struct ParameterAccessor - { - static Value BoxParameter(const T& object, ITypeDescriptor* typeDescriptor) - { - return BoxValue(object, typeDescriptor); - } - - static void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - result=UnboxValue(value, typeDescriptor, valueName); - } - }; - - template - struct ValueAccessor - { - static Value BoxValue(T* object, ITypeDescriptor* typeDescriptor) - { - return Value::From(object); - } - - static T* UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - if(value.IsNull()) return nullptr; - T* result = nullptr; - if (value.GetRawPtr()) - { - result = value.GetRawPtr()->SafeAggregationCast(); - } - if(!result) - { -#ifndef VCZH_DEBUG_NO_REFLECTION - if(!typeDescriptor) - { - typeDescriptor=GetTypeDescriptor(); - } - throw ArgumentTypeMismtatchException(valueName, typeDescriptor, Value::RawPtr, value); -#else - CHECK_FAIL(L"vl::reflection::description::UnboxValue()#Argument type mismatch."); -#endif - } - return result; - } - }; - - template - struct ValueAccessor, ITypeInfo::SharedPtr> - { - static Value BoxValue(Ptr object, ITypeDescriptor* typeDescriptor) - { - return Value::From(object); - } - - static Ptr UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - if (value.IsNull()) return nullptr; - Ptr result; - if(value.GetValueType()==Value::RawPtr || value.GetValueType()==Value::SharedPtr) - { - result = value.GetRawPtr()->SafeAggregationCast(); - } - if(!result) - { -#ifndef VCZH_DEBUG_NO_REFLECTION - if(!typeDescriptor) - { - typeDescriptor=GetTypeDescriptor(); - } - throw ArgumentTypeMismtatchException(valueName, typeDescriptor, Value::SharedPtr, value); -#else - CHECK_FAIL(L"vl::reflection::description::UnboxValue()#Argument type mismatch."); -#endif - } - return result; - } - }; - - template - struct ValueAccessor, ITypeInfo::Nullable> - { - static Value BoxValue(Nullable object, ITypeDescriptor* typeDescriptor) - { - return object?ValueAccessor::BoxValue(object.Value(), typeDescriptor):Value(); - } - - static Nullable UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - if(value.IsNull()) - { - return Nullable(); - } - else - { - return ValueAccessor::UnboxValue(value, typeDescriptor, valueName); - } - } - }; - - template - struct ValueAccessor - { - static Value BoxValue(const T& object, ITypeDescriptor* typeDescriptor) - { -#ifndef VCZH_DEBUG_NO_REFLECTION - if(!typeDescriptor) - { - typeDescriptor = GetTypeDescriptor::Type>(); - } -#endif - using Type = typename vl::RemoveCVR::Type; - return Value::From(new IValueType::TypedBox(object), typeDescriptor); - } - - static T UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - using Type = typename vl::RemoveCVR::Type; - if (auto unboxedValue = value.GetBoxedValue().Cast>()) - { - return unboxedValue->value; - } - else - { -#ifndef VCZH_DEBUG_NO_REFLECTION - if (!typeDescriptor) - { - typeDescriptor = GetTypeDescriptor::Type>(); - } - throw ArgumentTypeMismtatchException(valueName, typeDescriptor, Value::BoxedValue, value); -#else - CHECK_FAIL(L"vl::reflection::description::UnboxValue()#Argument type mismatch."); -#endif - } - } - }; - - template<> - struct ValueAccessor - { - static Value BoxValue(const Value& object, ITypeDescriptor* typeDescriptor) - { - return object; - } - - static Value UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - return value; - } - }; - - template<> - struct ValueAccessor - { - static Value BoxValue(const VoidValue& object, ITypeDescriptor* typeDescriptor) - { - return Value(); - } - - static VoidValue UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) - { - return VoidValue(); - } - }; - } - } -} - -#endif - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTORMACROS.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Reflection - -Interfaces: -***********************************************************************/ - -#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORMACROS -#define VCZH_REFLECTION_GUITYPEDESCRIPTORMACROS - - -#ifndef VCZH_DEBUG_NO_REFLECTION - -/*********************************************************************** -Macros -***********************************************************************/ - -namespace vl -{ - namespace reflection - { - namespace description - { - template - struct CustomTypeDescriptorSelector{}; - - struct MethodPointerBinaryData - { - typedef collections::Dictionary MethodMap; - - class IIndexer : public virtual IDescriptable - { - public: - virtual void IndexMethodInfo(const MethodPointerBinaryData& data, IMethodInfo* methodInfo) = 0; - virtual IMethodInfo* GetIndexedMethodInfo(const MethodPointerBinaryData& data) = 0; - }; - - vint data[4]; - - static inline vint Compare(const MethodPointerBinaryData& a, const MethodPointerBinaryData& b) - { - { - auto result = a.data[0] - b.data[0]; - if (result != 0) return result; - } - { - auto result = a.data[1] - b.data[1]; - if (result != 0) return result; - } - { - auto result = a.data[2] - b.data[2]; - if (result != 0) return result; - } - { - auto result = a.data[3] - b.data[3]; - if (result != 0) return result; - } - return 0; - } - -#define COMPARE(OPERATOR)\ - inline bool operator OPERATOR(const MethodPointerBinaryData& d)const\ - {\ - return Compare(*this, d) OPERATOR 0;\ - } - - COMPARE(<) - COMPARE(<=) - COMPARE(>) - COMPARE(>=) - COMPARE(==) - COMPARE(!=) -#undef COMPARE - }; - - template - union MethodPointerBinaryDataRetriver - { - T methodPointer; - MethodPointerBinaryData binaryData; - - MethodPointerBinaryDataRetriver(T _methodPointer) - { - memset(&binaryData, 0, sizeof(binaryData)); - methodPointer = _methodPointer; - } - - const MethodPointerBinaryData& GetBinaryData() - { - static_assert(sizeof(T) <= sizeof(MethodPointerBinaryData), "Your C++ compiler is bad!"); - return binaryData; - } - }; - - template - struct MethodPointerBinaryDataRecorder - { - static void RecordMethod(const MethodPointerBinaryData& data, ITypeDescriptor* td, IMethodInfo* methodInfo) - { - } - }; - - template - struct MethodPointerBinaryDataRecorder - { - static void RecordMethod(const MethodPointerBinaryData& data, ITypeDescriptor* td, IMethodInfo* methodInfo) - { - auto impl = dynamic_cast(td); - CHECK_ERROR(impl != nullptr, L"Internal error: RecordMethod can only be called when registering methods."); - impl->IndexMethodInfo(data, methodInfo); - } - }; - - template - using FUNCTIONNAME_AddPointer = T*; - -/*********************************************************************** -Type -***********************************************************************/ - -#define BEGIN_TYPE_INFO_NAMESPACE namespace vl{namespace reflection{namespace description{ -#define END_TYPE_INFO_NAMESPACE }}} -#define ADD_TYPE_INFO(TYPENAME)\ - {\ - Ptr type=new CustomTypeDescriptorSelector::CustomTypeDescriptorImpl();\ - manager->SetTypeDescriptor(TypeInfo::content.typeName, type);\ - } - -/*********************************************************************** -InterfaceProxy -***********************************************************************/ - -#define INTERFACE_PROXY_CTOR_RAWPTR(INTERFACE)\ - static INTERFACE* Create(Ptr proxy)\ - {\ - auto obj = new ValueInterfaceProxy();\ - obj->SetProxy(proxy);\ - return obj;\ - }\ - -#define INTERFACE_PROXY_CTOR_SHAREDPTR(INTERFACE)\ - static Ptr Create(Ptr proxy)\ - {\ - auto obj = new ValueInterfaceProxy();\ - obj->SetProxy(proxy);\ - return obj;\ - }\ - -#define BEGIN_INTERFACE_PROXY_NOPARENT_HEADER(INTERFACE)\ - template<>\ - class ValueInterfaceProxy : public ValueInterfaceImpl\ - {\ - typedef INTERFACE _interface_proxy_InterfaceType;\ - public:\ - -#define BEGIN_INTERFACE_PROXY_NOPARENT_RAWPTR(INTERFACE)\ - BEGIN_INTERFACE_PROXY_NOPARENT_HEADER(INTERFACE)\ - INTERFACE_PROXY_CTOR_RAWPTR(INTERFACE)\ - -#define BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(INTERFACE)\ - BEGIN_INTERFACE_PROXY_NOPARENT_HEADER(INTERFACE)\ - INTERFACE_PROXY_CTOR_SHAREDPTR(INTERFACE)\ - -#define BEGIN_INTERFACE_PROXY_HEADER(INTERFACE, ...)\ - template<>\ - class ValueInterfaceProxy : public ValueInterfaceImpl\ - {\ - typedef INTERFACE _interface_proxy_InterfaceType;\ - public:\ - -#define BEGIN_INTERFACE_PROXY_RAWPTR(INTERFACE, ...)\ - BEGIN_INTERFACE_PROXY_HEADER(INTERFACE, __VA_ARGS__)\ - INTERFACE_PROXY_CTOR_RAWPTR(INTERFACE)\ - -#define BEGIN_INTERFACE_PROXY_SHAREDPTR(INTERFACE, ...)\ - BEGIN_INTERFACE_PROXY_HEADER(INTERFACE, __VA_ARGS__)\ - INTERFACE_PROXY_CTOR_SHAREDPTR(INTERFACE)\ - -#define END_INTERFACE_PROXY(INTERFACE)\ - }; - -/*********************************************************************** -InterfaceProxy::Invoke -***********************************************************************/ - - template - auto MethodTypeTrait(TArgument...)->TReturn(TClass::*)(TArgument...) - { - return nullptr; - } - -#define PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME, ...)\ - static ITypeDescriptor* _interface_proxy_typeDescriptor = nullptr;\ - static IMethodInfo* _interface_proxy_methodInfo = nullptr;\ - if (_interface_proxy_typeDescriptor != static_cast(this)->GetTypeDescriptor())\ - {\ - _interface_proxy_typeDescriptor = static_cast(this)->GetTypeDescriptor();\ - CHECK_ERROR(_interface_proxy_typeDescriptor != nullptr, L"Internal error: The type of this interface has not been registered.");\ - auto impl = dynamic_cast(_interface_proxy_typeDescriptor);\ - CHECK_ERROR(impl != nullptr, L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy.");\ - auto _interface_proxy_method\ - = (decltype(MethodTypeTrait<_interface_proxy_InterfaceType, decltype(METHODNAME(__VA_ARGS__))>(__VA_ARGS__)))\ - &_interface_proxy_InterfaceType::METHODNAME;\ - MethodPointerBinaryDataRetriver binaryData(_interface_proxy_method);\ - _interface_proxy_methodInfo = impl->GetIndexedMethodInfo(binaryData.GetBinaryData());\ - }\ - -#define INVOKE_INTERFACE_PROXY(METHODNAME, ...)\ - PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME, __VA_ARGS__)\ - proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create(collections::From((collections::Array&)(Value_xs(), __VA_ARGS__)))) - -#define INVOKE_INTERFACE_PROXY_NOPARAMS(METHODNAME)\ - PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME)\ - proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create()) - -#define INVOKEGET_INTERFACE_PROXY(METHODNAME, ...)\ - PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME, __VA_ARGS__)\ - return UnboxValue(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create(collections::From((collections::Array&)(Value_xs(), __VA_ARGS__))))) - -#define INVOKEGET_INTERFACE_PROXY_NOPARAMS(METHODNAME)\ - PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME)\ - return UnboxValue(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create())) - -/*********************************************************************** -Enum -***********************************************************************/ - -#define BEGIN_ENUM_ITEM_FLAG(TYPENAME, TDFLAGS)\ - template<>\ - struct CustomTypeDescriptorSelector\ - {\ - public:\ - class CustomTypeDescriptorImpl : public EnumTypeDescriptor\ - {\ - typedef TYPENAME EnumType;\ - public:\ - void LoadInternal()override\ - {\ - EnumTypeDescriptor::LoadInternal();\ - -#define BEGIN_ENUM_ITEM(TYPENAME) BEGIN_ENUM_ITEM_FLAG(TYPENAME, TypeDescriptorFlags::NormalEnum) -#define BEGIN_ENUM_ITEM_MERGABLE(TYPENAME) BEGIN_ENUM_ITEM_FLAG(TYPENAME, TypeDescriptorFlags::FlagEnum) - -#define END_ENUM_ITEM(TYPENAME)\ - }\ - };\ - }; - -#define ENUM_ITEM_NAMESPACE(TYPENAME) typedef TYPENAME EnumItemNamespace; -#define ENUM_ITEM(ITEMNAME) enumType->AddItem(L ## #ITEMNAME, ITEMNAME); -#define ENUM_NAMESPACE_ITEM(ITEMNAME) enumType->AddItem(L ## #ITEMNAME, EnumItemNamespace::ITEMNAME); -#define ENUM_CLASS_ITEM(ITEMNAME) enumType->AddItem(L ## #ITEMNAME, EnumType::ITEMNAME); - -/*********************************************************************** -Struct -***********************************************************************/ - -#define BEGIN_STRUCT_MEMBER_FLAG(TYPENAME, TDFLAGS)\ - template<>\ - struct CustomTypeDescriptorSelector\ - {\ - public:\ - class CustomTypeDescriptorImpl : public StructTypeDescriptor\ - {\ - typedef TYPENAME StructType;\ - protected:\ - void LoadInternal()override\ - { - -#define BEGIN_STRUCT_MEMBER(TYPENAME)\ - BEGIN_STRUCT_MEMBER_FLAG(TYPENAME, TypeDescriptorFlags::Struct) - -#define END_STRUCT_MEMBER(TYPENAME)\ - }\ - };\ - }; - -#define STRUCT_MEMBER(FIELDNAME)\ - fields.Add(L ## #FIELDNAME, new StructFieldInfoFIELDNAME)>(this, &StructType::FIELDNAME, L ## #FIELDNAME)); - -/*********************************************************************** -Class -***********************************************************************/ - -#define BEGIN_CLASS_MEMBER(TYPENAME)\ - template<>\ - struct CustomTypeDescriptorSelector\ - {\ - public:\ - class CustomTypeDescriptorImpl : public TypeDescriptorImpl\ - {\ - typedef TYPENAME ClassType;\ - static const TypeDescriptorFlags TDFlags = TypeDescriptorFlags::Class;\ - public:\ - CustomTypeDescriptorImpl()\ - :TypeDescriptorImpl(TDFlags, &TypeInfo::content)\ - {\ - Description::SetAssociatedTypeDescroptor(this);\ - }\ - ~CustomTypeDescriptorImpl()\ - {\ - Description::SetAssociatedTypeDescroptor(0);\ - }\ - protected:\ - bool IsAggregatable()override\ - {\ - return AcceptValue>::YesNoType>::Result;\ - }\ - void LoadInternal()override\ - { - -#define CLASS_MEMBER_BASE(TYPENAME)\ - AddBaseType(description::GetTypeDescriptor()); - -#define END_CLASS_MEMBER(TYPENAME)\ - if (GetBaseTypeDescriptorCount() == 0) CLASS_MEMBER_BASE(DescriptableObject)\ - }\ - };\ - }; - -/*********************************************************************** -Interface -***********************************************************************/ - -#define BEGIN_INTERFACE_MEMBER_NOPROXY_FLAG(TYPENAME, TDFLAGS)\ - template<>\ - struct CustomTypeDescriptorSelector\ - {\ - public:\ - class CustomTypeDescriptorImpl : public TypeDescriptorImpl, public MethodPointerBinaryData::IIndexer\ - {\ - typedef TYPENAME ClassType;\ - static const TypeDescriptorFlags TDFlags = TDFLAGS;\ - MethodPointerBinaryData::MethodMap methodsForProxy;\ - public:\ - CustomTypeDescriptorImpl()\ - :TypeDescriptorImpl(TDFLAGS, &TypeInfo::content)\ - {\ - Description::SetAssociatedTypeDescroptor(this);\ - }\ - ~CustomTypeDescriptorImpl()\ - {\ - Description::SetAssociatedTypeDescroptor(0);\ - }\ - void IndexMethodInfo(const MethodPointerBinaryData& data, IMethodInfo* methodInfo)override\ - {\ - methodsForProxy.Add(data, methodInfo);\ - }\ - IMethodInfo* GetIndexedMethodInfo(const MethodPointerBinaryData& data)override\ - {\ - Load();\ - return methodsForProxy[data];\ - }\ - protected:\ - void LoadInternal()override\ - { - -#define BEGIN_INTERFACE_MEMBER_NOPROXY(TYPENAME)\ - BEGIN_INTERFACE_MEMBER_NOPROXY_FLAG(TYPENAME, TypeDescriptorFlags::Interface) - -#define BEGIN_INTERFACE_MEMBER(TYPENAME)\ - BEGIN_INTERFACE_MEMBER_NOPROXY(TYPENAME)\ - CLASS_MEMBER_EXTERNALCTOR(decltype(ValueInterfaceProxy::Create(nullptr))(Ptr), { L"proxy" }, vl::reflection::description::ValueInterfaceProxy::Create) - -#define END_INTERFACE_MEMBER(TYPENAME)\ - if (GetBaseTypeDescriptorCount() == 0 && TDFlags == TypeDescriptorFlags::Interface) CLASS_MEMBER_BASE(IDescriptable)\ - }\ - };\ - }; - -/*********************************************************************** -Field -***********************************************************************/ - -#define CLASS_MEMBER_FIELD(FIELDNAME)\ - AddProperty(\ - new CustomFieldInfoImpl<\ - ClassType,\ - decltype(((ClassType*)0)->FIELDNAME)\ - >(this, L ## #FIELDNAME, &ClassType::FIELDNAME)\ - ); - -/*********************************************************************** -Constructor -***********************************************************************/ - -#define NO_PARAMETER {L""} -#define PROTECT_PARAMETERS(...) __VA_ARGS__ - -#define CLASS_MEMBER_CONSTRUCTOR(FUNCTIONTYPE, PARAMETERNAMES)\ - {\ - const wchar_t* parameterNames[]=PARAMETERNAMES;\ - AddConstructor(new CustomConstructorInfoImpl(parameterNames));\ - } - -#define CLASS_MEMBER_EXTERNALCTOR_TEMPLATE(FUNCTIONTYPE, PARAMETERNAMES, SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ - {\ - const wchar_t* parameterNames[]=PARAMETERNAMES;\ - AddConstructor(\ - new CustomStaticMethodInfoImpl(parameterNames, SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ - );\ - } - -#define CLASS_MEMBER_EXTERNALCTOR(FUNCTIONTYPE, PARAMETERNAMES, SOURCE)\ - CLASS_MEMBER_EXTERNALCTOR_TEMPLATE(FUNCTIONTYPE, PROTECT_PARAMETERS(PARAMETERNAMES), (FUNCTIONNAME_AddPointer)&::SOURCE, L"::" L ## #SOURCE L"($Arguments)", L"::vl::Func<$Func>(&::" L ## #SOURCE L")") - -/*********************************************************************** -Method -***********************************************************************/ - -#define CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE, SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ - {\ - const wchar_t* parameterNames[]=PARAMETERNAMES;\ - AddMethod(\ - L ## #FUNCTIONNAME,\ - new CustomExternalMethodInfoImpl<\ - ClassType,\ - vl::function_lambda::LambdaRetriveType::FunctionType\ - >(parameterNames, SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ - );\ - } - -#define CLASS_MEMBER_EXTERNALMETHOD(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE, SOURCE)\ - CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), FUNCTIONTYPE, &::SOURCE, L"::" L ## #SOURCE L"($This, $Arguments)", L"::vl::Func<$Func>($This, &::" L ## #SOURCE L")") - -#define CLASS_MEMBER_METHOD_OVERLOAD_RENAME_TEMPLATE(EXPECTEDNAME, FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE, INVOKETEMPLATE, CLOSURETEMPLATE)\ - {\ - const wchar_t* parameterNames[]=PARAMETERNAMES;\ - auto methodInfo = new CustomMethodInfoImpl<\ - ClassType,\ - vl::function_lambda::LambdaRetriveType::FunctionType\ - >\ - (parameterNames, (FUNCTIONTYPE)&ClassType::FUNCTIONNAME, INVOKETEMPLATE, CLOSURETEMPLATE);\ - AddMethod(\ - L ## #EXPECTEDNAME,\ - methodInfo\ - );\ - MethodPointerBinaryDataRetriver binaryDataRetriver(&ClassType::FUNCTIONNAME);\ - MethodPointerBinaryDataRecorder::RecordMethod(binaryDataRetriver.GetBinaryData(), this, methodInfo);\ - } - -#define CLASS_MEMBER_METHOD_OVERLOAD_RENAME(EXPECTEDNAME, FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE)\ - CLASS_MEMBER_METHOD_OVERLOAD_RENAME_TEMPLATE(EXPECTEDNAME, FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), FUNCTIONTYPE, L"$This->" L ## #FUNCTIONNAME L"($Arguments)", L"::vl::Func<$Func>($This, &$Type::" L ## #FUNCTIONNAME L")") - -#define CLASS_MEMBER_METHOD_OVERLOAD(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE)\ - CLASS_MEMBER_METHOD_OVERLOAD_RENAME_TEMPLATE(FUNCTIONNAME, FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), FUNCTIONTYPE, nullptr, nullptr) - -#define CLASS_MEMBER_METHOD_RENAME(EXPECTEDNAME, FUNCTIONNAME, PARAMETERNAMES)\ - CLASS_MEMBER_METHOD_OVERLOAD_RENAME(EXPECTEDNAME, FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), decltype(&ClassType::FUNCTIONNAME)) - -#define CLASS_MEMBER_METHOD(FUNCTIONNAME, PARAMETERNAMES)\ - CLASS_MEMBER_METHOD_OVERLOAD(FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), decltype(&ClassType::FUNCTIONNAME)) - -/*********************************************************************** -Static Method -***********************************************************************/ - -#define CLASS_MEMBER_STATIC_EXTERNALMETHOD_TEMPLATE(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE, SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ - {\ - const wchar_t* parameterNames[]=PARAMETERNAMES;\ - AddMethod(\ - L ## #FUNCTIONNAME,\ - new CustomStaticMethodInfoImpl<\ - vl::function_lambda::FunctionObjectRetriveType::FunctionType\ - >(parameterNames, (FUNCTIONTYPE)SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ - );\ - } - -#define CLASS_MEMBER_STATIC_EXTERNALMETHOD(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE, SOURCE)\ - CLASS_MEMBER_STATIC_EXTERNALMETHOD_TEMPLATE(FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), FUNCTIONTYPE, &::SOURCE, L"::" L ## #SOURCE L"($Arguments)", L"::vl::Func<$Func>(&::" L ## #SOURCE L")") - -#define CLASS_MEMBER_STATIC_METHOD_OVERLOAD(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE)\ - CLASS_MEMBER_STATIC_EXTERNALMETHOD_TEMPLATE(FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), FUNCTIONTYPE, &ClassType::FUNCTIONNAME, nullptr, nullptr) - -#define CLASS_MEMBER_STATIC_METHOD(FUNCTIONNAME, PARAMETERNAMES)\ - CLASS_MEMBER_STATIC_METHOD_OVERLOAD(FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), decltype(&ClassType::FUNCTIONNAME)) - -/*********************************************************************** -Event -***********************************************************************/ - -#define CLASS_MEMBER_EVENT(EVENTNAME)\ - AddEvent(\ - new CustomEventInfoImpl<\ - ClassType,\ - CustomEventFunctionTypeRetriver::Type\ - >(this, L ## #EVENTNAME, &ClassType::EVENTNAME)\ - ); - -/*********************************************************************** -Property -***********************************************************************/ - -#define CLASS_MEMBER_PROPERTY_READONLY(PROPERTYNAME, GETTER)\ - AddProperty(\ - new PropertyInfoImpl(\ - this,\ - L ## #PROPERTYNAME,\ - dynamic_cast(GetMethodGroupByName(L ## #GETTER, true)->GetMethod(0)),\ - nullptr,\ - nullptr\ - )\ - ); - -#define CLASS_MEMBER_PROPERTY(PROPERTYNAME, GETTER, SETTER)\ - AddProperty(\ - new PropertyInfoImpl(\ - this,\ - L ## #PROPERTYNAME,\ - dynamic_cast(GetMethodGroupByName(L ## #GETTER, true)->GetMethod(0)),\ - dynamic_cast(GetMethodGroupByName(L ## #SETTER, true)->GetMethod(0)),\ - nullptr\ - )\ - ); - -#define CLASS_MEMBER_PROPERTY_EVENT(PROPERTYNAME, GETTER, SETTER, EVENT)\ - AddProperty(\ - new PropertyInfoImpl(\ - this,\ - L ## #PROPERTYNAME,\ - dynamic_cast(GetMethodGroupByName(L ## #GETTER, true)->GetMethod(0)),\ - dynamic_cast(GetMethodGroupByName(L ## #SETTER, true)->GetMethod(0)),\ - dynamic_cast(GetEventByName(L ## #EVENT, true))\ - )\ - ); - -#define CLASS_MEMBER_PROPERTY_EVENT_READONLY(PROPERTYNAME, GETTER, EVENT)\ - AddProperty(\ - new PropertyInfoImpl(\ - this,\ - L ## #PROPERTYNAME,\ - dynamic_cast(GetMethodGroupByName(L ## #GETTER, true)->GetMethod(0)),\ - nullptr,\ - dynamic_cast(GetEventByName(L ## #EVENT, true))\ - )\ - ); - -#define CLASS_MEMBER_PROPERTY_REFERENCETEMPLATE(PROPERTYNAME, GETTER, SETTER, REFERENCETEMPLATE)\ - AddProperty(\ - new PropertyInfoImpl_StaticCpp(\ - this,\ - L ## #PROPERTYNAME,\ - dynamic_cast(GetMethodGroupByName(L ## #GETTER, true)->GetMethod(0)),\ - dynamic_cast(GetMethodGroupByName(L ## #SETTER, true)->GetMethod(0)),\ - nullptr,\ - WString(REFERENCETEMPLATE, false)\ - )\ - ); - -#define CLASS_MEMBER_PROPERTY_READONLY_FAST(PROPERTYNAME)\ - CLASS_MEMBER_METHOD(Get##PROPERTYNAME, NO_PARAMETER)\ - CLASS_MEMBER_PROPERTY_READONLY(PROPERTYNAME, Get##PROPERTYNAME)\ - -#define CLASS_MEMBER_PROPERTY_FAST(PROPERTYNAME)\ - CLASS_MEMBER_METHOD(Get##PROPERTYNAME, NO_PARAMETER)\ - CLASS_MEMBER_METHOD(Set##PROPERTYNAME, {L"value"})\ - CLASS_MEMBER_PROPERTY(PROPERTYNAME, Get##PROPERTYNAME, Set##PROPERTYNAME)\ - -#define CLASS_MEMBER_PROPERTY_EVENT_FAST(PROPERTYNAME, EVENTNAME)\ - CLASS_MEMBER_METHOD(Get##PROPERTYNAME, NO_PARAMETER)\ - CLASS_MEMBER_METHOD(Set##PROPERTYNAME, {L"value"})\ - CLASS_MEMBER_PROPERTY_EVENT(PROPERTYNAME, Get##PROPERTYNAME, Set##PROPERTYNAME, EVENTNAME)\ - -#define CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(PROPERTYNAME, EVENTNAME)\ - CLASS_MEMBER_METHOD(Get##PROPERTYNAME, NO_PARAMETER)\ - CLASS_MEMBER_PROPERTY_EVENT_READONLY(PROPERTYNAME, Get##PROPERTYNAME, EVENTNAME)\ - - } - } -} - -#endif -#endif - - -/*********************************************************************** -.\REFLECTION\GUITYPEDESCRIPTORREFLECTION.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Reflection - -Interfaces: -***********************************************************************/ - -#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORREFLECTION -#define VCZH_REFLECTION_GUITYPEDESCRIPTORREFLECTION - - -namespace vl -{ - namespace reflection - { - namespace description - { - -/*********************************************************************** -Predefined Types -***********************************************************************/ - -#define REFLECTION_PREDEFINED_PRIMITIVE_TYPES(F)\ - F(vuint8_t) \ - F(vuint16_t) \ - F(vuint32_t) \ - F(vuint64_t) \ - F(vint8_t) \ - F(vint16_t) \ - F(vint32_t) \ - F(vint64_t) \ - F(float) \ - F(double) \ - F(bool) \ - F(wchar_t) \ - F(WString) \ - F(Locale) \ - -#ifndef VCZH_DEBUG_NO_REFLECTION - -#define REFLECTION_PREDEFINED_COMPLEX_TYPES(F, VOID_TYPE)\ - F(VOID_TYPE) \ - F(VoidValue) \ - F(IDescriptable) \ - F(DescriptableObject) \ - F(DateTime) \ - F(IValueEnumerator) \ - F(IValueEnumerable) \ - F(IValueReadonlyList) \ - F(IValueList) \ - F(IValueObservableList) \ - F(IValueReadonlyDictionary) \ - F(IValueDictionary) \ - F(IValueInterfaceProxy) \ - F(IValueFunctionProxy) \ - F(IValueSubscription) \ - F(IValueCallStack) \ - F(IValueException) \ - F(IBoxedValue) \ - F(IBoxedValue::CompareResult) \ - F(IValueType) \ - F(IEnumType) \ - F(ISerializableType) \ - F(ITypeInfo) \ - F(ITypeInfo::Decorator) \ - F(IMemberInfo) \ - F(IEventHandler) \ - F(IEventInfo) \ - F(IPropertyInfo) \ - F(IParameterInfo) \ - F(IMethodInfo) \ - F(IMethodGroupInfo) \ - F(TypeDescriptorFlags) \ - F(ITypeDescriptor) \ - - DECL_TYPE_INFO(Value) - REFLECTION_PREDEFINED_PRIMITIVE_TYPES(DECL_TYPE_INFO) - REFLECTION_PREDEFINED_COMPLEX_TYPES(DECL_TYPE_INFO, void) - -#endif - -#define DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(TYPENAME)\ - template<>\ - struct TypedValueSerializerProvider\ - {\ - static TYPENAME GetDefaultValue();\ - static bool Serialize(const TYPENAME& input, WString& output);\ - static bool Deserialize(const WString& input, TYPENAME& output);\ - static IBoxedValue::CompareResult Compare(const TYPENAME& a, const TYPENAME& b);\ - };\ - - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vuint8_t) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vuint16_t) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vuint32_t) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vuint64_t) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vint8_t) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vint16_t) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vint32_t) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vint64_t) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(float) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(double) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(bool) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(wchar_t) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(WString) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(Locale) - DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(DateTime) - -#undef DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER - -/*********************************************************************** -Interface Implementation Proxy (Implement) -***********************************************************************/ - -#ifndef VCZH_DEBUG_NO_REFLECTION - -#pragma warning(push) -#pragma warning(disable:4250) - BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueEnumerator) - Value GetCurrent()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetCurrent); - } - - vint GetIndex()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetIndex); - } - - bool Next()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(Next); - } - END_INTERFACE_PROXY(IValueEnumerator) - - BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueEnumerable) - Ptr CreateEnumerator()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(CreateEnumerator); - } - END_INTERFACE_PROXY(IValueEnumerable) - - BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueReadonlyList, IValueEnumerable) - vint GetCount()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetCount); - } - - Value Get(vint index)override - { - INVOKEGET_INTERFACE_PROXY(Get, index); - } - - bool Contains(const Value& value)override - { - INVOKEGET_INTERFACE_PROXY(Contains, value); - } - - vint IndexOf(const Value& value)override - { - INVOKEGET_INTERFACE_PROXY(IndexOf, value); - } - END_INTERFACE_PROXY(IValueReadonlyList) - - BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueList, IValueReadonlyList) - void Set(vint index, const Value& value)override - { - INVOKE_INTERFACE_PROXY(Set, index, value); - } - - vint Add(const Value& value)override - { - INVOKEGET_INTERFACE_PROXY(Add, value); - } - - vint Insert(vint index, const Value& value)override - { - INVOKEGET_INTERFACE_PROXY(Insert, index, value); - } - - bool Remove(const Value& value)override - { - INVOKEGET_INTERFACE_PROXY(Remove, value); - } - - bool RemoveAt(vint index)override - { - INVOKEGET_INTERFACE_PROXY(RemoveAt, index); - } - - void Clear()override - { - INVOKE_INTERFACE_PROXY_NOPARAMS(Clear); - } - END_INTERFACE_PROXY(IValueList) - - BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueObservableList, IValueList) - END_INTERFACE_PROXY(IValueObservableList) - - BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueReadonlyDictionary) - Ptr GetKeys()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetKeys); - } - - Ptr GetValues()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetValues); - } - - vint GetCount()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetCount); - } - - Value Get(const Value& key)override - { - INVOKEGET_INTERFACE_PROXY(Get, key); - } - END_INTERFACE_PROXY(IValueReadonlyDictionary) - - BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueDictionary, IValueReadonlyDictionary) - void Set(const Value& key, const Value& value)override - { - INVOKE_INTERFACE_PROXY(Set, key, value); - } - - bool Remove(const Value& key)override - { - INVOKEGET_INTERFACE_PROXY(Remove, key); - } - - void Clear()override - { - INVOKE_INTERFACE_PROXY_NOPARAMS(Clear); - } - END_INTERFACE_PROXY(IValueDictionary) - - BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueSubscription) - bool Open()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(Open); - } - - bool Update()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(Update); - } - - bool Close()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(Close); - } - END_INTERFACE_PROXY(IValueSubscription) - -#pragma warning(pop) - -#endif - -/*********************************************************************** -Helper Functions -***********************************************************************/ - - extern vint ITypeDescriptor_GetTypeDescriptorCount(); - extern ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(vint index); - extern ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const WString& name); - extern ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const Value& value); - -/*********************************************************************** -LoadPredefinedTypes -***********************************************************************/ - - extern bool LoadPredefinedTypes(); - } - } -} - -#endif - - -/*********************************************************************** -.\PARSING\PARSINGDEFINITIONS.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parsing::Definitions - -Classes: -***********************************************************************/ - -#ifndef VCZH_PARSING_PARSINGDEFINITIONS -#define VCZH_PARSING_PARSINGDEFINITIONS - - -namespace vl -{ - namespace parsing - { - namespace definitions - { - -/*********************************************************************** -Attributes -***********************************************************************/ - - class ParsingDefinitionAttribute : public ParsingTreeCustomBase - { - public: - WString name; - collections::List arguments; - }; - - class ParsingDefinitionBase : public ParsingTreeCustomBase - { - typedef collections::List> AttributeList; - public: - AttributeList attributes; - }; - -/*********************************************************************** -Type -***********************************************************************/ - - class ParsingDefinitionPrimitiveType; - class ParsingDefinitionTokenType; - class ParsingDefinitionSubType; - class ParsingDefinitionArrayType; - - class ParsingDefinitionType : public ParsingTreeCustomBase - { - public: - class IVisitor : public Interface - { - public: - virtual void Visit(ParsingDefinitionPrimitiveType* node)=0; - virtual void Visit(ParsingDefinitionTokenType* node)=0; - virtual void Visit(ParsingDefinitionSubType* node)=0; - virtual void Visit(ParsingDefinitionArrayType* node)=0; - }; - - virtual void Accept(IVisitor* visitor)=0; - }; - - class ParsingDefinitionPrimitiveType : public ParsingDefinitionType - { - public: - WString name; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionTokenType : public ParsingDefinitionType - { - public: - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionSubType : public ParsingDefinitionType - { - public: - Ptr parentType; - WString subTypeName; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionArrayType : public ParsingDefinitionType - { - public: - Ptr elementType; - - void Accept(IVisitor* visitor)override; - }; - -/*********************************************************************** -Type Definition -***********************************************************************/ - - class ParsingDefinitionClassMemberDefinition; - class ParsingDefinitionClassDefinition; - class ParsingDefinitionEnumMemberDefinition; - class ParsingDefinitionEnumDefinition; - - class ParsingDefinitionTypeDefinition : public ParsingDefinitionBase - { - public: - class IVisitor : public Interface - { - public: - virtual void Visit(ParsingDefinitionClassMemberDefinition* node)=0; - virtual void Visit(ParsingDefinitionClassDefinition* node)=0; - virtual void Visit(ParsingDefinitionEnumMemberDefinition* node)=0; - virtual void Visit(ParsingDefinitionEnumDefinition* node)=0; - }; - - virtual void Accept(IVisitor* visitor)=0; - public: - WString name; - }; - - class ParsingDefinitionClassMemberDefinition : public ParsingDefinitionTypeDefinition - { - public: - Ptr type; - WString unescapingFunction; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionClassDefinition : public ParsingDefinitionTypeDefinition - { - public: - typedef collections::List> MemberList; - typedef collections::List> TypeList; - - Ptr ambiguousType; - Ptr parentType; - MemberList members; - TypeList subTypes; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionEnumMemberDefinition : public ParsingDefinitionTypeDefinition - { - public: - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionEnumDefinition : public ParsingDefinitionTypeDefinition - { - public: - typedef collections::List> MemberList; - - MemberList members; - - void Accept(IVisitor* visitor)override; - }; - -/*********************************************************************** -Grammar -***********************************************************************/ - - class ParsingDefinitionPrimitiveGrammar; - class ParsingDefinitionTextGrammar; - class ParsingDefinitionSequenceGrammar; - class ParsingDefinitionAlternativeGrammar; - class ParsingDefinitionLoopGrammar; - class ParsingDefinitionOptionalGrammar; - class ParsingDefinitionCreateGrammar; - class ParsingDefinitionAssignGrammar; - class ParsingDefinitionUseGrammar; - class ParsingDefinitionSetterGrammar; - - class ParsingDefinitionGrammar : public ParsingTreeCustomBase - { - public: - class IVisitor : public Interface - { - public: - virtual void Visit(ParsingDefinitionPrimitiveGrammar* node)=0; - virtual void Visit(ParsingDefinitionTextGrammar* node)=0; - virtual void Visit(ParsingDefinitionSequenceGrammar* node)=0; - virtual void Visit(ParsingDefinitionAlternativeGrammar* node)=0; - virtual void Visit(ParsingDefinitionLoopGrammar* node)=0; - virtual void Visit(ParsingDefinitionOptionalGrammar* node)=0; - virtual void Visit(ParsingDefinitionCreateGrammar* node)=0; - virtual void Visit(ParsingDefinitionAssignGrammar* node)=0; - virtual void Visit(ParsingDefinitionUseGrammar* node)=0; - virtual void Visit(ParsingDefinitionSetterGrammar* node)=0; - }; - - virtual void Accept(IVisitor* visitor)=0; - }; - - class ParsingDefinitionPrimitiveGrammar : public ParsingDefinitionGrammar - { - public: - WString name; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionTextGrammar : public ParsingDefinitionGrammar - { - public: - WString text; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionSequenceGrammar : public ParsingDefinitionGrammar - { - public: - Ptr first; - Ptr second; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionAlternativeGrammar : public ParsingDefinitionGrammar - { - public: - Ptr first; - Ptr second; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionLoopGrammar : public ParsingDefinitionGrammar - { - public: - Ptr grammar; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionOptionalGrammar : public ParsingDefinitionGrammar - { - public: - Ptr grammar; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionCreateGrammar : public ParsingDefinitionGrammar - { - public: - Ptr grammar; - Ptr type; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionAssignGrammar : public ParsingDefinitionGrammar - { - public: - Ptr grammar; - WString memberName; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionUseGrammar : public ParsingDefinitionGrammar - { - public: - Ptr grammar; - - void Accept(IVisitor* visitor)override; - }; - - class ParsingDefinitionSetterGrammar : public ParsingDefinitionGrammar - { - public: - Ptr grammar; - WString memberName; - WString value; - - void Accept(IVisitor* visitor)override; - }; - -/*********************************************************************** -Token and Rule -***********************************************************************/ - - class ParsingDefinitionTokenDefinition : public ParsingDefinitionBase - { - public: - WString name; - WString regex; - bool discard; - }; - - class ParsingDefinitionRuleDefinition : public ParsingDefinitionBase - { - public: - WString name; - Ptr type; - collections::List> grammars; - }; - - class ParsingDefinition : public ParsingTreeCustomBase - { - public: - collections::List> types; - collections::List> tokens; - collections::List> rules; - }; - -/*********************************************************************** -Attribute Writer -***********************************************************************/ - - class ParsingDefinitionAttributeWriter : public Object - { - friend ParsingDefinitionAttributeWriter Attribute(const WString& name); - protected: - Ptr attribute; - - ParsingDefinitionAttributeWriter(const WString& name); - public: - ParsingDefinitionAttributeWriter(const ParsingDefinitionAttributeWriter& attributeWriter); - - ParsingDefinitionAttributeWriter& Argument(const WString& argument); - Ptr Attribute()const; - }; - - extern ParsingDefinitionAttributeWriter Attribute(const WString& name); - -/*********************************************************************** -Type Writer -***********************************************************************/ - - class ParsingDefinitionTypeWriter : public Object - { - friend ParsingDefinitionTypeWriter Type(const WString& name); - friend ParsingDefinitionTypeWriter TokenType(); - protected: - Ptr type; - - ParsingDefinitionTypeWriter(Ptr internalType); - ParsingDefinitionTypeWriter(const WString& name); - public: - ParsingDefinitionTypeWriter(const ParsingDefinitionTypeWriter& typeWriter); - - ParsingDefinitionTypeWriter Sub(const WString& subTypeName)const; - ParsingDefinitionTypeWriter Array()const; - Ptr Type()const; - }; - - extern ParsingDefinitionTypeWriter Type(const WString& name); - extern ParsingDefinitionTypeWriter TokenType(); - -/*********************************************************************** -Type Definition Writer -***********************************************************************/ - - class ParsingDefinitionTypeDefinitionWriter : public Object - { - public: - virtual Ptr Definition()const=0; - }; - - class ParsingDefinitionClassDefinitionWriter : public ParsingDefinitionTypeDefinitionWriter - { - protected: - Ptr currentDefinition; - Ptr definition; - - public: - ParsingDefinitionClassDefinitionWriter(const WString& name); - ParsingDefinitionClassDefinitionWriter(const WString& name, const ParsingDefinitionTypeWriter& parentType); - - ParsingDefinitionClassDefinitionWriter& AmbiguousType(const ParsingDefinitionTypeWriter& ambiguousType); - ParsingDefinitionClassDefinitionWriter& Member(const WString& name, const ParsingDefinitionTypeWriter& type, const WString& unescapingFunction=L""); - ParsingDefinitionClassDefinitionWriter& SubType(const ParsingDefinitionTypeDefinitionWriter& type); - ParsingDefinitionClassDefinitionWriter& Attribute(const ParsingDefinitionAttributeWriter& attribute); - - Ptr Definition()const override; - }; - - extern ParsingDefinitionClassDefinitionWriter Class(const WString& name); - extern ParsingDefinitionClassDefinitionWriter Class(const WString& name, const ParsingDefinitionTypeWriter& parentType); - - class ParsingDefinitionEnumDefinitionWriter : public ParsingDefinitionTypeDefinitionWriter - { - protected: - Ptr currentDefinition; - Ptr definition; - - public: - ParsingDefinitionEnumDefinitionWriter(const WString& name); - - ParsingDefinitionEnumDefinitionWriter& Member(const WString& name); - ParsingDefinitionEnumDefinitionWriter& Attribute(const ParsingDefinitionAttributeWriter& attribute); - - Ptr Definition()const override; - }; - - extern ParsingDefinitionEnumDefinitionWriter Enum(const WString& name); - -/*********************************************************************** -Grammar Writer -***********************************************************************/ - - class ParsingDefinitionGrammarWriter : public Object - { - friend ParsingDefinitionGrammarWriter Rule(const WString& name); - friend ParsingDefinitionGrammarWriter Text(const WString& name); - friend ParsingDefinitionGrammarWriter Opt(const ParsingDefinitionGrammarWriter& writer); - protected: - Ptr grammar; - - ParsingDefinitionGrammarWriter(Ptr internalGrammar); - public: - ParsingDefinitionGrammarWriter(const ParsingDefinitionGrammarWriter& grammarWriter); - - ParsingDefinitionGrammarWriter operator+(const ParsingDefinitionGrammarWriter& next)const; - ParsingDefinitionGrammarWriter operator|(const ParsingDefinitionGrammarWriter& next)const; - ParsingDefinitionGrammarWriter operator*()const; - ParsingDefinitionGrammarWriter As(const ParsingDefinitionTypeWriter& type)const; - ParsingDefinitionGrammarWriter operator[](const WString& memberName)const; - ParsingDefinitionGrammarWriter operator!()const; - ParsingDefinitionGrammarWriter Set(const WString& memberName, const WString& value)const; - - Ptr Grammar()const; - }; - - extern ParsingDefinitionGrammarWriter Rule(const WString& name); - extern ParsingDefinitionGrammarWriter Text(const WString& text); - extern ParsingDefinitionGrammarWriter Opt(const ParsingDefinitionGrammarWriter& writer); - -/*********************************************************************** -Token and Rule Writer -***********************************************************************/ - - class ParsingDefinitionWriter; - - class ParsingDefinitionTokenDefinitionWriter : public Object - { - protected: - Ptr token; - ParsingDefinitionWriter& owner; - public: - ParsingDefinitionTokenDefinitionWriter(ParsingDefinitionWriter& _owner, Ptr _token); - - ParsingDefinitionTokenDefinitionWriter& Attribute(const ParsingDefinitionAttributeWriter& attribute); - ParsingDefinitionWriter& EndToken(); - }; - - class ParsingDefinitionRuleDefinitionWriter : public Object - { - protected: - Ptr rule; - ParsingDefinitionWriter& owner; - public: - ParsingDefinitionRuleDefinitionWriter(ParsingDefinitionWriter& _owner, Ptr _rule); - - ParsingDefinitionRuleDefinitionWriter& Imply(const ParsingDefinitionGrammarWriter& grammar); - ParsingDefinitionRuleDefinitionWriter& Attribute(const ParsingDefinitionAttributeWriter& attribute); - ParsingDefinitionWriter& EndRule(); - }; - - class ParsingDefinitionWriter : public Object - { - protected: - Ptr definition; - - public: - ParsingDefinitionWriter(); - - ParsingDefinitionWriter& Type(const ParsingDefinitionTypeDefinitionWriter& type); - ParsingDefinitionWriter& Token(const WString& name, const WString& regex); - ParsingDefinitionTokenDefinitionWriter TokenAtt(const WString& name, const WString& regex); - ParsingDefinitionWriter& Discard(const WString& name, const WString& regex); - ParsingDefinitionRuleDefinitionWriter Rule(const WString& name, const ParsingDefinitionTypeWriter& type); - - Ptr Definition()const; - }; - -/*********************************************************************** -Helper Functions -***********************************************************************/ - - extern WString TypeToString(ParsingDefinitionType* type); - extern WString GrammarToString(ParsingDefinitionGrammar* grammar); - extern WString GrammarStateToString(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode); - extern ParsingDefinitionGrammar* FindAppropriateGrammarState(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode); - extern void Log(Ptr definition, stream::TextWriter& writer); - extern WString DeserializeString(const WString& value); - extern WString SerializeString(const WString& value); - -/*********************************************************************** -Bootstrap -***********************************************************************/ - - extern Ptr CreateParserDefinition(); - extern Ptr DeserializeDefinition(Ptr node); - } - } -} - -#endif - -/*********************************************************************** -.\PARSING\PARSINGANALYZER.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parsing::Analyzing - -Classes: -***********************************************************************/ - -#ifndef VCZH_PARSING_PARSINGANALYZER -#define VCZH_PARSING_PARSINGANALYZER - - -namespace vl -{ - namespace parsing - { - namespace analyzing - { - -/*********************************************************************** -DefinitionTypeScopePair -***********************************************************************/ - - class ParsingSymbol; - class ParsingSymbolManager; - - struct DefinitionTypeScopePair - { - definitions::ParsingDefinitionType* type; - ParsingSymbol* scope; - - DefinitionTypeScopePair() - { - } - - DefinitionTypeScopePair(definitions::ParsingDefinitionType* _type, ParsingSymbol* _scope) - :type(_type) - ,scope(_scope) - { - } - - vint Compare(const DefinitionTypeScopePair& pair)const - { - if(typepair.type) return 1; - if(scopepair.scope) return 1; - return 0; - } - - bool operator== (const DefinitionTypeScopePair& pair)const {return Compare(pair)==0;} - bool operator!= (const DefinitionTypeScopePair& pair)const {return Compare(pair)!=0;} - bool operator> (const DefinitionTypeScopePair& pair)const {return Compare(pair)>0;} - bool operator>= (const DefinitionTypeScopePair& pair)const {return Compare(pair)>=0;} - bool operator< (const DefinitionTypeScopePair& pair)const {return Compare(pair)<0;} - bool operator<= (const DefinitionTypeScopePair& pair)const {return Compare(pair)<=0;} - }; - -/*********************************************************************** -ParsingSymbol Management -***********************************************************************/ - - class ParsingSymbol : public Object - { - friend class ParsingSymbolManager; - - typedef collections::Dictionary ParsingSymbolMap; - typedef collections::List ParsingSymbolList; - public: - enum SymbolType - { - Global, - EnumType, - ClassType, // descriptor == base type - ArrayType, // descriptor == element type - TokenType, - EnumItem, // descriptor == parent - ClassField, // descriptor == field type - TokenDef, // descriptor == token type - RuleDef, // descriptor == rule type - }; - - protected: - ParsingSymbolManager* manager; - SymbolType type; - WString name; - ParsingSymbol* descriptorSymbol; - WString descriptorString; - ParsingSymbol* parentSymbol; - ParsingSymbol* arrayTypeSymbol; - ParsingSymbolList subSymbolList; - ParsingSymbolMap subSymbolMap; - - bool AddSubSymbol(ParsingSymbol* subSymbol); - - ParsingSymbol(ParsingSymbolManager* _manager, SymbolType _type, const WString& _name, ParsingSymbol* _descriptorSymbol, const WString& _descriptorString); - public: - ~ParsingSymbol(); - - ParsingSymbolManager* GetManager(); - SymbolType GetType(); - const WString& GetName(); - vint GetSubSymbolCount(); - ParsingSymbol* GetSubSymbol(vint index); - ParsingSymbol* GetSubSymbolByName(const WString& name); - ParsingSymbol* GetDescriptorSymbol(); - WString GetDescriptorString(); - ParsingSymbol* GetParentSymbol(); - bool IsType(); - ParsingSymbol* SearchClassSubSymbol(const WString& name); - ParsingSymbol* SearchCommonBaseClass(ParsingSymbol* classType); - }; - - class ParsingSymbolManager : public Object - { - typedef definitions::ParsingDefinitionClassDefinition ClassDefinition; - typedef collections::List> ParsingSymbolList; - typedef collections::Dictionary DefinitionTypeSymbolMap; - typedef collections::Dictionary DefinitionGrammarSymbolMap; - typedef collections::Dictionary SymbolClassDefinitionMap; - typedef collections::Dictionary ClassDefinitionSymbolMap; - protected: - ParsingSymbol* globalSymbol; - ParsingSymbol* tokenTypeSymbol; - ParsingSymbolList createdSymbols; - DefinitionTypeSymbolMap definitionTypeSymbolCache; - DefinitionGrammarSymbolMap definitionGrammarSymbolCache; - DefinitionGrammarSymbolMap definitionGrammarTypeCache; - SymbolClassDefinitionMap symbolClassDefinitionCache; - ClassDefinitionSymbolMap classDefinitionSymbolCache; - - bool TryAddSubSymbol(Ptr subSymbol, ParsingSymbol* parentSymbol); - public: - ParsingSymbolManager(); - ~ParsingSymbolManager(); - - ParsingSymbol* GetGlobal(); - ParsingSymbol* GetTokenType(); - ParsingSymbol* GetArrayType(ParsingSymbol* elementType); - - ParsingSymbol* AddClass(definitions::ParsingDefinitionClassDefinition* classDef, ParsingSymbol* baseType, ParsingSymbol* parentType=0); - ParsingSymbol* AddField(const WString& name, ParsingSymbol* classType, ParsingSymbol* fieldType); - ParsingSymbol* AddEnum(const WString& name, ParsingSymbol* parentType=0); - ParsingSymbol* AddEnumItem(const WString& name, ParsingSymbol* enumType); - ParsingSymbol* AddTokenDefinition(const WString& name, const WString& regex); - ParsingSymbol* AddRuleDefinition(const WString& name, ParsingSymbol* ruleType); - - ClassDefinition* CacheGetClassDefinition(ParsingSymbol* type); - ParsingSymbol* CacheGetClassType(ClassDefinition* type); - ParsingSymbol* CacheGetType(definitions::ParsingDefinitionType* type, ParsingSymbol* scope); - bool CacheSetType(definitions::ParsingDefinitionType* type, ParsingSymbol* scope, ParsingSymbol* symbol); - ParsingSymbol* CacheGetSymbol(definitions::ParsingDefinitionGrammar* grammar); - bool CacheSetSymbol(definitions::ParsingDefinitionGrammar* grammar, ParsingSymbol* symbol); - ParsingSymbol* CacheGetType(definitions::ParsingDefinitionGrammar* grammar); - bool CacheSetType(definitions::ParsingDefinitionGrammar* grammar, ParsingSymbol* type); - }; - -/*********************************************************************** -Semantic Analyzer -***********************************************************************/ - - extern WString GetTypeFullName(ParsingSymbol* type); - extern ParsingSymbol* FindType(definitions::ParsingDefinitionType* type, ParsingSymbolManager* manager, ParsingSymbol* scope, collections::List>& errors); - extern void PrepareSymbols(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors); - extern void ValidateRuleStructure(Ptr definition, Ptr rule, ParsingSymbolManager* manager, collections::List>& errors); - extern void ResolveRuleSymbols(Ptr rule, ParsingSymbolManager* manager, collections::List>& errors); - extern void ResolveSymbols(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors); - extern void ValidateDefinition(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors); - } - } -} - -#endif - - -/*********************************************************************** -.\PARSING\PARSING.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parsing::Parser - -Classes: -***********************************************************************/ - -#ifndef VCZH_PARSING_PARSING -#define VCZH_PARSING_PARSING - - -namespace vl -{ - namespace parsing - { - namespace tabling - { - -/*********************************************************************** -Parser -***********************************************************************/ - - /// Base type of all parser strategy. - class ParsingGeneralParser : public Object - { - protected: - Ptr table; - - public: - ParsingGeneralParser(Ptr _table); - ~ParsingGeneralParser(); - - /// Get the parser table that used to do the parsing. - /// The parser table that used to do the parsing. - Ptr GetTable(); - /// Initialization. It should be called before each time of parsing. - virtual void BeginParse(); - virtual ParsingState::TransitionResult ParseStep(ParsingState& state, collections::List>& errors)=0; - bool Parse(ParsingState& state, ParsingTransitionProcessor& processor, collections::List>& errors); - Ptr Parse(ParsingState& state, collections::List>& errors); - /// Parse an input and get an abstract syntax tree if no error happens or all errors are recovered. - /// The abstract syntax tree. - /// The input to parse. - /// The name of the rule that used to parse the input. - /// Returns all errors. - /// The code index to differentiate each input. This value will be stored in every tokens and abstract syntax nodes. - Ptr Parse(const WString& input, const WString& rule, collections::List>& errors, vint codeIndex = -1); - }; - -/*********************************************************************** -Parser with different strategies -***********************************************************************/ - - /// A strict parse. It doesn't allow ambiguity and error recovery. - class ParsingStrictParser : public ParsingGeneralParser - { - protected: - - virtual bool OnTestErrorRecoverExists(); - virtual void OnClearErrorRecover(); - virtual ParsingState::TransitionResult OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List>& errors); - public: - /// Create the parse using a parsing table. - /// The parsing table. - ParsingStrictParser(Ptr _table=0); - ~ParsingStrictParser(); - - ParsingState::TransitionResult ParseStep(ParsingState& state, collections::List>& errors)override; - }; - - /// A strict parse. It doesn't allow ambiguity but allows error recovery. - class ParsingAutoRecoverParser : public ParsingStrictParser - { - public: - struct RecoverFuture - { - ParsingState::Future* future; - vint insertedTokenCount; - vint index; - vint previousIndex; - vint nextIndex; - - RecoverFuture() - :future(0) - , insertedTokenCount(0) - , index(-1) - , previousIndex(-1) - , nextIndex(-1) - { - } - }; - protected: - vint maxInsertedTokenCount; - collections::List recoverFutures; - vint recoveringFutureIndex; - - RecoverFuture& GetRecoverFuture(vint index); - RecoverFuture& CreateRecoverFuture(vint index, vint previousIndex); - bool OnTestErrorRecoverExists()override; - void OnClearErrorRecover()override; - ParsingState::TransitionResult OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List>& errors)override; - public: - /// Create the parse using a parsing table. - /// The parsing table. - /// The maximum number of tokens that allow to insert to recover an error. - ParsingAutoRecoverParser(Ptr _table = 0, vint _maxInsertedTokenCount = -1); - ~ParsingAutoRecoverParser(); - - void BeginParse()override; - }; - - /// A strict parse. It allows ambiguity but doesn't allow error recovery. - class ParsingAmbiguousParser : public ParsingGeneralParser - { - typedef collections::List DecisionList; - protected: - - DecisionList decisions; - vint consumedDecisionCount; - - virtual void OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List& futures, vint& begin, vint& end, collections::List>& errors); - vint GetResolvableFutureLevels(collections::List& futures, vint begin, vint end); - vint SearchPathForOneStep(ParsingState& state, collections::List& futures, vint& begin, vint& end, collections::List>& errors); - vint GetConflictReduceCount(collections::List& futures); - void GetConflictReduceIndices(collections::List& futures, vint conflictReduceCount, collections::Array& conflictReduceIndices); - vint GetAffectedStackNodeCount(collections::List& futures, collections::Array& conflictReduceIndices); - void BuildSingleDecisionPath(ParsingState& state, ParsingState::Future* future, vint lastAvailableInstructionCount); - void BuildAmbiguousDecisions(ParsingState& state, collections::List& futures, vint begin, vint end, vint resolvableFutureLevels, collections::List>& errors); - void BuildDecisions(ParsingState& state, collections::List& futures, vint begin, vint end, vint resolvableFutureLevels, collections::List>& errors); - public: - /// Create the parse using a parsing table. - /// The parsing table. - ParsingAmbiguousParser(Ptr _table=0); - ~ParsingAmbiguousParser(); - - ParsingState::TransitionResult ParseStep(ParsingState& state, collections::List>& errors)override; - void BeginParse()override; - }; - - /// A strict parse. It allow both ambiguity and error recovery. - class ParsingAutoRecoverAmbiguousParser : public ParsingAmbiguousParser - { - protected: - vint maxInsertedTokenCount; - - void OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List& futures, vint& begin, vint& end, collections::List>& errors)override; - public: - /// Create the parse using a parsing table. - /// The parsing table. - /// The maximum number of tokens that allow to insert to recover an error. - ParsingAutoRecoverAmbiguousParser(Ptr _table = 0, vint _maxInsertedTokenCount = -1); - ~ParsingAutoRecoverAmbiguousParser(); - }; - -/*********************************************************************** -Helper Functions -***********************************************************************/ - - /// Create the correct strict parser from a parsing table. - /// The created parse. - /// The table to create a parser. - extern Ptr CreateStrictParser(Ptr table); - /// Create the correct error recoverable parser from a parsing table. - /// The created parse. - /// The table to create a parser. - extern Ptr CreateAutoRecoverParser(Ptr table); - /// Create the correct strict parser to parse the grammar itself. - /// The created parse. - extern Ptr CreateBootstrapStrictParser(); - /// Create the correct error recoverable to parse the grammar itself. - /// The created parse. - extern Ptr CreateBootstrapAutoRecoverParser(); - } - } -} - -/*********************************************************************** -Reflection for AST -***********************************************************************/ - -#ifndef VCZH_DEBUG_NO_REFLECTION - - -namespace vl -{ - namespace reflection - { - namespace description - { -#define PARSINGREFLECTION_TYPELIST(F)\ - F(parsing::ParsingTextPos)\ - F(parsing::ParsingTextRange)\ - F(parsing::ParsingTreeNode)\ - F(parsing::ParsingTreeToken)\ - F(parsing::ParsingTreeObject)\ - F(parsing::ParsingTreeArray)\ - F(parsing::ParsingTreeCustomBase)\ - F(parsing::ParsingToken)\ - F(parsing::ParsingError)\ - - PARSINGREFLECTION_TYPELIST(DECL_TYPE_INFO) - } - } -} - -#endif - -namespace vl -{ - namespace reflection - { - namespace description - { - extern bool LoadParsingTypes(); - } - } -} - -#endif - -/*********************************************************************** -.\PARSING\PARSINGAUTOMATON.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parsing::Automaton - -Classes: -***********************************************************************/ - -#ifndef VCZH_PARSING_PARSINGAUTOMATON -#define VCZH_PARSING_PARSINGAUTOMATON - - -namespace vl -{ - namespace parsing - { - namespace analyzing - { - -/*********************************************************************** -Automaton -***********************************************************************/ - - class Action; - class Transition; - class State; - - class Action : public Object - { - public: - enum ActionType - { - Create, // new source - Assign, // source ::= - Using, // use - Setter, // source ::= target - Shift, - Reduce, - LeftRecursiveReduce, - }; - - ActionType actionType; - ParsingSymbol* actionTarget; - ParsingSymbol* actionSource; - definitions::ParsingDefinitionRuleDefinition* creatorRule; - - // the following two fields record which rule symbol transition generate this shift/reduce action - State* shiftReduceSource; - State* shiftReduceTarget; - - Action(); - ~Action(); - }; - - class Transition : public Object - { - public: - enum TransitionType - { - TokenBegin, // token stream start - TokenFinish, // token stream end - NormalReduce, // rule end - LeftRecursiveReduce, // rule end with left recursive - Epsilon, // an epsilon transition - Symbol, // a syntax symbol - }; - - enum StackOperationType - { - None, - ShiftReduceCompacted, - LeftRecursive, - }; - - State* source; - State* target; - collections::List> actions; - - TransitionType transitionType; - StackOperationType stackOperationType; - ParsingSymbol* transitionSymbol; - - Transition(); - ~Transition(); - - static bool IsEquivalent(Transition* t1, Transition* t2, bool careSourceAndTarget); - }; - - class State : public Object - { - public: - enum StatePosition - { - BeforeNode, - AfterNode, - }; - - collections::List transitions; - collections::List inputs; - bool endState; - - ParsingSymbol* ownerRuleSymbol; - definitions::ParsingDefinitionRuleDefinition* ownerRule; - definitions::ParsingDefinitionGrammar* grammarNode; - definitions::ParsingDefinitionGrammar* stateNode; - StatePosition statePosition; - WString stateName; - WString stateExpression; - - State(); - ~State(); - }; - - class RuleInfo : public Object - { - public: - State* rootRuleStartState; - State* rootRuleEndState; - State* startState; - collections::List endStates; - int stateNameCount; - - RuleInfo(); - ~RuleInfo(); - }; - - class Automaton : public Object - { - typedef collections::List RuleDefList; - typedef collections::Dictionary> RuleInfoMap; - public: - ParsingSymbolManager* symbolManager; - collections::List> transitions; - collections::List> states; - collections::List> ruleInfos; - - RuleDefList orderedRulesDefs; - RuleInfoMap ruleDefToInfoMap; - - Automaton(ParsingSymbolManager* _symbolManager); - ~Automaton(); - - void AddRuleInfo(definitions::ParsingDefinitionRuleDefinition* rule, Ptr ruleInfo); - - State* RuleStartState(definitions::ParsingDefinitionRuleDefinition* ownerRule); - State* RootRuleStartState(definitions::ParsingDefinitionRuleDefinition* ownerRule); - State* RootRuleEndState(definitions::ParsingDefinitionRuleDefinition* ownerRule); - State* StartState(definitions::ParsingDefinitionRuleDefinition* ownerRule, definitions::ParsingDefinitionGrammar* grammarNode, definitions::ParsingDefinitionGrammar* stateNode); - State* EndState(definitions::ParsingDefinitionRuleDefinition* ownerRule, definitions::ParsingDefinitionGrammar* grammarNode, definitions::ParsingDefinitionGrammar* stateNode); - State* CopyState(State* oldState); - - Transition* CreateTransition(State* start, State* end); - Transition* TokenBegin(State* start, State* end); - Transition* TokenFinish(State* start, State* end); - Transition* NormalReduce(State* start, State* end); - Transition* LeftRecursiveReduce(State* start, State* end); - Transition* Epsilon(State* start, State* end); - Transition* Symbol(State* start, State* end, ParsingSymbol* transitionSymbol); - Transition* CopyTransition(State* start, State* end, Transition* oldTransition); - - void DeleteTransition(Transition* transition); - void DeleteState(State* state); - }; - -/*********************************************************************** -Helper: Closuer Searching -***********************************************************************/ - - struct ClosureItem - { - enum SearchResult - { - Continue, - Hit, - Blocked, - }; - - State* state; // target state of one path of a closure - Ptr> transitions; // path - bool cycle; // true: invalid closure because there are cycles, and in the middle of the path there will be a transition that targets to the state field. - - ClosureItem() - :state(0) - ,cycle(false) - { - } - - ClosureItem(State* _state, Ptr> _transitions, bool _cycle) - :state(_state) - ,transitions(_transitions) - ,cycle(_cycle) - { - } - }; - - extern void SearchClosure(ClosureItem::SearchResult(*closurePredicate)(Transition*), State* startState, collections::List& closure); - extern void RemoveEpsilonTransitions(collections::Dictionary& oldNewStateMap, collections::List& scanningStates, Ptr automaton); - -/*********************************************************************** -Helper: State Merging -***********************************************************************/ - - extern void DeleteUnnecessaryStates(Ptr automaton, Ptr ruleInfo, collections::List& newStates); - extern void MergeStates(Ptr automaton, Ptr ruleInfo, collections::List& newStates); - -/*********************************************************************** -Helper: Automaton Building -***********************************************************************/ - - extern Ptr CreateEpsilonPDA(Ptr definition, ParsingSymbolManager* manager); - extern Ptr CreateNondeterministicPDAFromEpsilonPDA(Ptr epsilonPDA); - extern Ptr CreateJointPDAFromNondeterministicPDA(Ptr nondeterministicPDA); - extern void CompactJointPDA(Ptr jointPDA); - extern void MarkLeftRecursiveInJointPDA(Ptr jointPDA, collections::List>& errors); - -/*********************************************************************** -Helper: Parsing Table Generating -***********************************************************************/ - - extern WString GetTypeNameForCreateInstruction(ParsingSymbol* type); - extern Ptr GenerateTableFromPDA(Ptr definition, ParsingSymbolManager* manager, Ptr jointPDA, bool enableAmbiguity, collections::List>& errors); - extern Ptr GenerateTable(Ptr definition, bool enableAmbiguity, collections::List>& errors); - extern void Log(Ptr automaton, stream::TextWriter& writer); - } - } -} - -#endif - -/*********************************************************************** -.\PARSING\JSON\PARSINGJSON_AST.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parser::ParsingJson.parser.txt - -This file is generated by: Vczh Parser Generator -***********************************************************************/ - -#ifndef VCZH_PARSING_JSON_PARSINGJSON_PARSER_AST -#define VCZH_PARSING_JSON_PARSINGJSON_PARSER_AST - - -namespace vl -{ - namespace parsing - { - namespace json - { - enum class JsonParserTokenIndex - { - TRUEVALUE = 0, - FALSEVALUE = 1, - NULLVALUE = 2, - OBJOPEN = 3, - OBJCLOSE = 4, - ARROPEN = 5, - ARRCLOSE = 6, - COMMA = 7, - COLON = 8, - NUMBER = 9, - STRING = 10, - SPACE = 11, - }; - class JsonNode; - class JsonLiteral; - class JsonString; - class JsonNumber; - class JsonArray; - class JsonObjectField; - class JsonObject; - - class JsonNode abstract : public vl::parsing::ParsingTreeCustomBase, vl::reflection::Description - { - public: - class IVisitor : public vl::reflection::IDescriptable, vl::reflection::Description - { - public: - virtual void Visit(JsonLiteral* node)=0; - virtual void Visit(JsonString* node)=0; - virtual void Visit(JsonNumber* node)=0; - virtual void Visit(JsonArray* node)=0; - virtual void Visit(JsonObjectField* node)=0; - virtual void Visit(JsonObject* node)=0; - }; - - virtual void Accept(JsonNode::IVisitor* visitor)=0; - - }; - - class JsonLiteral : public JsonNode, vl::reflection::Description - { - public: - enum class JsonValue - { - True, - False, - Null, - }; - - JsonValue value; - - void Accept(JsonNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class JsonString : public JsonNode, vl::reflection::Description - { - public: - vl::parsing::ParsingToken content; - - void Accept(JsonNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class JsonNumber : public JsonNode, vl::reflection::Description - { - public: - vl::parsing::ParsingToken content; - - void Accept(JsonNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class JsonArray : public JsonNode, vl::reflection::Description - { - public: - vl::collections::List> items; - - void Accept(JsonNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class JsonObjectField : public JsonNode, vl::reflection::Description - { - public: - vl::parsing::ParsingToken name; - vl::Ptr value; - - void Accept(JsonNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class JsonObject : public JsonNode, vl::reflection::Description - { - public: - vl::collections::List> fields; - - void Accept(JsonNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - } - } -} -namespace vl -{ - namespace reflection - { - namespace description - { -#ifndef VCZH_DEBUG_NO_REFLECTION - DECL_TYPE_INFO(vl::parsing::json::JsonNode) - DECL_TYPE_INFO(vl::parsing::json::JsonLiteral) - DECL_TYPE_INFO(vl::parsing::json::JsonLiteral::JsonValue) - DECL_TYPE_INFO(vl::parsing::json::JsonString) - DECL_TYPE_INFO(vl::parsing::json::JsonNumber) - DECL_TYPE_INFO(vl::parsing::json::JsonArray) - DECL_TYPE_INFO(vl::parsing::json::JsonObjectField) - DECL_TYPE_INFO(vl::parsing::json::JsonObject) - DECL_TYPE_INFO(vl::parsing::json::JsonNode::IVisitor) - - BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::parsing::json::JsonNode::IVisitor) - void Visit(vl::parsing::json::JsonLiteral* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::json::JsonString* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::json::JsonNumber* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::json::JsonArray* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::json::JsonObjectField* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::json::JsonObject* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - END_INTERFACE_PROXY(vl::parsing::json::JsonNode::IVisitor) - -#endif - extern bool JsonLoadTypes(); - } - } -} -#endif - -/*********************************************************************** -.\PARSING\JSON\PARSINGJSON_PARSER.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parser::ParsingJson.parser.txt - -This file is generated by: Vczh Parser Generator -***********************************************************************/ - -#ifndef VCZH_PARSING_JSON_PARSINGJSON_PARSER_PARSER -#define VCZH_PARSING_JSON_PARSINGJSON_PARSER_PARSER - - -namespace vl -{ - namespace parsing - { - namespace json - { - extern vl::WString JsonGetParserTextBuffer(); - extern vl::Ptr JsonConvertParsingTreeNode(vl::Ptr node, const vl::collections::List& tokens); - extern vl::Ptr JsonLoadTable(); - - extern vl::Ptr JsonParseAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); - extern vl::Ptr JsonParseAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); - extern vl::Ptr JsonParse(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); - extern vl::Ptr JsonParse(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); - } - } -} -#endif - -/*********************************************************************** -.\PARSING\XML\PARSINGXML_AST.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parser::ParsingXml.parser.txt - -This file is generated by: Vczh Parser Generator -***********************************************************************/ - -#ifndef VCZH_PARSING_XML_PARSINGXML_PARSER_AST -#define VCZH_PARSING_XML_PARSINGXML_PARSER_AST - - -namespace vl -{ - namespace parsing - { - namespace xml - { - enum class XmlParserTokenIndex - { - INSTRUCTION_OPEN = 0, - INSTRUCTION_CLOSE = 1, - COMPLEX_ELEMENT_OPEN = 2, - SINGLE_ELEMENT_CLOSE = 3, - ELEMENT_OPEN = 4, - ELEMENT_CLOSE = 5, - EQUAL = 6, - NAME = 7, - ATTVALUE = 8, - COMMENT = 9, - CDATA = 10, - TEXT = 11, - SPACE = 12, - }; - class XmlNode; - class XmlText; - class XmlCData; - class XmlAttribute; - class XmlComment; - class XmlElement; - class XmlInstruction; - class XmlDocument; - - class XmlNode abstract : public vl::parsing::ParsingTreeCustomBase, vl::reflection::Description - { - public: - class IVisitor : public vl::reflection::IDescriptable, vl::reflection::Description - { - public: - virtual void Visit(XmlText* node)=0; - virtual void Visit(XmlCData* node)=0; - virtual void Visit(XmlAttribute* node)=0; - virtual void Visit(XmlComment* node)=0; - virtual void Visit(XmlElement* node)=0; - virtual void Visit(XmlInstruction* node)=0; - virtual void Visit(XmlDocument* node)=0; - }; - - virtual void Accept(XmlNode::IVisitor* visitor)=0; - - }; - - class XmlText : public XmlNode, vl::reflection::Description - { - public: - vl::parsing::ParsingToken content; - - void Accept(XmlNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class XmlCData : public XmlNode, vl::reflection::Description - { - public: - vl::parsing::ParsingToken content; - - void Accept(XmlNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class XmlAttribute : public XmlNode, vl::reflection::Description - { - public: - vl::parsing::ParsingToken name; - vl::parsing::ParsingToken value; - - void Accept(XmlNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class XmlComment : public XmlNode, vl::reflection::Description - { - public: - vl::parsing::ParsingToken content; - - void Accept(XmlNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class XmlElement : public XmlNode, vl::reflection::Description - { - public: - vl::parsing::ParsingToken name; - vl::parsing::ParsingToken closingName; - vl::collections::List> attributes; - vl::collections::List> subNodes; - - void Accept(XmlNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class XmlInstruction : public XmlNode, vl::reflection::Description - { - public: - vl::parsing::ParsingToken name; - vl::collections::List> attributes; - - void Accept(XmlNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - class XmlDocument : public XmlNode, vl::reflection::Description - { - public: - vl::collections::List> prologs; - vl::Ptr rootElement; - - void Accept(XmlNode::IVisitor* visitor)override; - - static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); - }; - - } - } -} -namespace vl -{ - namespace reflection - { - namespace description - { -#ifndef VCZH_DEBUG_NO_REFLECTION - DECL_TYPE_INFO(vl::parsing::xml::XmlNode) - DECL_TYPE_INFO(vl::parsing::xml::XmlText) - DECL_TYPE_INFO(vl::parsing::xml::XmlCData) - DECL_TYPE_INFO(vl::parsing::xml::XmlAttribute) - DECL_TYPE_INFO(vl::parsing::xml::XmlComment) - DECL_TYPE_INFO(vl::parsing::xml::XmlElement) - DECL_TYPE_INFO(vl::parsing::xml::XmlInstruction) - DECL_TYPE_INFO(vl::parsing::xml::XmlDocument) - DECL_TYPE_INFO(vl::parsing::xml::XmlNode::IVisitor) - - BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::parsing::xml::XmlNode::IVisitor) - void Visit(vl::parsing::xml::XmlText* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::xml::XmlCData* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::xml::XmlAttribute* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::xml::XmlComment* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::xml::XmlElement* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::xml::XmlInstruction* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - void Visit(vl::parsing::xml::XmlDocument* node)override - { - INVOKE_INTERFACE_PROXY(Visit, node); - } - - END_INTERFACE_PROXY(vl::parsing::xml::XmlNode::IVisitor) - -#endif - extern bool XmlLoadTypes(); - } - } -} -#endif - -/*********************************************************************** -.\PARSING\XML\PARSINGXML_PARSER.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parser::ParsingXml.parser.txt - -This file is generated by: Vczh Parser Generator -***********************************************************************/ - -#ifndef VCZH_PARSING_XML_PARSINGXML_PARSER_PARSER -#define VCZH_PARSING_XML_PARSINGXML_PARSER_PARSER - - -namespace vl -{ - namespace parsing - { - namespace xml - { - extern vl::WString XmlGetParserTextBuffer(); - extern vl::Ptr XmlConvertParsingTreeNode(vl::Ptr node, const vl::collections::List& tokens); - extern vl::Ptr XmlLoadTable(); - - extern vl::Ptr XmlParseDocumentAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); - extern vl::Ptr XmlParseDocumentAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); - extern vl::Ptr XmlParseDocument(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); - extern vl::Ptr XmlParseDocument(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); - - extern vl::Ptr XmlParseElementAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); - extern vl::Ptr XmlParseElementAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); - extern vl::Ptr XmlParseElement(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); - extern vl::Ptr XmlParseElement(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); - } - } -} -#endif - -/*********************************************************************** -.\REGEX\REGEXDATA.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Regex::Basic Data Structure - -Classes: -***********************************************************************/ - -#ifndef VCZH_REGEX_REGEXDATA -#define VCZH_REGEX_REGEXDATA - - -namespace vl -{ - namespace regex_internal - { - -/*********************************************************************** -Data Structure -***********************************************************************/ - - class CharRange - { - public: - typedef collections::SortedList List; - - wchar_t begin; - wchar_t end; - - CharRange(); - CharRange(wchar_t _begin, wchar_t _end); - - bool operator<(CharRange item)const; - bool operator<=(CharRange item)const; - bool operator>(CharRange item)const; - bool operator>=(CharRange item)const; - bool operator==(CharRange item)const; - bool operator!=(CharRange item)const; - - bool operator<(wchar_t item)const; - bool operator<=(wchar_t item)const; - bool operator>(wchar_t item)const; - bool operator>=(wchar_t item)const; - bool operator==(wchar_t item)const; - bool operator!=(wchar_t item)const; - }; - } - - template<> - struct POD - { - static const bool Result=true; - }; -} - -#endif - -/*********************************************************************** -.\REGEX\REGEXAUTOMATON.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Regex::RegexAutomaton - -Classes: - State : State - Transition : Transation - Automaton : Automaton - -Functions: - EpsilonNfaToNfa : Copy and remove epsilon states and transitions from an NFA - NfaToDfa : Convert an NFA to a DFA -***********************************************************************/ - -#ifndef VCZH_REGEX_REGEXAUTOMATON -#define VCZH_REGEX_REGEXAUTOMATON - - -namespace vl -{ - namespace regex_internal - { - class State; - class Transition; - - class Transition - { - public: - enum Type - { - Chars, // Character range transition - Epsilon, - BeginString, - EndString, - Nop, // Non-epsilon transition with no input - Capture, // Begin capture transition - Match, // Capture matching transition - Positive, // Begin positive lookahead - Negative, // Begin negative lookahead - NegativeFail, // Negative lookahead failure - End // For Capture, Position, Negative - }; - - State* source; - State* target; - CharRange range; - Type type; - vint capture; - vint index; - }; - - class State - { - public: - collections::List transitions; - collections::List inputs; - bool finalState; - void* userData; - }; - - class Automaton - { - public: - typedef Ptr Ref; - - collections::List> states; - collections::List> transitions; - collections::List captureNames; - State* startState; - - Automaton(); - - State* NewState(); - Transition* NewTransition(State* start, State* end); - Transition* NewChars(State* start, State* end, CharRange range); - Transition* NewEpsilon(State* start, State* end); - Transition* NewBeginString(State* start, State* end); - Transition* NewEndString(State* start, State* end); - Transition* NewNop(State* start, State* end); - Transition* NewCapture(State* start, State* end, vint capture); - Transition* NewMatch(State* start, State* end, vint capture, vint index=-1); - Transition* NewPositive(State* start, State* end); - Transition* NewNegative(State* start, State* end); - Transition* NewNegativeFail(State* start, State* end); - Transition* NewEnd(State* start, State* end); - }; - - extern bool PureEpsilonChecker(Transition* transition); - extern bool RichEpsilonChecker(Transition* transition); - extern bool AreEqual(Transition* transA, Transition* transB); - extern Automaton::Ref EpsilonNfaToNfa(Automaton::Ref source, bool(*epsilonChecker)(Transition*), collections::Dictionary& nfaStateMap); - extern Automaton::Ref NfaToDfa(Automaton::Ref source, collections::Group& dfaStateMap); - } -} - -#endif - -/*********************************************************************** -.\REGEX\REGEXEXPRESSION.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Regex::RegexExpression - -Classes: - Expression : Base class of expressions | - CharSetExpression : Character set | a, [a-b], [^a-b0_9], \.rnt\/()+*?{}[]<>^$!=SsDdLlWw, [\rnt-[]\/^$] - LoopExpression : Repeat | a{3}, a{3,}, a{1,3}, a+, a*, a?, LOOP? - SequenceExpression : Sequence of two regex | ab - AlternateExpression : Alternative of two regex | a|b - BeginExpression : String begin | ^ - EndExpression : String end | $ - CaptureExpression : Capture | (expr), (?expr) - MatchExpression : Capture matching | (<$name>), (<$name;i>), (<$i>) - PositiveExpression : Positive lookahead | (=expr) - NegativeExpression : Negative lookahead | (!expr) - UsingExpression : refer a regex | (<#name1>expr)...(<&name1>)... - - RegexExpression : Regular Expression - -Functions: - ParseRegexExpression : Regex Syntax Analyzer -***********************************************************************/ - -#ifndef VCZH_REGEX_REGEXEXPRESSION -#define VCZH_REGEX_REGEXEXPRESSION - - -namespace vl -{ - namespace regex_internal - { - class IRegexExpressionAlgorithm; - -/*********************************************************************** -Regex Expression AST -***********************************************************************/ - - class Expression : public Object, private NotCopyable - { - public: - typedef Ptr Ref; - typedef collections::Dictionary Map; - - virtual void Apply(IRegexExpressionAlgorithm& algorithm)=0; - bool IsEqual(Expression* expression); - bool HasNoExtension(); - bool CanTreatAsPure(); - void NormalizeCharSet(CharRange::List& subsets); - void CollectCharSet(CharRange::List& subsets); - void ApplyCharSet(CharRange::List& subsets); - Automaton::Ref GenerateEpsilonNfa(); - }; - - class CharSetExpression : public Expression - { - public: - CharRange::List ranges; - bool reverse; - - bool AddRangeWithConflict(CharRange range); - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class LoopExpression : public Expression - { - public: - Expression::Ref expression; // The regex to loop - vint min; // Minimum count of looping - vint max; // Maximum count of looping, -1 for infinite - bool preferLong; // Prefer longer matching - - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class SequenceExpression : public Expression - { - public: - Expression::Ref left; // First regex to match - Expression::Ref right; // Last regex to match - - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class AlternateExpression : public Expression - { - public: - Expression::Ref left; // First regex to match - Expression::Ref right; // Last regex to match - - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class BeginExpression: public Expression - { - public: - - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class EndExpression : public Expression - { - public: - - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class CaptureExpression : public Expression - { - public: - WString name; // Capture name, empty for anonymous capture - Expression::Ref expression; // Regex to match - - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class MatchExpression : public Expression - { - public: - WString name; // Capture name, empty for anonymous - vint index; // The index of captured text to match associated the name, -1 for all of them - - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class PositiveExpression : public Expression - { - public: - Expression::Ref expression; // Regex to match - - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class NegativeExpression : public Expression - { - public: - Expression::Ref expression; // Regex to match - - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class UsingExpression : public Expression - { - public: - WString name; // Name of the regex to refer - - void Apply(IRegexExpressionAlgorithm& algorithm); - }; - - class RegexExpression : public Object, private NotCopyable - { - public: - typedef Ptr Ref; - - Expression::Map definitions; // Named regex to be referred - Expression::Ref expression; // Regex to match - - Expression::Ref Merge(); - }; - -/*********************************************************************** -Visitor -***********************************************************************/ - - class IRegexExpressionAlgorithm : public Interface - { - public: - virtual void Visit(CharSetExpression* expression)=0; - virtual void Visit(LoopExpression* expression)=0; - virtual void Visit(SequenceExpression* expression)=0; - virtual void Visit(AlternateExpression* expression)=0; - virtual void Visit(BeginExpression* expression)=0; - virtual void Visit(EndExpression* expression)=0; - virtual void Visit(CaptureExpression* expression)=0; - virtual void Visit(MatchExpression* expression)=0; - virtual void Visit(PositiveExpression* expression)=0; - virtual void Visit(NegativeExpression* expression)=0; - virtual void Visit(UsingExpression* expression)=0; - }; - - template - class RegexExpressionAlgorithm : public Object, public IRegexExpressionAlgorithm - { - private: - ReturnType returnValue; - ParameterType* parameterValue; - public: - - ReturnType Invoke(Expression* expression, ParameterType parameter) - { - parameterValue=¶meter; - expression->Apply(*this); - return returnValue; - } - - ReturnType Invoke(Expression::Ref expression, ParameterType parameter) - { - parameterValue=¶meter; - expression->Apply(*this); - return returnValue; - } - - virtual ReturnType Apply(CharSetExpression* expression, ParameterType parameter)=0; - virtual ReturnType Apply(LoopExpression* expression, ParameterType parameter)=0; - virtual ReturnType Apply(SequenceExpression* expression, ParameterType parameter)=0; - virtual ReturnType Apply(AlternateExpression* expression, ParameterType parameter)=0; - virtual ReturnType Apply(BeginExpression* expression, ParameterType parameter)=0; - virtual ReturnType Apply(EndExpression* expression, ParameterType parameter)=0; - virtual ReturnType Apply(CaptureExpression* expression, ParameterType parameter)=0; - virtual ReturnType Apply(MatchExpression* expression, ParameterType parameter)=0; - virtual ReturnType Apply(PositiveExpression* expression, ParameterType parameter)=0; - virtual ReturnType Apply(NegativeExpression* expression, ParameterType parameter)=0; - virtual ReturnType Apply(UsingExpression* expression, ParameterType parameter)=0; - public: - void Visit(CharSetExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - - void Visit(LoopExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - - void Visit(SequenceExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - - void Visit(AlternateExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - - void Visit(BeginExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - - void Visit(EndExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - - void Visit(CaptureExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - - void Visit(MatchExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - - void Visit(PositiveExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - - void Visit(NegativeExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - - void Visit(UsingExpression* expression) - { - returnValue=Apply(expression, *parameterValue); - } - }; - - template - class RegexExpressionAlgorithm : public Object, public IRegexExpressionAlgorithm - { - private: - ParameterType* parameterValue; - public: - - void Invoke(Expression* expression, ParameterType parameter) - { - parameterValue=¶meter; - expression->Apply(*this); - } - - void Invoke(Expression::Ref expression, ParameterType parameter) - { - parameterValue=¶meter; - expression->Apply(*this); - } - - virtual void Apply(CharSetExpression* expression, ParameterType parameter)=0; - virtual void Apply(LoopExpression* expression, ParameterType parameter)=0; - virtual void Apply(SequenceExpression* expression, ParameterType parameter)=0; - virtual void Apply(AlternateExpression* expression, ParameterType parameter)=0; - virtual void Apply(BeginExpression* expression, ParameterType parameter)=0; - virtual void Apply(EndExpression* expression, ParameterType parameter)=0; - virtual void Apply(CaptureExpression* expression, ParameterType parameter)=0; - virtual void Apply(MatchExpression* expression, ParameterType parameter)=0; - virtual void Apply(PositiveExpression* expression, ParameterType parameter)=0; - virtual void Apply(NegativeExpression* expression, ParameterType parameter)=0; - virtual void Apply(UsingExpression* expression, ParameterType parameter)=0; - public: - void Visit(CharSetExpression* expression) - { - Apply(expression, *parameterValue); - } - - void Visit(LoopExpression* expression) - { - Apply(expression, *parameterValue); - } - - void Visit(SequenceExpression* expression) - { - Apply(expression, *parameterValue); - } - - void Visit(AlternateExpression* expression) - { - Apply(expression, *parameterValue); - } - - void Visit(BeginExpression* expression) - { - Apply(expression, *parameterValue); - } - - void Visit(EndExpression* expression) - { - Apply(expression, *parameterValue); - } - - void Visit(CaptureExpression* expression) - { - Apply(expression, *parameterValue); - } - - void Visit(MatchExpression* expression) - { - Apply(expression, *parameterValue); - } - - void Visit(PositiveExpression* expression) - { - Apply(expression, *parameterValue); - } - - void Visit(NegativeExpression* expression) - { - Apply(expression, *parameterValue); - } - - void Visit(UsingExpression* expression) - { - Apply(expression, *parameterValue); - } - }; - -/*********************************************************************** -Helper Functions -***********************************************************************/ - - extern Ptr ParseLoop(const wchar_t*& input); - extern Ptr ParseCharSet(const wchar_t*& input); - extern Ptr ParseFunction(const wchar_t*& input); - extern Ptr ParseUnit(const wchar_t*& input); - extern Ptr ParseJoin(const wchar_t*& input); - extern Ptr ParseAlt(const wchar_t*& input); - extern Ptr ParseExpression(const wchar_t*& input); - extern RegexExpression::Ref ParseRegexExpression(const WString& code); - - extern WString EscapeTextForRegex(const WString& literalString); - extern WString UnescapeTextForRegex(const WString& escapedText); - extern WString NormalizeEscapedTextForRegex(const WString& escapedText); - extern bool IsRegexEscapedLiteralString(const WString& regex); - } -} - -#endif - -/*********************************************************************** -.\CONSOLE.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -UI::Console - -***********************************************************************/ - -#ifndef VCZH_CONSOLE -#define VCZH_CONSOLE - - -namespace vl -{ - namespace console - { - /// A Static class for command line window operations. - class Console abstract - { - public: - /// Write to the command line window. - /// Content to write. - /// Size of the content in wchar_t. The zero terminator is not included. - static void Write(const wchar_t* string, vint length); - - /// Write to the command line window. - /// Content to write. - static void Write(const wchar_t* string); - - /// Write to the command line window. - /// Content to write. - static void Write(const WString& string); - - /// Write to the command line window with a CRLF. - /// Content to write. - static void WriteLine(const WString& string); - - /// Read from the command line window. - /// The whole line read from the command line window. - static WString Read(); - - static void SetColor(bool red, bool green, bool blue, bool light); - static void SetTitle(const WString& string); - }; - } -} - -#endif - -/*********************************************************************** -.\FILESYSTEM.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::FileSystem - -***********************************************************************/ - -#ifndef VCZH_FILESYSTEM -#define VCZH_FILESYSTEM - - -namespace vl -{ - namespace filesystem - { - /// A type representing a file path. - class FilePath : public Object - { - protected: - WString fullPath; - - void Initialize(); - - static void GetPathComponents(WString path, collections::List& components); - static WString ComponentsToPath(const collections::List& components); - public: -#if defined VCZH_MSVC - static const wchar_t Delimiter = L'\\'; -#elif defined VCZH_GCC - static const wchar_t Delimiter = L'/'; -#endif - - /// Create a root path. - FilePath(); - /// Create a file path. - /// Content of the file path. If it is a relative path, it will be converted to an absolute path. - FilePath(const WString& _filePath); - /// Create a file path. - /// Content of the file path. If it is a relative path, it will be converted to an absolute path. - FilePath(const wchar_t* _filePath); - /// Copy a file path. - /// The file path to copy. - FilePath(const FilePath& _filePath); - ~FilePath(); - - static vint Compare(const FilePath& a, const FilePath& b); - bool operator==(const FilePath& filePath)const{ return Compare(*this, filePath) == 0; } - bool operator!=(const FilePath& filePath)const{ return Compare(*this, filePath) != 0; } - bool operator< (const FilePath& filePath)const{ return Compare(*this, filePath) < 0; } - bool operator<=(const FilePath& filePath)const{ return Compare(*this, filePath) <= 0; } - bool operator> (const FilePath& filePath)const{ return Compare(*this, filePath) > 0; } - bool operator>=(const FilePath& filePath)const{ return Compare(*this, filePath) >= 0; } - - /// Concat an absolute path and a relative path. - /// The result absolute path. - /// The relative path to concat. - FilePath operator/(const WString& relativePath)const; - - /// Test if the file path is a file. - /// Returns true if the file path is a file. - bool IsFile()const; - /// Test if the file path is a folder. - /// Returns true if the file path is a folder. - bool IsFolder()const; - /// Test if the file path is a the root of all file system objects. - /// Returns true if the file path is the root of all file system objects. - bool IsRoot()const; - - /// Get the last piece of names in the file path. - /// The last piece of names in the file path. - WString GetName()const; - /// Get the containing folder of this file path. - /// The containing folder. - FilePath GetFolder()const; - /// Get the content of the file path. - /// The content of the file path. - WString GetFullPath()const; - /// Calculate the relative path using a referencing folder. - /// The relative path. - /// The referencing folder. - WString GetRelativePathFor(const FilePath& _filePath); - - }; - - /// Representing a file reference. - class File : public Object - { - private: - FilePath filePath; - - public: - /// Create an empty reference. - File(); - /// Create a reference to a specified file. - /// The specified file. - File(const FilePath& _filePath); - ~File(); - - /// Get the file path of the file. - /// The file path. - const FilePath& GetFilePath()const; - - /// Get the content of the file as text with encoding testing. - /// Returns false if this operation succeeded. - /// The content of the file. - /// The encoding. - /// True if there is BOM. - bool ReadAllTextWithEncodingTesting(WString& text, stream::BomEncoder::Encoding& encoding, bool& containsBom); - /// Get the content of the file as text. - /// The content of the file. - WString ReadAllTextByBom()const; - /// Get the content of the file as text. - /// Returns false if this operation succeeded. - /// The content of the file. - bool ReadAllTextByBom(WString& text)const; - /// Get the content of the file as text. - /// Returns false if this operation succeeded. - /// The content of the file. - bool ReadAllLinesByBom(collections::List& lines)const; - - /// Write text to the file. - /// Returns false if this operation succeeded. - /// The text to write. - /// Set to true to add a corresponding BOM at the beginning of the file according to the encoding. - /// The text encoding. - bool WriteAllText(const WString& text, bool bom = true, stream::BomEncoder::Encoding encoding = stream::BomEncoder::Utf16); - /// Write text to the file. - /// Returns false if this operation succeeded. - /// The text to write. - /// Set to true to add a corresponding BOM at the beginning of the file according to the encoding. - /// The text encoding. - bool WriteAllLines(collections::List& lines, bool bom = true, stream::BomEncoder::Encoding encoding = stream::BomEncoder::Utf16); - - /// Test does the file exist or not. - /// Returns true if the file exists. - bool Exists()const; - /// Delete the file. - /// Returns true if this operation succeeded. - bool Delete()const; - /// Rename the file in the same folder. - /// Returns true if this operation succeeded. - /// The new file name. - bool Rename(const WString& newName)const; - }; - - /// Representing a folder reference. - class Folder : public Object - { - private: - FilePath filePath; - - public: - /// Create a root reference. - Folder(); - /// Create a reference to a specified folder. - /// The specified folder. - Folder(const FilePath& _filePath); - ~Folder(); - - /// Get the file path of the folder. - /// The file path. - const FilePath& GetFilePath()const; - /// Get all folders in this folder. - /// Returns true if this operation succeeded. - /// All folders. - bool GetFolders(collections::List& folders)const; - /// Get all files in this folder. - /// Returns true if this operation succeeded. - /// All files. - bool GetFiles(collections::List& files)const; - - /// Test does the folder exist or not. - /// Returns true if the folder exists. - bool Exists()const; - /// Create the folder. - /// Returns true if this operation succeeded. - /// Set to true to create all parent folders if necessary. - bool Create(bool recursively)const; - /// Delete the folder. - /// Returns true if this operation succeeded. - /// Set to true to delete everything in the folder. - bool Delete(bool recursively)const; - /// Rename the folder in the same folder. - /// Returns true if this operation succeeded. - /// The new folder name. - bool Rename(const WString& newName)const; - }; - } -} - -#endif - - -/*********************************************************************** -.\STREAM\FILESTREAM.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Stream::FileStream - -Interfaces: - FileStream : File stream -***********************************************************************/ - -#ifndef VCZH_STREAM_FILESTREAM -#define VCZH_STREAM_FILESTREAM - -#include - -namespace vl -{ - namespace stream - { - /// A file stream. It is readable when you use [F:vl.stream.FileStream.AccessRight.ReadOnly] or [F:vl.stream.FileStream.AccessRight.ReadWrite] to create the stream. It is writable when you use [F:vl.stream.FileStream.AccessRight.WriteOnly] or [F:vl.stream.FileStream.AccessRight.ReadWrite] to create the stream. - class FileStream : public Object, public virtual IStream - { - public: - /// Access to the file. - enum AccessRight - { - /// The file is opened to read. - ReadOnly, - /// The file is opened to write. - WriteOnly, - /// The file is opened to both read and write. - ReadWrite - }; - protected: - AccessRight accessRight; - FILE* file; - public: - /// Create a stream. - /// File to operate. - /// Operations want to perform on the file. - FileStream(const WString& fileName, AccessRight _accessRight); - ~FileStream(); - - bool CanRead()const; - bool CanWrite()const; - bool CanSeek()const; - bool CanPeek()const; - bool IsLimited()const; - bool IsAvailable()const; - void Close(); - pos_t Position()const; - pos_t Size()const; - void Seek(pos_t _size); - void SeekFromBegin(pos_t _size); - void SeekFromEnd(pos_t _size); - vint Read(void* _buffer, vint _size); - vint Write(void* _buffer, vint _size); - vint Peek(void* _buffer, vint _size); - }; - } -} - -#endif - -/*********************************************************************** -.\GLOBALSTORAGE.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Global Storage - -Classes: - GlobalStorage : Global storage accessable by name, each storage will be initialized on the first access, and all storages will be released by FinalizeGlobalStorage - -***********************************************************************/ - -#ifndef VCZH_GLOBALSTORAGE -#define VCZH_GLOBALSTORAGE - - -namespace vl -{ - /// ) - /// - /// INITIALIZE_GLOBAL_STORAGE_CLASS - /// - /// FINALIZE_GLOBAL_STORAGE_CLASS - /// - /// END_GLOBAL_STORAGE_CLASS - /// Then you have a global storage. You can only use this global storage in the current cpp file. [M:vl.InitializeGlobalStorage] should be called before using any global storage. [M:vl.FinalizeGlobalStorage] is encouraged to call if you think you will not use any global storages anymore. It will reduce noices when you want to detect memory leaks. - /// If the key of the global variable is called Key, and the variable you want to access is called Variable, then you can use GetKey()->Variable to access that variable. The GetKey function is created in the macro calls before. - /// ]]> - class GlobalStorage : public Object, private NotCopyable - { - private: - bool cleared; - public: - GlobalStorage(const wchar_t* key); - ~GlobalStorage(); - - bool Cleared(); - virtual void ClearResource()=0; - }; - - extern GlobalStorage* GetGlobalStorage(const wchar_t* key); - extern GlobalStorage* GetGlobalStorage(const WString& key); - - /// Initialize the global storage. - extern void InitializeGlobalStorage(); - /// Finalize the global storage. - extern void FinalizeGlobalStorage(); -} - -#define BEGIN_GLOBAL_STORAGE_CLASS(NAME)\ - class NAME : public vl::GlobalStorage\ - {\ - public:\ - NAME()\ - :vl::GlobalStorage(L ## #NAME)\ - {\ - InitializeClearResource();\ - }\ - ~NAME()\ - {\ - if(!Cleared())ClearResource();\ - }\ - -#define INITIALIZE_GLOBAL_STORAGE_CLASS\ - void InitializeClearResource()\ - {\ - -#define FINALIZE_GLOBAL_STORAGE_CLASS\ - }\ - void ClearResource()\ - {\ - -#define END_GLOBAL_STORAGE_CLASS(NAME)\ - }\ - };\ - NAME& Get##NAME()\ - {\ - static NAME __global_storage_##NAME;\ - return __global_storage_##NAME;\ - }\ - -#define EXTERN_GLOBAL_STORAGE_CLASS(NAME)\ - class NAME;\ - extern NAME& Get##NAME();\ - -#endif - - -/*********************************************************************** -.\HTTPUTILITY.H -***********************************************************************/ -#ifndef VCZH_HTTPUTILITY -#define VCZH_HTTPUTILITY - - -#ifdef VCZH_MSVC - -namespace vl -{ - -/*********************************************************************** -HTTP Utility -***********************************************************************/ - - /// A type representing an http requiest. - class HttpRequest - { - typedef collections::Array BodyBuffer; - typedef collections::List StringList; - typedef collections::Dictionary HeaderMap; - public: - /// Name of the server, like "gaclib.net". - WString server; - /// Port of the server, like 80. - vint port; - /// Query of the request, like "/GettingStart.html". - WString query; - /// Set to true if the request uses SSL. - bool secure; - /// User name to authorize. Set to empty if you don't want to provide it. - WString username; - /// Password to authorize. Set to empty if you don't want to provide it. - WString password; - /// HTTP method, like "GET", "POST", "PUT", "DELETE", etc. - WString method; - /// Cookie. Set to empty if you don't want to provide it. - WString cookie; - /// Request body. This is a binary array using an array container to char. - BodyBuffer body; - /// Content type, like "text/xml". - WString contentType; - /// Accept type list, elements of it like "text/xml". - StringList acceptTypes; - /// A dictionary to contain extra headers. - HeaderMap extraHeaders; - - /// Create an empty request. - HttpRequest(); - - /// Set , , and fields for you using an URL. - /// Returns true if this operation succeeded. - /// The URL. - bool SetHost(const WString& inputQuery); - - /// Fill the body with a text using UTF-8 encoding. - /// The text to fill. - void SetBodyUtf8(const WString& bodyString); - }; - - /// A type representing an http response. - class HttpResponse - { - typedef collections::Array BodyBuffer; - public: - /// Status code, like 200. - vint statusCode; - /// Response body. This is a binary array using an array container to char. - BodyBuffer body; - /// Returned cookie from the server. - WString cookie; - - HttpResponse(); - - /// If you believe the server returns a text in UTF-8, use it to decode the body. - /// The response body as text. - WString GetBodyUtf8(); - }; - - /// Send an http request and receive a response. - /// Returns true if this operation succeeded. Even the server returns 404 will be treated as success, because you get the response. - /// The request. - /// The response. - extern bool HttpQuery(const HttpRequest& request, HttpResponse& response); - - /// Encode a text as part of the url. This function can be used to create arguments in an URL. - /// The encoded text. - /// The text to encode. - extern WString UrlEncodeQuery(const WString& query); -} - -#endif - -#endif - - -/*********************************************************************** -.\COLLECTIONS\PARTIALORDERING.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Data Structure::Partial Ordering - -***********************************************************************/ - -#ifndef VCZH_COLLECTIONS_PARTIALORDERING -#define VCZH_COLLECTIONS_PARTIALORDERING - - -namespace vl -{ - namespace collections - { -/*********************************************************************** -Partial Ordering -***********************************************************************/ - - namespace po - { - struct Node - { - bool visited = false; - vint component = -1; - const List* ins = nullptr; // all nodes that this node depends on - const List* outs = nullptr; // all nodes that depend on this node - const vint* firstSubClassItem = nullptr; // index of the first item in this sub class node - vint subClassItemCount = 0; // the number of items in this sub class node - }; - - struct Component - { - const vint* firstNode = nullptr; - vint nodeCount = 0; - }; - } - } - - namespace collections - { - /// - /// Partial ordering item sorter. - /// This class sorts items in a partial order using the given dependency information. - /// Node stored in this class using the index of items. - /// If a depends on b, then a.ins->Contains(b) && b.outs->Contains(a). - /// The sorting result is a list of strong connected components in order. - /// If a depends on b, then the component containing a appears after the component containing b. - /// Node could represent a sub class if InitWithSubClass is called. - /// - class PartialOrderingProcessor : public Object - { - template - using GroupOf = Group; - protected: - List emptyList; - Group ins; - Group outs; - Array firstNodesBuffer; - Array subClassItemsBuffer; - - void InitNodes(vint itemCount); - void VisitUnvisitedNode(po::Node& node, Array& reversedOrder, vint& used); - void AssignUnassignedNode(po::Node& node, vint componentIndex, vint& used); - public: - /// Nodes. - Array nodes; - - /// Strong connected components in order. - List components; - - /// Sort. This method can only be called once. - void Sort(); - - /// Initialize the processor, specifying dependency relationships as a group. - /// Type of the first parameter. - /// Items. - /// Dependences. If a depends on b, then depGroups[a].Contains(b) == true. - template - void InitWithGroup(const TList& items, const GroupOf& depGroup) - { - CHECK_ERROR(nodes.Count() == 0, L"PartialOrdering::InitWithGroup(items, depGroup)#Initializing twice is not allowed."); - - for (vint i = 0; i < depGroup.Count(); i++) - { - vint fromNode = items.IndexOf(KeyType::GetKeyValue(depGroup.Keys()[i])); - CHECK_ERROR(fromNode != -1, L"PartialOrdering::InitWithGroup(items, depGroup)#The key in outsGroup does not exist in items."); - - auto& edges = depGroup.GetByIndex(i); - for (vint j = 0; j < edges.Count(); j++) - { - vint toNode = items.IndexOf(KeyType::GetKeyValue(edges[j])); - CHECK_ERROR(toNode != -1, L"PartialOrdering::InitWithGroup(items, depGroup)#The value in outsGroup does not exist in items."); - - ins.Add(fromNode, toNode); - outs.Add(toNode, fromNode); - } - } - - InitNodes(items.Count()); - } - - /// Initialize the processor, specifying dependency relationships as a callback function. - /// Type of the first parameter. - /// Type of the second parameter. - /// Items. - /// Dependences. If a depends on b, then depFunc(a, b) == true. - template - void InitWithFunc(const TList& items, TFunc&& depFunc) - { - GroupOf depGroup; - for (vint i = 0; i < items.Count(); i++) - { - for (vint j = 0; j < items.Count(); j++) - { - if (depFunc(items[i], items[j])) - { - depGroup.Add(items[i], items[j]); - } - } - } - InitWithGroup(items, depGroup); - } - - /// Initialize the processor, specifying dependency relationships and sub class classification as two groups. - /// Type of the first parameter. - /// Type of the sub class. - /// Items. - /// Dependences. If a depends on b, then depGroups[a].Contains(b) == true. - /// To put multiple items in a node to represent a sub class, use these items as keys, use a unique value as a value, and put them in subClasses. - template - void InitWithSubClass(const TList& items, const GroupOf& depGroup, const Dictionary& subClasses) - { - CHECK_ERROR(nodes.Count() == 0, L"PartialOrdering::InitWithSubClass(items, degGroup, subClasses)#Initializing twice is not allowed."); - using ElementType = typename TList::ElementType; - using ElementKeyType = KeyType; - - Group scItems; - SortedList singleItems; - - for (vint i = 0; i < subClasses.Count(); i++) - { - const auto& key = subClasses.Keys()[i]; - const auto& value = subClasses.Values()[i]; - scItems.Add(value, key); - } - - for (vint i = 0; i < items.Count(); i++) - { - const auto& item = items[i]; - if (!subClasses.Keys().Contains(ElementKeyType::GetKeyValue(item))) - { - singleItems.Add(item); - } - } - - auto getSubClass = [&](const ElementType& item) - { - vint index = subClasses.Keys().IndexOf(ElementKeyType::GetKeyValue(item)); - if (index != -1) - { - index = scItems.Keys().IndexOf(KeyType::GetKeyValue(subClasses.Values()[index])); - CHECK_ERROR(index != -1, L"PartialOrdering::InitWithSubClass(items, degGroup, subClasses)#Internal Error."); - return index; - } - else - { - index = singleItems.IndexOf(ElementKeyType::GetKeyValue(item)); - CHECK_ERROR(index != -1, L"PartialOrdering::InitWithSubClass(items, degGroup, subClasses)#Internal Error."); - return scItems.Count() + index; - } - }; - - for (vint i = 0; i < depGroup.Count(); i++) - { - const auto& key = depGroup.Keys()[i]; - vint keyIndex = getSubClass(key); - const auto& values = depGroup.GetByIndex(i); - - for (vint j = 0; j < values.Count(); j++) - { - const auto& value = values[j]; - vint valueIndex = getSubClass(value); - - if (!ins.Contains(keyIndex, valueIndex)) - { - ins.Add(keyIndex, valueIndex); - } - } - } - - for (vint i = 0; i < ins.Count(); i++) - { - vint key = ins.Keys()[i]; - const auto& values = ins.GetByIndex(i); - for (vint j = 0; j < values.Count(); j++) - { - outs.Add(values[j], key); - } - } - - InitNodes(scItems.Count() + singleItems.Count()); - subClassItemsBuffer.Resize(items.Count()); - - vint used = 0; - vint scItemCount = scItems.Keys().Count(); - for (vint i = 0; i < nodes.Count(); i++) - { - auto& node = nodes[i]; - node.firstSubClassItem = &subClassItemsBuffer[used]; - if (i < scItemCount) - { - const auto& values = scItems.GetByIndex(i); - for (vint j = 0; j < values.Count(); j++) - { - subClassItemsBuffer[used++] = items.IndexOf(ElementKeyType::GetKeyValue(values[j])); - } - node.subClassItemCount = values.Count(); - } - else - { - subClassItemsBuffer[used++] = items.IndexOf(ElementKeyType::GetKeyValue(singleItems[i - scItemCount])); - node.subClassItemCount = 1; - } - } - } - }; - } -} - -#endif - - -/*********************************************************************** -.\PARSING\JSON\PARSINGJSON.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parser::ParsingJson_Parser - -***********************************************************************/ - -#ifndef VCZH_PARSING_JSON_PARSINGJSON -#define VCZH_PARSING_JSON_PARSINGJSON - - -namespace vl -{ - namespace parsing - { - namespace json - { - extern void JsonEscapeString(const WString& text, stream::TextWriter& writer); - extern void JsonUnescapeString(const WString& text, stream::TextWriter& writer); - extern void JsonPrint(Ptr node, stream::TextWriter& writer); - extern WString JsonToString(Ptr node); - } - } -} - -#endif - -/*********************************************************************** -.\PARSING\XML\PARSINGXML.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Parser::ParsingXml - -***********************************************************************/ - -#ifndef VCZH_PARSING_XML_PARSINGXML -#define VCZH_PARSING_XML_PARSINGXML - - -namespace vl -{ - namespace parsing - { - namespace xml - { - extern WString XmlEscapeValue(const WString& value); - extern WString XmlUnescapeValue(const WString& value); - extern WString XmlEscapeCData(const WString& value); - extern WString XmlUnescapeCData(const WString& value); - extern WString XmlEscapeComment(const WString& value); - extern WString XmlUnescapeComment(const WString& value); - extern void XmlPrint(Ptr node, stream::TextWriter& writer); - extern void XmlPrintContent(Ptr element, stream::TextWriter& writer); - extern WString XmlToString(Ptr node); - - extern Ptr XmlGetAttribute(Ptr element, const WString& name); - extern Ptr XmlGetElement(Ptr element, const WString& name); - extern collections::LazyList> XmlGetElements(Ptr element); - extern collections::LazyList> XmlGetElements(Ptr element, const WString& name); - extern WString XmlGetValue(Ptr element); - - extern Ptr XmlGetAttribute(XmlElement* element, const WString& name); - extern Ptr XmlGetElement(XmlElement* element, const WString& name); - extern collections::LazyList> XmlGetElements(XmlElement* element); - extern collections::LazyList> XmlGetElements(XmlElement* element, const WString& name); - extern WString XmlGetValue(XmlElement* element); - - class XmlElementWriter : public Object - { - protected: - Ptr element; - const XmlElementWriter* previousWriter; - - public: - XmlElementWriter(Ptr _element, const XmlElementWriter* _previousWriter=0); - ~XmlElementWriter(); - - const XmlElementWriter& Attribute(const WString& name, const WString& value)const; - XmlElementWriter Element(const WString& name)const; - const XmlElementWriter& End()const; - const XmlElementWriter& Text(const WString& value)const; - const XmlElementWriter& CData(const WString& value)const; - const XmlElementWriter& Comment(const WString& value)const; - }; - } - } -} - -#endif - -/*********************************************************************** -.\REGEX\REGEXPURE.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Regex::RegexInterpretor - -Classes: - PureInterpretor : Pure regular expression interpretor -***********************************************************************/ - -#ifndef VCZH_REGEX_REGEXPURE -#define VCZH_REGEX_REGEXPURE - - -namespace vl -{ - namespace regex_internal - { - class PureResult - { - public: - vint start; - vint length; - vint finalState; - vint terminateState; - }; - - class PureInterpretor : public Object - { - protected: -#if defined VCZH_MSVC - static const vint SupportedCharCount = 0x10000; // UTF-16 -#elif defined VCZH_GCC - static const vint SupportedCharCount = 0x110000; // UTF-32 -#endif - - vint charMap[SupportedCharCount]; // char -> char set index - vint** transition; // (state * char set index) -> state* - bool* finalState; // state -> bool - vint* relatedFinalState; // sate -> (finalState or -1) - vint stateCount; - vint charSetCount; - vint startState; - public: - PureInterpretor(Automaton::Ref dfa, CharRange::List& subsets); - ~PureInterpretor(); - - bool MatchHead(const wchar_t* input, const wchar_t* start, PureResult& result); - bool Match(const wchar_t* input, const wchar_t* start, PureResult& result); - - vint GetStartState(); - vint Transit(wchar_t input, vint state); - bool IsFinalState(vint state); - bool IsDeadState(vint state); - - void PrepareForRelatedFinalStateTable(); - vint GetRelatedFinalState(vint state); - }; - } -} - -#endif - -/*********************************************************************** -.\REGEX\REGEXRICH.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Regex::RegexInterpretor - -Classes: - RichInterpretor : Rich regular expression interpretor -***********************************************************************/ - -#ifndef VCZH_REGEX_REGEXRICH -#define VCZH_REGEX_REGEXRICH - - -namespace vl -{ - namespace regex_internal - { - class CaptureRecord - { - public: - vint capture; - vint start; - vint length; - - bool operator==(const CaptureRecord& record)const; - }; - } - - template<> - struct POD - { - static const bool Result=true; - }; - - namespace regex_internal - { - class RichResult - { - public: - vint start; - vint length; - collections::List captures; - }; - - class RichInterpretor : public Object - { - public: - protected: - class UserData - { - public: - bool NeedKeepState; - }; - - Automaton::Ref dfa; - UserData* datas; - public: - RichInterpretor(Automaton::Ref _dfa); - ~RichInterpretor(); - - bool MatchHead(const wchar_t* input, const wchar_t* start, RichResult& result); - bool Match(const wchar_t* input, const wchar_t* start, RichResult& result); - const collections::List& CaptureNames(); - }; - }; -} - -#endif - -/*********************************************************************** -.\REGEX\REGEXWRITER.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Regex::RegexWriter - -Classes: -***********************************************************************/ - -#ifndef VCZH_REGEX_REGEXWRITER -#define VCZH_REGEX_REGEXWRITER - - -namespace vl -{ - namespace regex - { - class RegexNode : public Object - { - public: - vl::regex_internal::Expression::Ref expression; - - RegexNode(vl::regex_internal::Expression::Ref _expression); - - RegexNode Some()const; - RegexNode Any()const; - RegexNode Opt()const; - RegexNode Loop(vint min, vint max)const; - RegexNode AtLeast(vint min)const; - RegexNode operator+(const RegexNode& node)const; - RegexNode operator|(const RegexNode& node)const; - RegexNode operator+()const; - RegexNode operator-()const; - RegexNode operator!()const; - RegexNode operator%(const RegexNode& node)const; - }; - - extern RegexNode rCapture(const WString& name, const RegexNode& node); - extern RegexNode rUsing(const WString& name); - extern RegexNode rMatch(const WString& name, vint index=-1); - extern RegexNode rMatch(vint index); - extern RegexNode rBegin(); - extern RegexNode rEnd(); - extern RegexNode rC(wchar_t a, wchar_t b=L'\0'); - extern RegexNode r_d(); - extern RegexNode r_l(); - extern RegexNode r_w(); - extern RegexNode rAnyChar(); - } -} - -#endif - -/*********************************************************************** -.\STREAM\BROADCASTSTREAM.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Stream::BroadcastStream - -Interfaces: - BroadcastStream : Stream that copy the written data to multiple streams -***********************************************************************/ - -#ifndef VCZH_STREAM_BROADCASTSTREAM -#define VCZH_STREAM_BROADCASTSTREAM - - -namespace vl -{ - namespace stream - { - /// A writable stream that copy written content to multiple target streams. - class BroadcastStream : public Object, public virtual IStream - { - typedef collections::List StreamList; - protected: - bool closed; - pos_t position; - StreamList streams; - public: - /// Create a strema. - BroadcastStream(); - ~BroadcastStream(); - - /// Get the list of target streams. You can add streams to this list, or remove streams from this list. - /// The list of target streams. - StreamList& Targets(); - bool CanRead()const; - bool CanWrite()const; - bool CanSeek()const; - bool CanPeek()const; - bool IsLimited()const; - bool IsAvailable()const; - void Close(); - pos_t Position()const; - pos_t Size()const; - void Seek(pos_t _size); - void SeekFromBegin(pos_t _size); - void SeekFromEnd(pos_t _size); - vint Read(void* _buffer, vint _size); - vint Write(void* _buffer, vint _size); - vint Peek(void* _buffer, vint _size); - }; - } -} - -#endif - -/*********************************************************************** -.\STREAM\CACHESTREAM.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Stream::CacheStream - -Interfaces: - CacheStream : Stream that provide a cache for reading and writing -***********************************************************************/ - -#ifndef VCZH_STREAM_CACHESTREAM -#define VCZH_STREAM_CACHESTREAM - - -namespace vl -{ - namespace stream - { - /// - /// A cache stream. Features (readable, writable, seekable, peekable) are enabled according to the target stream. - /// When you read from the cache strema, it will read a specified size of content from the target stream first and cache, reducing the numbers of operations on the target stream. - /// When you write to the cache strema, it will save them to a buffer, and write to the target stream until the buffer reaches a specified size, reducing the numbers of operations on the target stream. - /// - class CacheStream : public Object, public virtual IStream - { - protected: - IStream* target; - vint block; - pos_t start; - pos_t position; - - char* buffer; - vint dirtyStart; - vint dirtyLength; - vint availableLength; - pos_t operatedSize; - - void Flush(); - void Load(pos_t _position); - vint InternalRead(void* _buffer, vint _size); - vint InternalWrite(void* _buffer, vint _size); - public: - /// Create a cache stream using a target stream. - /// The target stream. - /// Size of the cache. - CacheStream(IStream& _target, vint _block=65536); - ~CacheStream(); - - bool CanRead()const; - bool CanWrite()const; - bool CanSeek()const; - bool CanPeek()const; - bool IsLimited()const; - bool IsAvailable()const; - void Close(); - pos_t Position()const; - pos_t Size()const; - void Seek(pos_t _size); - void SeekFromBegin(pos_t _size); - void SeekFromEnd(pos_t _size); - vint Read(void* _buffer, vint _size); - vint Write(void* _buffer, vint _size); - vint Peek(void* _buffer, vint _size); - }; - } -} - -#endif - -/*********************************************************************** -.\STREAM\RECORDERSTREAM.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Stream::RecorderStream - -Interfaces: - RecorderStream : A readable stream that will copy the data to another stream on the fly -***********************************************************************/ - -#ifndef VCZH_STREAM_RECORDERSTREAM -#define VCZH_STREAM_RECORDERSTREAM - - -namespace vl -{ - namespace stream - { - /// A readable stream that, read from an stream, and write everything that is read to another stream. - class RecorderStream : public Object, public virtual IStream - { - protected: - IStream* in; - IStream* out; - public: - /// Create a stream. - /// The stream to read. - /// The stream to write what is read from "_in". - RecorderStream(IStream& _in, IStream& _out); - ~RecorderStream(); - - bool CanRead()const; - bool CanWrite()const; - bool CanSeek()const; - bool CanPeek()const; - bool IsLimited()const; - bool IsAvailable()const; - void Close(); - pos_t Position()const; - pos_t Size()const; - void Seek(pos_t _size); - void SeekFromBegin(pos_t _size); - void SeekFromEnd(pos_t _size); - vint Read(void* _buffer, vint _size); - vint Write(void* _buffer, vint _size); - vint Peek(void* _buffer, vint _size); - }; - } -} - -#endif - -/*********************************************************************** -.\UNITTEST\UNITTEST.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -UI::Console - -***********************************************************************/ - -#ifndef VCZH_UNITTEST -#define VCZH_UNITTEST - - -class UnitTestError -{ -}; - -namespace vl -{ - namespace unittest - { - /// ) - /// { - /// - /// - /// - /// - /// } - /// You should call [M:vl.unittest.UnitTest.RunAndDisposeTests] in your main function to run all test cases. - /// ]]> - class UnitTest abstract - { - public: - typedef void(*TestProc)(); - - /// Print a green message. - /// The content. - static void PrintMessage(const WString& string); - - /// Print a white information. - /// The content. - static void PrintInfo(const WString& string); - - /// Print a red error. - /// The content. - static void PrintError(const WString& string); - - static void PushTest(TestProc testProc); - - /// Run all test cases. - static void RunAndDisposeTests(); - }; - -#define TEST_CHECK_ERROR(CONDITION,DESCRIPTION) do{if(!(CONDITION))throw Error(DESCRIPTION);}while(0) -#define TEST_ASSERT(CONDITION) do{TEST_CHECK_ERROR(CONDITION,L"");}while(0) -#define TEST_ERROR(CONDITION) do{try{CONDITION;throw UnitTestError();}catch(const Error&){}catch(const UnitTestError&){TEST_CHECK_ERROR(false,L"");}}while(0) -#define TEST_CASE(NAME)\ - extern void TESTCASE_##NAME(); \ - namespace vl_unittest_executors \ - { \ - class TESTCASE_RUNNER_##NAME \ - { \ - public: \ - static void RunUnitTest() \ - { \ - vl::unittest::UnitTest::PrintMessage(L_(#NAME)); \ - TESTCASE_##NAME(); \ - } \ - TESTCASE_RUNNER_##NAME() \ - { \ - vl::unittest::UnitTest::PushTest(&TESTCASE_RUNNER_##NAME::RunUnitTest); \ - } \ - } TESTCASE_RUNNER_##NAME##_INSTANCE; \ - } \ - void TESTCASE_##NAME() -#define TEST_PRINT(x) vl::unittest::UnitTest::PrintInfo(x) -#define TEST_EXCEPTION(STATEMENT,EXCEPTION,ASSERT_FUNCTION) try{STATEMENT; TEST_ASSERT(false);}catch(const EXCEPTION& e){ASSERT_FUNCTION(e);} - } -} - -#endif - - -/*********************************************************************** -.\LAZY.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Lazy Evaluation - -Classes: - Lazy : Object with lazy evaluation - -***********************************************************************/ - -#ifndef VCZH_LAZY -#define VCZH_LAZY - - -namespace vl -{ - /// A type representing a lazy evaluation. - /// The type of the evaluation result. - template - class Lazy : public Object - { - protected: - class Internal - { - public: - Func evaluator; - T value; - bool evaluated; - }; - - Ptr internalValue; - public: - /// Create an empty evaluation. - Lazy() - { - } - - /// Create an evaluation using a function. - /// The function. - Lazy(const Func& evaluator) - { - internalValue=new Internal; - internalValue->evaluated=false; - internalValue->evaluator=evaluator; - } - - /// Create an evaluation using the result directly. - /// The result that you have already known.0 - Lazy(const T& value) - { - internalValue=new Internal; - internalValue->evaluated=true; - internalValue->value=value; - } - - /// Copy an evaluation. - /// The evaluation to copy. - Lazy(const Lazy& lazy) - :internalValue(lazy.internalValue) - { - } - - Lazy& operator=(const Func& evaluator) - { - internalValue=new Internal; - internalValue->evaluated=false; - internalValue->evaluator=evaluator; - return *this; - } - - Lazy& operator=(const T& value) - { - internalValue=new Internal; - internalValue->evaluated=true; - internalValue->value=value; - return *this; - } - - Lazy& operator=(const Lazy& lazy) - { - internalValue=lazy.internalValue; - return *this; - } - - /// Get the evaluation result. If it has not been calculated yet, it will run the evaluation and cache the result. You will not need to calculate for the second time. - /// The evaluation result. - const T& Value()const - { - if(!internalValue->evaluated) - { - internalValue->evaluated=true; - internalValue->value=internalValue->evaluator(); - internalValue->evaluator=Func(); - } - return internalValue->value; - } - - /// Test if it has already been evaluated or not. - /// Returns true if it has already been evaluated. - const bool IsEvaluated()const - { - return internalValue->evaluated; - } - - /// Test if it is an empty evaluation or not. - /// Returns true if it is not empty. - const bool IsAvailable()const - { - return internalValue; - } - }; -} - -#endif - - -/*********************************************************************** -.\TUPLE.H -***********************************************************************/ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -Framework::Tuple - -This file is generated by: Vczh Functional Macro -***********************************************************************/ -#ifndef VCZH_TUPLE -#define VCZH_TUPLE - - -namespace vl -{ - class TupleNullItem - { - }; - template - class Tuple - { - }; - -/*********************************************************************** -vl::Tuple -***********************************************************************/ - template - class Tuple : public Object - { - public: - T0 f0; - - Tuple() - { - } - - Tuple(T0 p0) - :f0(p0) - { - } - - static int Compare(const Tuple& a, const Tuple& b) - { - if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1; - return 0; - } - - bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } - bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } - bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } - bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } - bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } - bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } - }; - -/*********************************************************************** -vl::Tuple -***********************************************************************/ - template - class Tuple : public Object - { - public: - T0 f0;T1 f1; - - Tuple() - { - } - - Tuple(T0 p0,T1 p1) - :f0(p0),f1(p1) - { - } - - static int Compare(const Tuple& a, const Tuple& b) - { - if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1; - return 0; - } - - bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } - bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } - bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } - bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } - bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } - bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } - }; - -/*********************************************************************** -vl::Tuple -***********************************************************************/ - template - class Tuple : public Object - { - public: - T0 f0;T1 f1;T2 f2; - - Tuple() - { - } - - Tuple(T0 p0,T1 p1,T2 p2) - :f0(p0),f1(p1),f2(p2) - { - } - - static int Compare(const Tuple& a, const Tuple& b) - { - if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1; - return 0; - } - - bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } - bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } - bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } - bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } - bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } - bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } - }; - -/*********************************************************************** -vl::Tuple -***********************************************************************/ - template - class Tuple : public Object - { - public: - T0 f0;T1 f1;T2 f2;T3 f3; - - Tuple() - { - } - - Tuple(T0 p0,T1 p1,T2 p2,T3 p3) - :f0(p0),f1(p1),f2(p2),f3(p3) - { - } - - static int Compare(const Tuple& a, const Tuple& b) - { - if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1; - return 0; - } - - bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } - bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } - bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } - bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } - bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } - bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } - }; - -/*********************************************************************** -vl::Tuple -***********************************************************************/ - template - class Tuple : public Object - { - public: - T0 f0;T1 f1;T2 f2;T3 f3;T4 f4; - - Tuple() - { - } - - Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4) - :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4) - { - } - - static int Compare(const Tuple& a, const Tuple& b) - { - if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1; - return 0; - } - - bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } - bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } - bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } - bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } - bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } - bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } - }; - -/*********************************************************************** -vl::Tuple -***********************************************************************/ - template - class Tuple : public Object - { - public: - T0 f0;T1 f1;T2 f2;T3 f3;T4 f4;T5 f5; - - Tuple() - { - } - - Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4,T5 p5) - :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4),f5(p5) - { - } - - static int Compare(const Tuple& a, const Tuple& b) - { - if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1;if (a.f5 < b.f5) return -1; else if (a.f5 > b.f5) return 1; - return 0; - } - - bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } - bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } - bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } - bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } - bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } - bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } - }; - -/*********************************************************************** -vl::Tuple -***********************************************************************/ - template - class Tuple : public Object - { - public: - T0 f0;T1 f1;T2 f2;T3 f3;T4 f4;T5 f5;T6 f6; - - Tuple() - { - } - - Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4,T5 p5,T6 p6) - :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4),f5(p5),f6(p6) - { - } - - static int Compare(const Tuple& a, const Tuple& b) - { - if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1;if (a.f5 < b.f5) return -1; else if (a.f5 > b.f5) return 1;if (a.f6 < b.f6) return -1; else if (a.f6 > b.f6) return 1; - return 0; - } - - bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } - bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } - bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } - bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } - bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } - bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } - }; - -/*********************************************************************** -vl::Tuple -***********************************************************************/ - template - class Tuple : public Object - { - public: - T0 f0;T1 f1;T2 f2;T3 f3;T4 f4;T5 f5;T6 f6;T7 f7; - - Tuple() - { - } - - Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4,T5 p5,T6 p6,T7 p7) - :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4),f5(p5),f6(p6),f7(p7) - { - } - - static int Compare(const Tuple& a, const Tuple& b) - { - if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1;if (a.f5 < b.f5) return -1; else if (a.f5 > b.f5) return 1;if (a.f6 < b.f6) return -1; else if (a.f6 > b.f6) return 1;if (a.f7 < b.f7) return -1; else if (a.f7 > b.f7) return 1; - return 0; - } - - bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } - bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } - bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } - bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } - bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } - bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } - }; - -/*********************************************************************** -vl::Tuple -***********************************************************************/ - template - class Tuple : public Object - { - public: - T0 f0;T1 f1;T2 f2;T3 f3;T4 f4;T5 f5;T6 f6;T7 f7;T8 f8; - - Tuple() - { - } - - Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4,T5 p5,T6 p6,T7 p7,T8 p8) - :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4),f5(p5),f6(p6),f7(p7),f8(p8) - { - } - - static int Compare(const Tuple& a, const Tuple& b) - { - if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1;if (a.f5 < b.f5) return -1; else if (a.f5 > b.f5) return 1;if (a.f6 < b.f6) return -1; else if (a.f6 > b.f6) return 1;if (a.f7 < b.f7) return -1; else if (a.f7 > b.f7) return 1;if (a.f8 < b.f8) return -1; else if (a.f8 > b.f8) return 1; - return 0; - } - - bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } - bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } - bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } - bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } - bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } - bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } - }; - -/*********************************************************************** -vl::Tuple -***********************************************************************/ - template - class Tuple : public Object - { - public: - T0 f0;T1 f1;T2 f2;T3 f3;T4 f4;T5 f5;T6 f6;T7 f7;T8 f8;T9 f9; - - Tuple() - { - } - - Tuple(T0 p0,T1 p1,T2 p2,T3 p3,T4 p4,T5 p5,T6 p6,T7 p7,T8 p8,T9 p9) - :f0(p0),f1(p1),f2(p2),f3(p3),f4(p4),f5(p5),f6(p6),f7(p7),f8(p8),f9(p9) - { - } - - static int Compare(const Tuple& a, const Tuple& b) - { - if (a.f0 < b.f0) return -1; else if (a.f0 > b.f0) return 1;if (a.f1 < b.f1) return -1; else if (a.f1 > b.f1) return 1;if (a.f2 < b.f2) return -1; else if (a.f2 > b.f2) return 1;if (a.f3 < b.f3) return -1; else if (a.f3 > b.f3) return 1;if (a.f4 < b.f4) return -1; else if (a.f4 > b.f4) return 1;if (a.f5 < b.f5) return -1; else if (a.f5 > b.f5) return 1;if (a.f6 < b.f6) return -1; else if (a.f6 > b.f6) return 1;if (a.f7 < b.f7) return -1; else if (a.f7 > b.f7) return 1;if (a.f8 < b.f8) return -1; else if (a.f8 > b.f8) return 1;if (a.f9 < b.f9) return -1; else if (a.f9 > b.f9) return 1; - return 0; - } - - bool operator==(const Tuple& value)const{ return Compare(*this, value) == 0; } - bool operator!=(const Tuple& value)const{ return Compare(*this, value) != 0; } - bool operator< (const Tuple& value)const{ return Compare(*this, value) < 0; } - bool operator<=(const Tuple& value)const{ return Compare(*this, value) <= 0; } - bool operator> (const Tuple& value)const{ return Compare(*this, value) > 0; } - bool operator>=(const Tuple& value)const{ return Compare(*this, value) >= 0; } - }; - -} -#endif diff --git a/Import/VlppOS.cpp b/Import/VlppOS.cpp new file mode 100644 index 00000000..fcb1f0ed --- /dev/null +++ b/Import/VlppOS.cpp @@ -0,0 +1,6951 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "VlppOS.h" + +/*********************************************************************** +.\FILESYSTEM.CPP +***********************************************************************/ +#if defined VCZH_MSVC +#include +#include +#pragma comment(lib, "Shlwapi.lib") +#elif defined VCZH_GCC +#include +#include +#include +#endif + +namespace vl +{ + namespace filesystem + { + using namespace collections; + using namespace stream; + + // ReadDirectoryChangesW + +/*********************************************************************** +FilePath +***********************************************************************/ + +#if defined VCZH_GCC + const wchar_t FilePath::Delimiter; +#endif + + void FilePath::Initialize() + { + { + Array buffer(fullPath.Length() + 1); +#if defined VCZH_MSVC + wcscpy_s(&buffer[0], fullPath.Length() + 1, fullPath.Buffer()); +#elif defined VCZH_GCC + wcscpy(&buffer[0], fullPath.Buffer()); +#endif + for (vint i = 0; i < buffer.Count(); i++) + { + if (buffer[i] == L'\\' || buffer[i] == L'/') + { + buffer[i] = Delimiter; + } + } + fullPath = &buffer[0]; + } + +#if defined VCZH_MSVC + if (fullPath != L"") + { + if (fullPath.Length() < 2 || fullPath[1] != L':') + { + wchar_t buffer[MAX_PATH + 1] = { 0 }; + auto result = GetCurrentDirectory(sizeof(buffer) / sizeof(*buffer), buffer); + if (result > MAX_PATH + 1 || result == 0) + { + throw ArgumentException(L"Failed to call GetCurrentDirectory.", L"vl::filesystem::FilePath::Initialize", L""); + } + fullPath = WString(buffer) + L"\\" + fullPath; + } + { + wchar_t buffer[MAX_PATH + 1] = { 0 }; + if (fullPath.Length() == 2 && fullPath[1] == L':') + { + fullPath += L"\\"; + } + auto result = GetFullPathName(fullPath.Buffer(), sizeof(buffer) / sizeof(*buffer), buffer, NULL); + if (result > MAX_PATH + 1 || result == 0) + { + throw ArgumentException(L"The path is illegal.", L"vl::filesystem::FilePath::FilePath", L"_filePath"); + } + + { + wchar_t shortPath[MAX_PATH + 1]; + wchar_t longPath[MAX_PATH + 1]; + if (GetShortPathName(buffer, shortPath, MAX_PATH) > 0) + { + if (GetLongPathName(shortPath, longPath, MAX_PATH) > 0) + { + memcpy(buffer, longPath, sizeof(buffer)); + } + } + } + fullPath = buffer; + } + } +#elif defined VCZH_GCC + if (fullPath.Length() == 0) + fullPath = L"/"; + + if (fullPath[0] != Delimiter) + { + char buffer[PATH_MAX] = { 0 }; + getcwd(buffer, PATH_MAX); + fullPath = atow(AString(buffer)) + Delimiter + fullPath; + } + + { + collections::List components; + GetPathComponents(fullPath, components); + for(int i = 0; i < components.Count(); i++) + { + if(components[i] == L".") + { + components.RemoveAt(i); + i--; + } + else if(components[i] == L"..") + { + if(i > 0) + { + components.RemoveAt(i); + components.RemoveAt(i - 1); + i -= 2; + } + else + { + throw ArgumentException(L"Illegal path."); + } + } + } + + fullPath = ComponentsToPath(components); + } +#endif + if (fullPath != L"/" && fullPath.Length() > 0 && fullPath[fullPath.Length() - 1] == Delimiter) + { + fullPath = fullPath.Left(fullPath.Length() - 1); + } + } + + FilePath::FilePath() + { + } + + FilePath::FilePath(const WString& _filePath) + :fullPath(_filePath) + { + Initialize(); + } + + FilePath::FilePath(const wchar_t* _filePath) + :fullPath(_filePath) + { + Initialize(); + } + + FilePath::FilePath(const FilePath& _filePath) + :fullPath(_filePath.fullPath) + { + } + + FilePath::~FilePath() + { + } + + vint FilePath::Compare(const FilePath& a, const FilePath& b) + { + return WString::Compare(a.fullPath, b.fullPath); + } + + FilePath FilePath::operator/(const WString& relativePath)const + { + if (IsRoot()) + { + return relativePath; + } + else + { + return fullPath + L"/" + relativePath; + } + } + + bool FilePath::IsFile()const + { +#if defined VCZH_MSVC + WIN32_FILE_ATTRIBUTE_DATA info; + BOOL result = GetFileAttributesEx(fullPath.Buffer(), GetFileExInfoStandard, &info); + if (!result) return false; + return (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0; +#elif defined VCZH_GCC + struct stat info; + AString path = wtoa(fullPath); + int result = stat(path.Buffer(), &info); + if(result != 0) return false; + else return S_ISREG(info.st_mode); +#endif + } + + bool FilePath::IsFolder()const + { +#if defined VCZH_MSVC + WIN32_FILE_ATTRIBUTE_DATA info; + BOOL result = GetFileAttributesEx(fullPath.Buffer(), GetFileExInfoStandard, &info); + if (!result) return false; + return (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0; +#elif defined VCZH_GCC + struct stat info; + AString path = wtoa(fullPath); + int result = stat(path.Buffer(), &info); + if(result != 0) return false; + else return S_ISDIR(info.st_mode); +#endif + } + + bool FilePath::IsRoot()const + { +#if defined VCZH_MSVC + return fullPath == L""; +#elif defined VCZH_GCC + return fullPath == L"/"; +#endif + } + + WString FilePath::GetName()const + { + WString delimiter = Delimiter; + auto index = INVLOC.FindLast(fullPath, delimiter, Locale::None); + if (index.key == -1) return fullPath; + return fullPath.Right(fullPath.Length() - index.key - 1); + } + + FilePath FilePath::GetFolder()const + { + WString delimiter = Delimiter; + auto index = INVLOC.FindLast(fullPath, delimiter, Locale::None); + if (index.key == -1) return FilePath(); + return fullPath.Left(index.key); + } + + WString FilePath::GetFullPath()const + { + return fullPath; + } + + WString FilePath::GetRelativePathFor(const FilePath& _filePath) + { + if (fullPath.Length()==0 || _filePath.fullPath.Length()==0 || fullPath[0] != _filePath.fullPath[0]) + { + return _filePath.fullPath; + } +#if defined VCZH_MSVC + wchar_t buffer[MAX_PATH + 1] = { 0 }; + PathRelativePathTo( + buffer, + fullPath.Buffer(), + (IsFolder() ? FILE_ATTRIBUTE_DIRECTORY : 0), + _filePath.fullPath.Buffer(), + (_filePath.IsFolder() ? FILE_ATTRIBUTE_DIRECTORY : 0) + ); + return buffer; +#elif defined VCZH_GCC + collections::List srcComponents, tgtComponents, resultComponents; + GetPathComponents(IsFolder() ? fullPath : GetFolder().GetFullPath(), srcComponents); + GetPathComponents(_filePath.fullPath, tgtComponents); + + int minLength = srcComponents.Count() <= tgtComponents.Count() ? srcComponents.Count() : tgtComponents.Count(); + int lastCommonComponent = 0; + for(int i = 0; i < minLength; i++) + { + if(srcComponents[i] == tgtComponents[i]) + { + lastCommonComponent = i; + } + else + break; + } + + for(int i = lastCommonComponent + 1; i < srcComponents.Count(); i++) + { + resultComponents.Add(L".."); + } + + for(int i = lastCommonComponent + 1; i < tgtComponents.Count(); i++) + { + resultComponents.Add(tgtComponents[i]); + } + + return ComponentsToPath(resultComponents); +#endif + } + + void FilePath::GetPathComponents(WString path, collections::List& components) + { + WString pathRemaining = path; + WString delimiter = Delimiter; + + components.Clear(); + + while(true) + { + auto index = INVLOC.FindFirst(pathRemaining, delimiter, Locale::None); + if (index.key == -1) + break; + + if(index.key != 0) + components.Add(pathRemaining.Left(index.key)); + else + { +#if defined VCZH_GCC + // Unix absolute path starting with "/" + // components[0] will be L"/" + components.Add(delimiter); +#elif defined VCZH_MSVC + if(pathRemaining.Length() >= 2 && pathRemaining[1] == Delimiter) + { + // Windows UNC Path starting with "\\" + // components[0] will be L"\\" + components.Add(L"\\"); + index.value++; + } +#endif + } + + pathRemaining = pathRemaining.Right(pathRemaining.Length() - (index.key + index.value)); + } + + if(pathRemaining.Length() != 0) + { + components.Add(pathRemaining); + } + } + + WString FilePath::ComponentsToPath(const collections::List& components) + { + WString result; + WString delimiter = Delimiter; + + int i = 0; + +#if defined VCZH_GCC + // For Unix-like OSes, if first component is "/" then take it as absolute path + if(components.Count() > 0 && components[0] == delimiter) + { + result += delimiter; + i++; + } +#elif defined VCZH_MSVC + // For Windows, if first component is "\\" then it is an UNC path + if(components.Count() > 0 && components[0] == L"\\") + { + result += delimiter; + i++; + } +#endif + + for(; i < components.Count(); i++) + { + result += components[i]; + if(i + 1 < components.Count()) + result += delimiter; + } + + return result; + } + +/*********************************************************************** +File +***********************************************************************/ + + File::File() + { + } + + File::File(const FilePath& _filePath) + :filePath(_filePath) + { + } + + File::~File() + { + } + + const FilePath& File::GetFilePath()const + { + return filePath; + } + + bool File::ReadAllTextWithEncodingTesting(WString& text, stream::BomEncoder::Encoding& encoding, bool& containsBom) + { + Array buffer; + { + FileStream fileStream(filePath.GetFullPath(), FileStream::ReadOnly); + if (!fileStream.IsAvailable()) return false; + if (fileStream.Size() == 0) + { + text = L""; + encoding = BomEncoder::Mbcs; + containsBom = false; + return true; + } + + buffer.Resize((vint)fileStream.Size()); + vint count = fileStream.Read(&buffer[0], buffer.Count()); + CHECK_ERROR(count == buffer.Count(), L"vl::filesystem::File::ReadAllTextWithEncodingTesting(WString&, BomEncoder::Encoding&, bool&)#Failed to read the whole file."); + } + TestEncoding(&buffer[0], buffer.Count(), encoding, containsBom); + + MemoryWrapperStream memoryStream(&buffer[0], buffer.Count()); + if (containsBom) + { + BomDecoder decoder; + DecoderStream decoderStream(memoryStream, decoder); + StreamReader reader(decoderStream); + text = reader.ReadToEnd(); + } + else + { + switch (encoding) + { + case BomEncoder::Utf8: + { + Utf8Decoder decoder; + DecoderStream decoderStream(memoryStream, decoder); + StreamReader reader(decoderStream); + text = reader.ReadToEnd(); + } + break; + case BomEncoder::Utf16: + { + Utf16Decoder decoder; + DecoderStream decoderStream(memoryStream, decoder); + StreamReader reader(decoderStream); + text = reader.ReadToEnd(); + } + break; + case BomEncoder::Utf16BE: + { + Utf16BEDecoder decoder; + DecoderStream decoderStream(memoryStream, decoder); + StreamReader reader(decoderStream); + text = reader.ReadToEnd(); + } + break; + default: + { + MbcsDecoder decoder; + DecoderStream decoderStream(memoryStream, decoder); + StreamReader reader(decoderStream); + text = reader.ReadToEnd(); + } + } + } + return true; + } + + WString File::ReadAllTextByBom()const + { + WString text; + ReadAllTextByBom(text); + return text; + } + + bool File::ReadAllTextByBom(WString& text)const + { + FileStream fileStream(filePath.GetFullPath(), FileStream::ReadOnly); + if (!fileStream.IsAvailable()) return false; + BomDecoder decoder; + DecoderStream decoderStream(fileStream, decoder); + StreamReader reader(decoderStream); + text = reader.ReadToEnd(); + return true; + } + + bool File::ReadAllLinesByBom(collections::List& lines)const + { + FileStream fileStream(filePath.GetFullPath(), FileStream::ReadOnly); + if (!fileStream.IsAvailable()) return false; + BomDecoder decoder; + DecoderStream decoderStream(fileStream, decoder); + StreamReader reader(decoderStream); + while (!reader.IsEnd()) + { + lines.Add(reader.ReadLine()); + } + return true; + } + + bool File::WriteAllText(const WString& text, bool bom, stream::BomEncoder::Encoding encoding) + { + FileStream fileStream(filePath.GetFullPath(), FileStream::WriteOnly); + if (!fileStream.IsAvailable()) return false; + + IEncoder* encoder = nullptr; + if (bom) + { + encoder = new BomEncoder(encoding); + } + else switch (encoding) + { + case BomEncoder::Utf8: + encoder = new Utf8Encoder; + break; + case BomEncoder::Utf16: + encoder = new Utf16Encoder; + break; + case BomEncoder::Utf16BE: + encoder = new Utf16BEEncoder; + break; + default: + encoder = new MbcsEncoder; + break; + } + + { + EncoderStream encoderStream(fileStream, *encoder); + StreamWriter writer(encoderStream); + writer.WriteString(text); + } + delete encoder; + return true; + } + + bool File::WriteAllLines(collections::List& lines, bool bom, stream::BomEncoder::Encoding encoding) + { + FileStream fileStream(filePath.GetFullPath(), FileStream::WriteOnly); + if (!fileStream.IsAvailable()) return false; + + IEncoder* encoder = nullptr; + if (bom) + { + encoder = new BomEncoder(encoding); + } + else switch (encoding) + { + case BomEncoder::Utf8: + encoder = new Utf8Encoder; + break; + case BomEncoder::Utf16: + encoder = new Utf16Encoder; + break; + case BomEncoder::Utf16BE: + encoder = new Utf16BEEncoder; + break; + default: + encoder = new MbcsEncoder; + break; + } + + { + EncoderStream encoderStream(fileStream, *encoder); + StreamWriter writer(encoderStream); + FOREACH(WString, line, lines) + { + writer.WriteLine(line); + } + } + delete encoder; + return true; + } + + bool File::Exists()const + { + return filePath.IsFile(); + } + + bool File::Delete()const + { +#if defined VCZH_MSVC + return DeleteFile(filePath.GetFullPath().Buffer()) != 0; +#elif defined VCZH_GCC + AString path = wtoa(filePath.GetFullPath()); + return unlink(path.Buffer()) == 0; +#endif + } + + bool File::Rename(const WString& newName)const + { +#if defined VCZH_MSVC + WString oldFileName = filePath.GetFullPath(); + WString newFileName = (filePath.GetFolder() / newName).GetFullPath(); + return MoveFile(oldFileName.Buffer(), newFileName.Buffer()) != 0; +#elif defined VCZH_GCC + AString oldFileName = wtoa(filePath.GetFullPath()); + AString newFileName = wtoa((filePath.GetFolder() / newName).GetFullPath()); + return rename(oldFileName.Buffer(), newFileName.Buffer()) == 0; +#endif + } + +/*********************************************************************** +Folder +***********************************************************************/ + + Folder::Folder() + { + } + + Folder::Folder(const FilePath& _filePath) + :filePath(_filePath) + { + } + + Folder::~Folder() + { + } + + const FilePath& Folder::GetFilePath()const + { + return filePath; + } + + bool Folder::GetFolders(collections::List& folders)const + { +#if defined VCZH_MSVC + if (filePath.IsRoot()) + { + auto bufferSize = GetLogicalDriveStrings(0, nullptr); + if (bufferSize > 0) + { + Array buffer(bufferSize); + if (GetLogicalDriveStrings((DWORD)buffer.Count(), &buffer[0]) > 0) + { + auto begin = &buffer[0]; + auto end = begin + buffer.Count(); + while (begin < end && *begin) + { + WString driveString = begin; + begin += driveString.Length() + 1; + folders.Add(Folder(FilePath(driveString))); + } + return true; + } + } + return false; + } + else + { + if (!Exists()) return false; + WIN32_FIND_DATA findData; + HANDLE findHandle = INVALID_HANDLE_VALUE; + + while (true) + { + if (findHandle == INVALID_HANDLE_VALUE) + { + WString searchPath = (filePath / L"*").GetFullPath(); + findHandle = FindFirstFile(searchPath.Buffer(), &findData); + if (findHandle == INVALID_HANDLE_VALUE) + { + break; + } + } + else + { + BOOL result = FindNextFile(findHandle, &findData); + if (result == 0) + { + FindClose(findHandle); + break; + } + } + + if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + if (wcscmp(findData.cFileName, L".") != 0 && wcscmp(findData.cFileName, L"..") != 0) + { + folders.Add(Folder(filePath / findData.cFileName)); + } + } + } + return true; + } +#elif defined VCZH_GCC + if (!Exists()) return false; + + DIR *dir; + AString searchPath = wtoa(filePath.GetFullPath()); + + if ((dir = opendir(searchPath.Buffer())) == NULL) + { + return false; + } + + struct dirent* entry; + while ((entry = readdir(dir)) != NULL) + { + WString childName = atow(AString(entry->d_name)); + FilePath childFullPath = filePath / childName; + if (childName != L"." && childName != L".." && childFullPath.IsFolder()) + { + folders.Add(Folder(childFullPath)); + } + } + + if (closedir(dir) != 0) + { + return false; + } + + return true; +#endif + } + + bool Folder::GetFiles(collections::List& files)const + { +#if defined VCZH_MSVC + if (filePath.IsRoot()) + { + return true; + } + if (!Exists()) return false; + WIN32_FIND_DATA findData; + HANDLE findHandle = INVALID_HANDLE_VALUE; + + while (true) + { + if (findHandle == INVALID_HANDLE_VALUE) + { + WString searchPath = (filePath / L"*").GetFullPath(); + findHandle = FindFirstFile(searchPath.Buffer(), &findData); + if (findHandle == INVALID_HANDLE_VALUE) + { + break; + } + } + else + { + BOOL result = FindNextFile(findHandle, &findData); + if (result == 0) + { + FindClose(findHandle); + break; + } + } + + if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + { + files.Add(File(filePath / findData.cFileName)); + } + } + return true; +#elif defined VCZH_GCC + if (!Exists()) return false; + + DIR *dir; + AString searchPath = wtoa(filePath.GetFullPath()); + + if ((dir = opendir(searchPath.Buffer())) == NULL) + { + return false; + } + + struct dirent* entry; + while ((entry = readdir(dir)) != NULL) + { + FilePath childFullPath = filePath / (atow(AString(entry->d_name))); + if (childFullPath.IsFile()) + { + files.Add(File(childFullPath)); + } + } + + if (closedir(dir) != 0) + { + return false; + } + + return true; +#endif + } + + bool Folder::Exists()const + { + return filePath.IsFolder(); + } + + bool Folder::Create(bool recursively)const + { + if (recursively) + { + auto folder = filePath.GetFolder(); + if (folder.IsFile()) return false; + if (folder.IsFolder()) return Create(false); + return Folder(folder).Create(true) && Create(false); + } + else + { +#if defined VCZH_MSVC + return CreateDirectory(filePath.GetFullPath().Buffer(), NULL) != 0; +#elif defined VCZH_GCC + AString path = wtoa(filePath.GetFullPath()); + return mkdir(path.Buffer(), 0777) == 0; +#endif + } + } + + bool Folder::Delete(bool recursively)const + { + if (!Exists()) return false; + + if (recursively) + { + List folders; + GetFolders(folders); + FOREACH(Folder, folder, folders) + { + if (!folder.Delete(true)) return false; + } + + List files; + GetFiles(files); + FOREACH(File, file, files) + { + if (!file.Delete()) return false; + } + + return Delete(false); + } +#if defined VCZH_MSVC + return RemoveDirectory(filePath.GetFullPath().Buffer()) != 0; +#elif defined VCZH_GCC + AString path = wtoa(filePath.GetFullPath()); + return rmdir(path.Buffer()) == 0; +#endif + } + + bool Folder::Rename(const WString& newName)const + { +#if defined VCZH_MSVC + WString oldFileName = filePath.GetFullPath(); + WString newFileName = (filePath.GetFolder() / newName).GetFullPath(); + return MoveFile(oldFileName.Buffer(), newFileName.Buffer()) != 0; +#elif defined VCZH_GCC + AString oldFileName = wtoa(filePath.GetFullPath()); + AString newFileName = wtoa((filePath.GetFolder() / newName).GetFullPath()); + return rename(oldFileName.Buffer(), newFileName.Buffer()) == 0; +#endif + } + } +} + + +/*********************************************************************** +.\HTTPUTILITY.CPP +***********************************************************************/ + +#ifdef VCZH_MSVC +#include + +#pragma comment(lib, "WinHttp.lib") + +namespace vl +{ + using namespace collections; + +/*********************************************************************** +HttpRequest +***********************************************************************/ + + HttpRequest::HttpRequest() + :port(0) + ,secure(false) + { + } + + bool HttpRequest::SetHost(const WString& inputQuery) + { + server=L""; + query=L""; + port=0; + secure=false; + + { + if(server==L"") + { + if(inputQuery.Length()>7) + { + WString protocol=inputQuery.Sub(0, 8); + if(_wcsicmp(protocol.Buffer(), L"https://")==0) + { + const wchar_t* reading=inputQuery.Buffer()+8; + const wchar_t* index1=wcschr(reading, L':'); + const wchar_t* index2=wcschr(reading, L'/'); + if(index2) + { + query=index2; + server=WString(reading, (index1?index1:index2)-reading); + port=INTERNET_DEFAULT_HTTPS_PORT; + secure=true; + if(index1) + { + WString portString(index1+1, index2-index1-1); + port=_wtoi(portString.Buffer()); + } + return true; + } + } + } + } + if(server==L"") + { + if(inputQuery.Length()>6) + { + WString protocol=inputQuery.Sub(0, 7); + if(_wcsicmp(protocol.Buffer(), L"http://")==0) + { + const wchar_t* reading=inputQuery.Buffer()+7; + const wchar_t* index1=wcschr(reading, L':'); + const wchar_t* index2=wcschr(reading, L'/'); + if(index2) + { + query=index2; + server=WString(reading, (index1?index1:index2)-reading); + port=INTERNET_DEFAULT_HTTP_PORT; + if(index1) + { + WString portString(index1+1, index2-index1-1); + port=_wtoi(portString.Buffer()); + } + return true; + } + } + } + } + } + return false; + } + + void HttpRequest::SetBodyUtf8(const WString& bodyString) + { + vint utf8Size=WideCharToMultiByte(CP_UTF8, 0, bodyString.Buffer(), (int)bodyString.Length(), NULL, 0, NULL, NULL); + char* utf8=new char[utf8Size+1]; + ZeroMemory(utf8, utf8Size+1); + WideCharToMultiByte(CP_UTF8, 0, bodyString.Buffer(), (int)bodyString.Length(), utf8, (int)utf8Size, NULL, NULL); + + body.Resize(utf8Size); + memcpy(&body[0], utf8, utf8Size); + delete[] utf8; + } + +/*********************************************************************** +HttpResponse +***********************************************************************/ + + HttpResponse::HttpResponse() + :statusCode(0) + { + } + + WString HttpResponse::GetBodyUtf8() + { + WString response; + char* utf8=&body[0]; + vint totalSize=body.Count(); + vint utf16Size=MultiByteToWideChar(CP_UTF8, 0, utf8, (int)totalSize, NULL, 0); + wchar_t* utf16=new wchar_t[utf16Size+1]; + ZeroMemory(utf16, (utf16Size+1)*sizeof(wchar_t)); + MultiByteToWideChar(CP_UTF8, 0, utf8, (int)totalSize, utf16, (int)utf16Size); + response=utf16; + delete[] utf16; + return response; + } + +/*********************************************************************** +Utilities +***********************************************************************/ + + struct BufferPair + { + char* buffer; + vint length; + + BufferPair() + :buffer(0) + ,length(0) + { + } + + BufferPair(char* _buffer, vint _length) + :buffer(_buffer) + ,length(_length) + { + } + + bool operator==(const BufferPair& pair){return false;} + bool operator!=(const BufferPair& pair){return true;} + }; + + bool HttpQuery(const HttpRequest& request, HttpResponse& response) + { + // initialize + response.statusCode=-1; + HINTERNET internet=NULL; + HINTERNET connectedInternet=NULL; + HINTERNET requestInternet=NULL; + BOOL httpResult=FALSE; + DWORD error=0; + List acceptTypes; + List availableBuffers; + + // access http + internet=WinHttpOpen(L"vczh", WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0); + error=GetLastError(); + if(!internet) goto CLEANUP; + + // connect + connectedInternet=WinHttpConnect(internet, request.server.Buffer(), (int)request.port, 0); + error=GetLastError(); + if(!connectedInternet) goto CLEANUP; + + // open request + for(vint i=0;i0) + { + httpResult=WinHttpSendRequest(requestInternet, WINHTTP_NO_ADDITIONAL_HEADERS, 0, (LPVOID)&request.body.Get(0), (int)request.body.Count(), (int)request.body.Count(), NULL); + } + else + { + httpResult=WinHttpSendRequest(requestInternet, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, NULL); + } + error=GetLastError(); + if(httpResult==FALSE) goto CLEANUP; + + // receive response + httpResult=WinHttpReceiveResponse(requestInternet, NULL); + error=GetLastError(); + if(httpResult!=TRUE) goto CLEANUP; + + // read response status code + { + DWORD headerLength=sizeof(DWORD); + DWORD statusCode=0; + httpResult=WinHttpQueryHeaders(requestInternet, WINHTTP_QUERY_STATUS_CODE|WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_HEADER_NAME_BY_INDEX, &statusCode, &headerLength, WINHTTP_NO_HEADER_INDEX); + error=GetLastError(); + if(httpResult==FALSE) goto CLEANUP; + response.statusCode=statusCode; + } + // read respons cookie + { + DWORD headerLength=sizeof(DWORD); + httpResult=WinHttpQueryHeaders(requestInternet, WINHTTP_QUERY_RAW_HEADERS_CRLF, WINHTTP_HEADER_NAME_BY_INDEX, NULL, &headerLength, WINHTTP_NO_HEADER_INDEX); + error=GetLastError(); + if(error==ERROR_INSUFFICIENT_BUFFER) + { + wchar_t* rawHeader=new wchar_t[headerLength/sizeof(wchar_t)]; + ZeroMemory(rawHeader, headerLength); + httpResult=WinHttpQueryHeaders(requestInternet, WINHTTP_QUERY_RAW_HEADERS_CRLF, WINHTTP_HEADER_NAME_BY_INDEX, rawHeader, &headerLength, WINHTTP_NO_HEADER_INDEX); + + const wchar_t* cookieStart=wcsstr(rawHeader, L"Cookie:"); + if(cookieStart) + { + const wchar_t* cookieEnd=wcsstr(cookieStart, L";"); + if(cookieEnd) + { + response.cookie=WString(cookieStart+7, cookieEnd-cookieStart-7); + } + } + delete[] rawHeader; + } + } + + // read response body + while(true) + { + DWORD bytesAvailable=0; + BOOL queryDataAvailableResult=WinHttpQueryDataAvailable(requestInternet, &bytesAvailable); + error=GetLastError(); + if(queryDataAvailableResult==TRUE && bytesAvailable!=0) + { + char* utf8=new char[bytesAvailable]; + DWORD bytesRead=0; + BOOL readDataResult=WinHttpReadData(requestInternet, utf8, bytesAvailable, &bytesRead); + error=GetLastError(); + if(readDataResult==TRUE) + { + availableBuffers.Add(BufferPair(utf8, bytesRead)); + } + else + { + delete[] utf8; + } + } + else + { + break; + } + } + + { + // concatincate response body + vint totalSize = 0; + FOREACH(BufferPair, p, availableBuffers) + { + totalSize += p.length; + } + response.body.Resize(totalSize); + if (totalSize > 0) + { + char* utf8 = new char[totalSize]; + { + char* temp = utf8; + FOREACH(BufferPair, p, availableBuffers) + { + memcpy(temp, p.buffer, p.length); + temp += p.length; + } + } + memcpy(&response.body[0], utf8, totalSize); + delete[] utf8; + } + FOREACH(BufferPair, p, availableBuffers) + { + delete[] p.buffer; + } + } + CLEANUP: + if(requestInternet) WinHttpCloseHandle(requestInternet); + if(connectedInternet) WinHttpCloseHandle(connectedInternet); + if(internet) WinHttpCloseHandle(internet); + return response.statusCode!=-1; + } + + WString UrlEncodeQuery(const WString& query) + { + vint utf8Size=WideCharToMultiByte(CP_UTF8, 0, query.Buffer(),(int) query.Length(), NULL, 0, NULL, NULL); + char* utf8=new char[utf8Size+1]; + ZeroMemory(utf8, utf8Size+1); + WideCharToMultiByte(CP_UTF8, 0, query.Buffer(), (int)query.Length(), utf8, (int)utf8Size, NULL, NULL); + + wchar_t* encoded=new wchar_t[utf8Size*3+1]; + ZeroMemory(encoded, (utf8Size*3+1)*sizeof(wchar_t)); + wchar_t* writing=encoded; + for(vint i=0;i +#include +#include +#endif + +namespace vl +{ + using namespace collections; + +#if defined VCZH_MSVC + + extern SYSTEMTIME DateTimeToSystemTime(const DateTime& dateTime); + + BOOL CALLBACK Locale_EnumLocalesProcEx( + _In_ LPWSTR lpLocaleString, + _In_ DWORD dwFlags, + _In_ LPARAM lParam + ) + { + ((List*)lParam)->Add(Locale(lpLocaleString)); + return TRUE; + } + + BOOL CALLBACK Locale_EnumDateFormatsProcExEx( + _In_ LPWSTR lpDateFormatString, + _In_ CALID CalendarID, + _In_ LPARAM lParam + ) + { + ((List*)lParam)->Add(lpDateFormatString); + return TRUE; + } + + BOOL CALLBACK EnumTimeFormatsProcEx( + _In_ LPWSTR lpTimeFormatString, + _In_ LPARAM lParam + ) + { + ((List*)lParam)->Add(lpTimeFormatString); + return TRUE; + } + + WString Transform(const WString& localeName, const WString& input, DWORD flag) + { + int length=LCMapStringEx(localeName.Buffer(), flag, input.Buffer(), (int)input.Length()+1, NULL, 0, NULL, NULL, NULL); + Array buffer(length); + LCMapStringEx(localeName.Buffer(), flag, input.Buffer(), (int)input.Length()+1, &buffer[0], (int)buffer.Count(), NULL, NULL, NULL); + return &buffer[0]; + } + + DWORD TranslateNormalization(Locale::Normalization normalization) + { + DWORD result=0; + if(normalization&Locale::IgnoreCase) result|=NORM_IGNORECASE; + if(normalization&Locale::IgnoreCaseLinguistic) result|=NORM_IGNORECASE | NORM_LINGUISTIC_CASING; + if(normalization&Locale::IgnoreKanaType) result|=NORM_IGNOREKANATYPE; + if(normalization&Locale::IgnoreNonSpace) result|=NORM_IGNORENONSPACE; + if(normalization&Locale::IgnoreSymbol) result|=NORM_IGNORESYMBOLS; + if(normalization&Locale::IgnoreWidth) result|=NORM_IGNOREWIDTH; + if(normalization&Locale::DigitsAsNumbers) result|=SORT_DIGITSASNUMBERS; + if(normalization&Locale::StringSoft) result|=SORT_STRINGSORT; + return result; + } + +#endif + +/*********************************************************************** +Locale +***********************************************************************/ + + Locale::Locale(const WString& _localeName) + :localeName(_localeName) + { + } + + Locale::~Locale() + { + } + + Locale Locale::Invariant() + { +#if defined VCZH_MSVC + return Locale(LOCALE_NAME_INVARIANT); +#elif defined VCZH_GCC + return Locale(L""); +#endif + } + + Locale Locale::SystemDefault() + { +#if defined VCZH_MSVC + wchar_t buffer[LOCALE_NAME_MAX_LENGTH+1]={0}; + GetSystemDefaultLocaleName(buffer, LOCALE_NAME_MAX_LENGTH); + return Locale(buffer); +#elif defined VCZH_GCC + return Locale(L"en-US"); +#endif + } + + Locale Locale::UserDefault() + { +#if defined VCZH_MSVC + wchar_t buffer[LOCALE_NAME_MAX_LENGTH+1]={0}; + GetUserDefaultLocaleName(buffer, LOCALE_NAME_MAX_LENGTH); + return Locale(buffer); +#elif defined VCZH_GCC + return Locale(L"en-US"); +#endif + } + + void Locale::Enumerate(collections::List& locales) + { +#if defined VCZH_MSVC + EnumSystemLocalesEx(&Locale_EnumLocalesProcEx, LOCALE_ALL, (LPARAM)&locales, NULL); +#elif defined VCZH_GCC + locales.Add(Locale(L"en-US")); +#endif + } + + const WString& Locale::GetName()const + { + return localeName; + } + + void Locale::GetShortDateFormats(collections::List& formats)const + { +#if defined VCZH_MSVC + EnumDateFormatsExEx(&Locale_EnumDateFormatsProcExEx, localeName.Buffer(), DATE_SHORTDATE, (LPARAM)&formats); +#elif defined VCZH_GCC + formats.Add(L"MM/dd/yyyy"); + formats.Add(L"yyyy-MM-dd"); +#endif + } + + void Locale::GetLongDateFormats(collections::List& formats)const + { +#if defined VCZH_MSVC + EnumDateFormatsExEx(&Locale_EnumDateFormatsProcExEx, localeName.Buffer(), DATE_LONGDATE, (LPARAM)&formats); +#elif defined VCZH_GCC + formats.Add(L"dddd, dd MMMM yyyy"); +#endif + } + + void Locale::GetYearMonthDateFormats(collections::List& formats)const + { +#if defined VCZH_MSVC + EnumDateFormatsExEx(&Locale_EnumDateFormatsProcExEx, localeName.Buffer(), DATE_YEARMONTH, (LPARAM)&formats); +#elif defined VCZH_GCC + formats.Add(L"yyyy MMMM"); +#endif + } + + void Locale::GetLongTimeFormats(collections::List& formats)const + { +#if defined VCZH_MSVC + EnumTimeFormatsEx(&EnumTimeFormatsProcEx, localeName.Buffer(), 0, (LPARAM)&formats); +#elif defined VCZH_GCC + formats.Add(L"HH:mm:ss"); +#endif + } + + void Locale::GetShortTimeFormats(collections::List& formats)const + { +#if defined VCZH_MSVC + EnumTimeFormatsEx(&EnumTimeFormatsProcEx, localeName.Buffer(), TIME_NOSECONDS, (LPARAM)&formats); +#elif defined VCZH_GCC + formats.Add(L"HH:mm"); + formats.Add(L"hh:mm tt"); +#endif + } + + WString Locale::FormatDate(const WString& format, DateTime date)const + { +#if defined VCZH_MSVC + SYSTEMTIME st=DateTimeToSystemTime(date); + int length=GetDateFormatEx(localeName.Buffer(), 0, &st, format.Buffer(), NULL, 0, NULL); + if(length==0) return L""; + Array buffer(length); + GetDateFormatEx(localeName.Buffer(), 0, &st, format.Buffer(), &buffer[0], (int)buffer.Count(), NULL); + return &buffer[0]; +#elif defined VCZH_GCC + /* + auto df = L"yyyy,MM,MMM,MMMM,dd,ddd,dddd"; + auto ds = L"2000,01,Jan,January,02,Sun,Sunday"; + auto tf = L"hh,HH,mm,ss,tt"; + auto ts = L"01,13,02,03,PM"; + */ + WString result; + const wchar_t* reading = format.Buffer(); + + while (*reading) + { + if (wcsncmp(reading, L"yyyy", 4) == 0) + { + WString fragment = itow(date.year); + while (fragment.Length() < 4) fragment = L"0" + fragment; + result += fragment; + reading += 4; + } + else if (wcsncmp(reading, L"MMMM", 4) == 0) + { + result += GetLongMonthName(date.month); + reading += 4; + } + else if (wcsncmp(reading, L"MMM", 3) == 0) + { + result += GetShortMonthName(date.month); + reading += 3; + } + else if (wcsncmp(reading, L"MM", 2) == 0) + { + WString fragment = itow(date.month); + while (fragment.Length() < 2) fragment = L"0" + fragment; + result += fragment; + reading += 2; + } + else if (wcsncmp(reading, L"dddd", 4) == 0) + { + result += GetLongDayOfWeekName(date.dayOfWeek); + reading += 4; + } + else if (wcsncmp(reading, L"ddd", 3) == 0) + { + result += GetShortDayOfWeekName(date.dayOfWeek); + reading += 3; + } + else if (wcsncmp(reading, L"dd", 2) == 0) + { + WString fragment = itow(date.day); + while (fragment.Length() < 2) fragment = L"0" + fragment; + result += fragment; + reading += 2; + } + else if (wcsncmp(reading, L"hh", 2) == 0) + { + WString fragment = itow(date.hour > 12 ? date.hour - 12 : date.hour); + while (fragment.Length() < 2) fragment = L"0" + fragment; + result += fragment; + reading += 2; + } + else if (wcsncmp(reading, L"HH", 2) == 0) + { + WString fragment = itow(date.hour); + while (fragment.Length() < 2) fragment = L"0" + fragment; + result += fragment; + reading += 2; + } + else if (wcsncmp(reading, L"mm", 2) == 0) + { + WString fragment = itow(date.minute); + while (fragment.Length() < 2) fragment = L"0" + fragment; + result += fragment; + reading += 2; + } + else if (wcsncmp(reading, L"ss", 2) == 0) + { + WString fragment = itow(date.second); + while (fragment.Length() < 2) fragment = L"0" + fragment; + result += fragment; + reading += 2; + } + else if (wcsncmp(reading, L"tt", 2) == 0) + { + result += date.hour > 12 ? L"PM" : L"AM"; + reading += 2; + } + else + { + result += *reading; + reading++; + } + } + return result; +#endif + } + + WString Locale::FormatTime(const WString& format, DateTime time)const + { +#if defined VCZH_MSVC + SYSTEMTIME st=DateTimeToSystemTime(time); + int length=GetTimeFormatEx(localeName.Buffer(), 0, &st, format.Buffer(), NULL, 0); + if(length==0) return L""; + Array buffer(length); + GetTimeFormatEx(localeName.Buffer(), 0, &st, format.Buffer(),&buffer[0], (int)buffer.Count()); + return &buffer[0]; +#elif defined VCZH_GCC + return FormatDate(format, time); +#endif + } + + WString Locale::FormatNumber(const WString& number)const + { +#ifdef VCZH_MSVC + int length=GetNumberFormatEx(localeName.Buffer(), 0, number.Buffer(), NULL, NULL, 0); + if(length==0) return L""; + Array buffer(length); + GetNumberFormatEx(localeName.Buffer(), 0, number.Buffer(), NULL, &buffer[0], (int)buffer.Count()); + return &buffer[0]; +#elif defined VCZH_GCC + return number; +#endif + } + + WString Locale::FormatCurrency(const WString& currency)const + { +#ifdef VCZH_MSVC + int length=GetCurrencyFormatEx(localeName.Buffer(), 0, currency.Buffer(), NULL, NULL, 0); + if(length==0) return L""; + Array buffer(length); + GetCurrencyFormatEx(localeName.Buffer(), 0, currency.Buffer(), NULL, &buffer[0], (int)buffer.Count()); + return &buffer[0]; +#elif defined VCZH_GCC + return currency; +#endif + } + + WString Locale::GetShortDayOfWeekName(vint dayOfWeek)const + { +#if defined VCZH_MSVC + return FormatDate(L"ddd", DateTime::FromDateTime(2000, 1, 2+dayOfWeek)); +#elif defined VCZH_GCC + switch(dayOfWeek) + { + case 0: return L"Sun"; + case 1: return L"Mon"; + case 2: return L"Tue"; + case 3: return L"Wed"; + case 4: return L"Thu"; + case 5: return L"Fri"; + case 6: return L"Sat"; + } + return L""; +#endif + } + + WString Locale::GetLongDayOfWeekName(vint dayOfWeek)const + { +#if defined VCZH_MSVC + return FormatDate(L"dddd", DateTime::FromDateTime(2000, 1, 2+dayOfWeek)); +#elif defined VCZH_GCC + switch(dayOfWeek) + { + case 0: return L"Sunday"; + case 1: return L"Monday"; + case 2: return L"Tuesday"; + case 3: return L"Wednesday"; + case 4: return L"Thursday"; + case 5: return L"Friday"; + case 6: return L"Saturday"; + } + return L""; +#endif + } + + WString Locale::GetShortMonthName(vint month)const + { +#if defined VCZH_MSVC + return FormatDate(L"MMM", DateTime::FromDateTime(2000, month, 1)); +#elif defined VCZH_GCC + switch(month) + { + case 1: return L"Jan"; + case 2: return L"Feb"; + case 3: return L"Mar"; + case 4: return L"Apr"; + case 5: return L"May"; + case 6: return L"Jun"; + case 7: return L"Jul"; + case 8: return L"Aug"; + case 9: return L"Sep"; + case 10: return L"Oct"; + case 11: return L"Nov"; + case 12: return L"Dec"; + } + return L""; +#endif + } + + WString Locale::GetLongMonthName(vint month)const + { +#if defined VCZH_MSVC + return FormatDate(L"MMMM", DateTime::FromDateTime(2000, month, 1)); +#elif defined VCZH_GCC + switch(month) + { + case 1: return L"January"; + case 2: return L"February"; + case 3: return L"March"; + case 4: return L"April"; + case 5: return L"May"; + case 6: return L"June"; + case 7: return L"July"; + case 8: return L"August"; + case 9: return L"September"; + case 10: return L"October"; + case 11: return L"November"; + case 12: return L"December"; + } + return L""; +#endif + } + +#ifdef VCZH_MSVC + WString Locale::ToFullWidth(const WString& str)const + { + return Transform(localeName, str, LCMAP_FULLWIDTH); + } + + WString Locale::ToHalfWidth(const WString& str)const + { + return Transform(localeName, str, LCMAP_HALFWIDTH); + } + + WString Locale::ToHiragana(const WString& str)const + { + return Transform(localeName, str, LCMAP_HIRAGANA); + } + + WString Locale::ToKatagana(const WString& str)const + { + return Transform(localeName, str, LCMAP_KATAKANA); + } +#endif + + WString Locale::ToLower(const WString& str)const + { +#if defined VCZH_MSVC + return Transform(localeName, str, LCMAP_LOWERCASE); +#elif defined VCZH_GCC + return wlower(str); +#endif + } + + WString Locale::ToUpper(const WString& str)const + { +#if defined VCZH_MSVC + return Transform(localeName, str, LCMAP_UPPERCASE); +#elif defined VCZH_GCC + return wupper(str); +#endif + } + + WString Locale::ToLinguisticLower(const WString& str)const + { +#if defined VCZH_MSVC + return Transform(localeName, str, LCMAP_LOWERCASE | LCMAP_LINGUISTIC_CASING); +#elif defined VCZH_GCC + return wlower(str); +#endif + } + + WString Locale::ToLinguisticUpper(const WString& str)const + { +#if defined VCZH_MSVC + return Transform(localeName, str, LCMAP_UPPERCASE | LCMAP_LINGUISTIC_CASING); +#elif defined VCZH_GCC + return wupper(str); +#endif + } + +#ifdef VCZH_MSVC + WString Locale::ToSimplifiedChinese(const WString& str)const + { + return Transform(localeName, str, LCMAP_SIMPLIFIED_CHINESE); + } + + WString Locale::ToTraditionalChinese(const WString& str)const + { + return Transform(localeName, str, LCMAP_TRADITIONAL_CHINESE); + } + + WString Locale::ToTileCase(const WString& str)const + { + return Transform(localeName, str, LCMAP_TITLECASE); + } +#endif + + vint Locale::Compare(const WString& s1, const WString& s2, Normalization normalization)const + { +#if defined VCZH_MSVC + switch(CompareStringEx(localeName.Buffer(), TranslateNormalization(normalization), s1.Buffer(), (int)s1.Length(), s2.Buffer(), (int)s2.Length(), NULL, NULL, NULL)) + { + case CSTR_LESS_THAN: return -1; + case CSTR_GREATER_THAN: return 1; + default: return 0; + } +#elif defined VCZH_GCC + switch(normalization) + { + case Normalization::None: + return wcscmp(s1.Buffer(), s2.Buffer()); + case Normalization::IgnoreCase: + return wcscasecmp(s1.Buffer(), s2.Buffer()); + } +#endif + } + + vint Locale::CompareOrdinal(const WString& s1, const WString& s2)const + { +#if defined VCZH_MSVC + switch(CompareStringOrdinal(s1.Buffer(), (int)s1.Length(), s2.Buffer(), (int)s2.Length(), FALSE)) + { + case CSTR_LESS_THAN: return -1; + case CSTR_GREATER_THAN: return 1; + default: return 0; + } +#elif defined VCZH_GCC + return wcscmp(s1.Buffer(), s2.Buffer()); +#endif + } + + vint Locale::CompareOrdinalIgnoreCase(const WString& s1, const WString& s2)const + { +#if defined VCZH_MSVC + switch(CompareStringOrdinal(s1.Buffer(), (int)s1.Length(), s2.Buffer(), (int)s2.Length(), TRUE)) + { + case CSTR_LESS_THAN: return -1; + case CSTR_GREATER_THAN: return 1; + default: return 0; + } +#elif defined VCZH_GCC + return wcscasecmp(s1.Buffer(), s2.Buffer()); +#endif + } + + collections::Pair Locale::FindFirst(const WString& text, const WString& find, Normalization normalization)const + { +#if defined VCZH_MSVC + int length=0; + int result=FindNLSStringEx(localeName.Buffer(), FIND_FROMSTART | TranslateNormalization(normalization), text.Buffer(), (int)text.Length(), find.Buffer(), (int)find.Length(), &length, NULL, NULL, NULL); + return result==-1?Pair(-1, 0):Pair(result, length); +#elif defined VCZH_GCC + if(text.Length() < find.Length() || find.Length() == 0) + { + return Pair(-1, 0); + } + const wchar_t* result = 0; + switch(normalization) + { + case Normalization::None: + { + const wchar_t* reading = text.Buffer(); + while(*reading) + { + if (wcsncmp(reading, find.Buffer(), find.Length())==0) + { + result = reading; + break; + } + reading++; + } + } + break; + case Normalization::IgnoreCase: + { + const wchar_t* reading = text.Buffer(); + while(*reading) + { + if (wcsncasecmp(reading, find.Buffer(), find.Length())==0) + { + result = reading; + break; + } + reading++; + } + } + break; + } + return result == nullptr ? Pair(-1, 0) : Pair(result - text.Buffer(), find.Length()); +#endif + } + + collections::Pair Locale::FindLast(const WString& text, const WString& find, Normalization normalization)const + { +#if defined VCZH_MSVC + int length=0; + int result=FindNLSStringEx(localeName.Buffer(), FIND_FROMEND | TranslateNormalization(normalization), text.Buffer(), (int)text.Length(), find.Buffer(), (int)find.Length(), &length, NULL, NULL, NULL); + return result==-1?Pair(-1, 0):Pair(result, length); +#elif defined VCZH_GCC + if(text.Length() < find.Length() || find.Length() == 0) + { + return Pair(-1, 0); + } + const wchar_t* result = 0; + switch(normalization) + { + case Normalization::None: + { + const wchar_t* reading = text.Buffer(); + while(*reading) + { + if (wcsncmp(reading, find.Buffer(), find.Length())==0) + { + result = reading; + } + reading++; + } + } + break; + case Normalization::IgnoreCase: + { + const wchar_t* reading = text.Buffer(); + while(*reading) + { + if (wcsncasecmp(reading, find.Buffer(), find.Length())==0) + { + result = reading; + } + reading++; + } + } + break; + } + return result == nullptr ? Pair(-1, 0) : Pair(result - text.Buffer(), find.Length()); +#endif + } + + bool Locale::StartsWith(const WString& text, const WString& find, Normalization normalization)const + { +#if defined VCZH_MSVC + int result=FindNLSStringEx(localeName.Buffer(), FIND_STARTSWITH | TranslateNormalization(normalization), text.Buffer(), (int)text.Length(), find.Buffer(), (int)find.Length(), NULL, NULL, NULL, NULL); + return result!=-1; +#elif defined VCZH_GCC + if(text.Length() < find.Length() || find.Length() == 0) + { + return false; + } + switch(normalization) + { + case Normalization::None: + return wcsncmp(text.Buffer(), find.Buffer(), find.Length()) == 0; + case Normalization::IgnoreCase: + return wcsncasecmp(text.Buffer(), find.Buffer(), find.Length()) == 0; + } +#endif + } + + bool Locale::EndsWith(const WString& text, const WString& find, Normalization normalization)const + { +#if defined VCZH_MSVC + int result=FindNLSStringEx(localeName.Buffer(), FIND_ENDSWITH | TranslateNormalization(normalization), text.Buffer(), (int)text.Length(), find.Buffer(), (int)find.Length(), NULL, NULL, NULL, NULL); + return result!=-1; +#elif defined VCZH_GCC + if(text.Length() < find.Length() || find.Length() == 0) + { + return false; + } + switch(normalization) + { + case Normalization::None: + return wcsncmp(text.Buffer() + text.Length() - find.Length(), find.Buffer(), find.Length()) == 0; + case Normalization::IgnoreCase: + return wcsncasecmp(text.Buffer() + text.Length() - find.Length(), find.Buffer(), find.Length()) == 0; + } +#endif + } +} + + +/*********************************************************************** +.\THREADING.CPP +***********************************************************************/ +#ifdef VCZH_MSVC + +namespace vl +{ + using namespace threading_internal; + using namespace collections; + +/*********************************************************************** +WaitableObject +***********************************************************************/ + + namespace threading_internal + { + struct WaitableData + { + HANDLE handle; + + WaitableData(HANDLE _handle) + :handle(_handle) + { + } + }; + } + + WaitableObject::WaitableObject() + :waitableData(0) + { + } + + void WaitableObject::SetData(threading_internal::WaitableData* data) + { + waitableData=data; + } + + bool WaitableObject::IsCreated() + { + return waitableData!=0; + } + + bool WaitableObject::Wait() + { + return WaitForTime(INFINITE); + } + + bool WaitableObject::WaitForTime(vint ms) + { + if(IsCreated()) + { + if(WaitForSingleObject(waitableData->handle, (DWORD)ms)==WAIT_OBJECT_0) + { + return true; + } + } + return false; + } + + bool WaitableObject::WaitAll(WaitableObject** objects, vint count) + { + Array handles(count); + for(vint i=0;iwaitableData->handle; + } + DWORD result=WaitForMultipleObjects((DWORD)count, &handles[0], TRUE, INFINITE); + return result==WAIT_OBJECT_0 || result==WAIT_ABANDONED_0; + + } + + bool WaitableObject::WaitAllForTime(WaitableObject** objects, vint count, vint ms) + { + Array handles(count); + for(vint i=0;iwaitableData->handle; + } + DWORD result=WaitForMultipleObjects((DWORD)count, &handles[0], TRUE, (DWORD)ms); + return result==WAIT_OBJECT_0 || result==WAIT_ABANDONED_0; + } + + vint WaitableObject::WaitAny(WaitableObject** objects, vint count, bool* abandoned) + { + Array handles(count); + for(vint i=0;iwaitableData->handle; + } + DWORD result=WaitForMultipleObjects((DWORD)count, &handles[0], FALSE, INFINITE); + if(WAIT_OBJECT_0 <= result && result handles(count); + for(vint i=0;iwaitableData->handle; + } + DWORD result=WaitForMultipleObjects((DWORD)count, &handles[0], FALSE, (DWORD)ms); + if(WAIT_OBJECT_0 <= result && resultdeleteAfterStopped; + ThreadLocalStorage::FixStorages(); + try + { + procedure(this, argument); + threadState=Thread::Stopped; + ThreadLocalStorage::ClearStorages(); + } + catch (...) + { + ThreadLocalStorage::ClearStorages(); + throw; + } + if(deleteAfterStopped) + { + delete this; + } + } + public: + ProceduredThread(Thread::ThreadProcedure _procedure, void* _argument, bool _deleteAfterStopped) + :procedure(_procedure) + ,argument(_argument) + ,deleteAfterStopped(_deleteAfterStopped) + { + } + }; + + class LambdaThread : public Thread + { + private: + Func procedure; + bool deleteAfterStopped; + + protected: + void Run() + { + bool deleteAfterStopped = this->deleteAfterStopped; + ThreadLocalStorage::FixStorages(); + try + { + procedure(); + threadState=Thread::Stopped; + ThreadLocalStorage::ClearStorages(); + } + catch (...) + { + ThreadLocalStorage::ClearStorages(); + throw; + } + if(deleteAfterStopped) + { + delete this; + } + } + public: + LambdaThread(const Func& _procedure, bool _deleteAfterStopped) + :procedure(_procedure) + ,deleteAfterStopped(_deleteAfterStopped) + { + } + }; + } + + void InternalThreadProc(Thread* thread) + { + thread->Run(); + } + + DWORD WINAPI InternalThreadProcWrapper(LPVOID lpParameter) + { + InternalThreadProc((Thread*)lpParameter); + return 0; + } + + Thread::Thread() + { + internalData=new ThreadData; + internalData->handle=CreateThread(NULL, 0, InternalThreadProcWrapper, this, CREATE_SUSPENDED, &internalData->id); + threadState=Thread::NotStarted; + SetData(internalData); + } + + Thread::~Thread() + { + if (internalData) + { + Stop(); + CloseHandle(internalData->handle); + delete internalData; + } + } + + Thread* Thread::CreateAndStart(ThreadProcedure procedure, void* argument, bool deleteAfterStopped) + { + if(procedure) + { + Thread* thread=new ProceduredThread(procedure, argument, deleteAfterStopped); + if(thread->Start()) + { + return thread; + } + else + { + delete thread; + } + } + return 0; + } + + Thread* Thread::CreateAndStart(const Func& procedure, bool deleteAfterStopped) + { + Thread* thread=new LambdaThread(procedure, deleteAfterStopped); + if(thread->Start()) + { + return thread; + } + else + { + delete thread; + } + return 0; + } + + void Thread::Sleep(vint ms) + { + ::Sleep((DWORD)ms); + } + + + vint Thread::GetCPUCount() + { + SYSTEM_INFO info; + GetSystemInfo(&info); + return info.dwNumberOfProcessors; + } + + vint Thread::GetCurrentThreadId() + { + return (vint)::GetCurrentThreadId(); + } + + bool Thread::Start() + { + if(threadState==Thread::NotStarted && internalData->handle!=NULL) + { + if(ResumeThread(internalData->handle)!=-1) + { + threadState=Thread::Running; + return true; + } + } + return false; + } + + bool Thread::Stop() + { + if(internalData->handle!=NULL) + { + if (SuspendThread(internalData->handle) != -1) + { + threadState=Thread::Stopped; + return true; + } + } + return false; + } + + Thread::ThreadState Thread::GetState() + { + return threadState; + } + + void Thread::SetCPU(vint index) + { + SetThreadAffinityMask(internalData->handle, ((vint)1 << index)); + } + +/*********************************************************************** +Mutex +***********************************************************************/ + + namespace threading_internal + { + struct MutexData : public WaitableData + { + MutexData(HANDLE _handle) + :WaitableData(_handle) + { + } + }; + } + + Mutex::Mutex() + :internalData(0) + { + } + + Mutex::~Mutex() + { + if(internalData) + { + CloseHandle(internalData->handle); + delete internalData; + } + } + + bool Mutex::Create(bool owned, const WString& name) + { + if(IsCreated())return false; + BOOL aOwned=owned?TRUE:FALSE; + LPCTSTR aName=name==L""?NULL:name.Buffer(); + HANDLE handle=CreateMutex(NULL, aOwned, aName); + if(handle) + { + internalData=new MutexData(handle); + SetData(internalData); + } + return IsCreated(); + } + + bool Mutex::Open(bool inheritable, const WString& name) + { + if(IsCreated())return false; + BOOL aInteritable=inheritable?TRUE:FALSE; + HANDLE handle=OpenMutex(SYNCHRONIZE, aInteritable, name.Buffer()); + if(handle) + { + internalData=new MutexData(handle); + SetData(internalData); + } + return IsCreated(); + } + + bool Mutex::Release() + { + if(IsCreated()) + { + return ReleaseMutex(internalData->handle)!=0; + } + return false; + } + +/*********************************************************************** +Semaphore +***********************************************************************/ + + namespace threading_internal + { + struct SemaphoreData : public WaitableData + { + SemaphoreData(HANDLE _handle) + :WaitableData(_handle) + { + } + }; + } + + Semaphore::Semaphore() + :internalData(0) + { + } + + Semaphore::~Semaphore() + { + if(internalData) + { + CloseHandle(internalData->handle); + delete internalData; + } + } + + bool Semaphore::Create(vint initialCount, vint maxCount, const WString& name) + { + if(IsCreated())return false; + LONG aInitial=(LONG)initialCount; + LONG aMax=(LONG)maxCount; + LPCTSTR aName=name==L""?NULL:name.Buffer(); + HANDLE handle=CreateSemaphore(NULL, aInitial, aMax, aName); + if(handle) + { + internalData=new SemaphoreData(handle); + SetData(internalData); + } + return IsCreated(); + } + + bool Semaphore::Open(bool inheritable, const WString& name) + { + if(IsCreated())return false; + BOOL aInteritable=inheritable?TRUE:FALSE; + HANDLE handle=OpenSemaphore(SYNCHRONIZE, aInteritable, name.Buffer()); + if(handle) + { + internalData=new SemaphoreData(handle); + SetData(internalData); + } + return IsCreated(); + } + + bool Semaphore::Release() + { + if(IsCreated()) + { + return Release(1)!=-1; + } + return false; + } + + vint Semaphore::Release(vint count) + { + if(IsCreated()) + { + LONG previous=-1; + if(ReleaseSemaphore(internalData->handle, (LONG)count, &previous)!=0) + { + return (vint)previous; + } + } + return -1; + } + +/*********************************************************************** +EventObject +***********************************************************************/ + + namespace threading_internal + { + struct EventData : public WaitableData + { + EventData(HANDLE _handle) + :WaitableData(_handle) + { + } + }; + } + + EventObject::EventObject() + :internalData(0) + { + } + + EventObject::~EventObject() + { + if(internalData) + { + CloseHandle(internalData->handle); + delete internalData; + } + } + + bool EventObject::CreateAutoUnsignal(bool signaled, const WString& name) + { + if(IsCreated())return false; + BOOL aSignaled=signaled?TRUE:FALSE; + LPCTSTR aName=name==L""?NULL:name.Buffer(); + HANDLE handle=CreateEvent(NULL, FALSE, aSignaled, aName); + if(handle) + { + internalData=new EventData(handle); + SetData(internalData); + } + return IsCreated(); + } + + bool EventObject::CreateManualUnsignal(bool signaled, const WString& name) + { + if(IsCreated())return false; + BOOL aSignaled=signaled?TRUE:FALSE; + LPCTSTR aName=name==L""?NULL:name.Buffer(); + HANDLE handle=CreateEvent(NULL, TRUE, aSignaled, aName); + if(handle) + { + internalData=new EventData(handle); + SetData(internalData); + } + return IsCreated(); + } + + bool EventObject::Open(bool inheritable, const WString& name) + { + if(IsCreated())return false; + BOOL aInteritable=inheritable?TRUE:FALSE; + HANDLE handle=OpenEvent(SYNCHRONIZE, aInteritable, name.Buffer()); + if(handle) + { + internalData=new EventData(handle); + SetData(internalData); + } + return IsCreated(); + } + + bool EventObject::Signal() + { + if(IsCreated()) + { + return SetEvent(internalData->handle)!=0; + } + return false; + } + + bool EventObject::Unsignal() + { + if(IsCreated()) + { + return ResetEvent(internalData->handle)!=0; + } + return false; + } + +/*********************************************************************** +ThreadPoolLite +***********************************************************************/ + + struct ThreadPoolQueueProcArgument + { + void(*proc)(void*); + void* argument; + }; + + DWORD WINAPI ThreadPoolQueueProc(void* argument) + { + Ptr proc=(ThreadPoolQueueProcArgument*)argument; + ThreadLocalStorage::FixStorages(); + try + { + proc->proc(proc->argument); + ThreadLocalStorage::ClearStorages(); + } + catch (...) + { + ThreadLocalStorage::ClearStorages(); + } + return 0; + } + + DWORD WINAPI ThreadPoolQueueFunc(void* argument) + { + Ptr> proc=(Func*)argument; + ThreadLocalStorage::FixStorages(); + try + { + (*proc.Obj())(); + ThreadLocalStorage::ClearStorages(); + } + catch (...) + { + ThreadLocalStorage::ClearStorages(); + } + return 0; + } + + ThreadPoolLite::ThreadPoolLite() + { + } + + ThreadPoolLite::~ThreadPoolLite() + { + } + + bool ThreadPoolLite::Queue(void(*proc)(void*), void* argument) + { + ThreadPoolQueueProcArgument* p=new ThreadPoolQueueProcArgument; + p->proc=proc; + p->argument=argument; + if(QueueUserWorkItem(&ThreadPoolQueueProc, p, WT_EXECUTEDEFAULT)) + { + return true; + } + else + { + delete p; + return false; + } + } + + bool ThreadPoolLite::Queue(const Func& proc) + { + Func* p=new Func(proc); + if(QueueUserWorkItem(&ThreadPoolQueueFunc, p, WT_EXECUTEDEFAULT)) + { + return true; + } + else + { + delete p; + return false; + } + } + +/*********************************************************************** +CriticalSection +***********************************************************************/ + + namespace threading_internal + { + struct CriticalSectionData + { + CRITICAL_SECTION criticalSection; + }; + } + + CriticalSection::Scope::Scope(CriticalSection& _criticalSection) + :criticalSection(&_criticalSection) + { + criticalSection->Enter(); + } + + CriticalSection::Scope::~Scope() + { + criticalSection->Leave(); + } + + CriticalSection::CriticalSection() + { + internalData=new CriticalSectionData; + InitializeCriticalSection(&internalData->criticalSection); + } + + CriticalSection::~CriticalSection() + { + DeleteCriticalSection(&internalData->criticalSection); + delete internalData; + } + + bool CriticalSection::TryEnter() + { + return TryEnterCriticalSection(&internalData->criticalSection)!=0; + } + + void CriticalSection::Enter() + { + EnterCriticalSection(&internalData->criticalSection); + } + + void CriticalSection::Leave() + { + LeaveCriticalSection(&internalData->criticalSection); + } + +/*********************************************************************** +ReaderWriterLock +***********************************************************************/ + + namespace threading_internal + { + struct ReaderWriterLockData + { + SRWLOCK lock; + }; + } + + ReaderWriterLock::ReaderScope::ReaderScope(ReaderWriterLock& _lock) + :lock(&_lock) + { + lock->EnterReader(); + } + + ReaderWriterLock::ReaderScope::~ReaderScope() + { + lock->LeaveReader(); + } + + ReaderWriterLock::WriterScope::WriterScope(ReaderWriterLock& _lock) + :lock(&_lock) + { + lock->EnterWriter(); + } + + ReaderWriterLock::WriterScope::~WriterScope() + { + lock->LeaveWriter(); + } + + ReaderWriterLock::ReaderWriterLock() + :internalData(new threading_internal::ReaderWriterLockData) + { + InitializeSRWLock(&internalData->lock); + } + + ReaderWriterLock::~ReaderWriterLock() + { + delete internalData; + } + + bool ReaderWriterLock::TryEnterReader() + { + return TryAcquireSRWLockShared(&internalData->lock)!=0; + } + + void ReaderWriterLock::EnterReader() + { + AcquireSRWLockShared(&internalData->lock); + } + + void ReaderWriterLock::LeaveReader() + { + ReleaseSRWLockShared(&internalData->lock); + } + + bool ReaderWriterLock::TryEnterWriter() + { + return TryAcquireSRWLockExclusive(&internalData->lock)!=0; + } + + void ReaderWriterLock::EnterWriter() + { + AcquireSRWLockExclusive(&internalData->lock); + } + + void ReaderWriterLock::LeaveWriter() + { + ReleaseSRWLockExclusive(&internalData->lock); + } + +/*********************************************************************** +ConditionVariable +***********************************************************************/ + + namespace threading_internal + { + struct ConditionVariableData + { + CONDITION_VARIABLE variable; + }; + } + + ConditionVariable::ConditionVariable() + :internalData(new threading_internal::ConditionVariableData) + { + InitializeConditionVariable(&internalData->variable); + } + + ConditionVariable::~ConditionVariable() + { + delete internalData; + } + + bool ConditionVariable::SleepWith(CriticalSection& cs) + { + return SleepConditionVariableCS(&internalData->variable, &cs.internalData->criticalSection, INFINITE)!=0; + } + + bool ConditionVariable::SleepWithForTime(CriticalSection& cs, vint ms) + { + return SleepConditionVariableCS(&internalData->variable, &cs.internalData->criticalSection, (DWORD)ms)!=0; + } + + bool ConditionVariable::SleepWithReader(ReaderWriterLock& lock) + { + return SleepConditionVariableSRW(&internalData->variable, &lock.internalData->lock, INFINITE, CONDITION_VARIABLE_LOCKMODE_SHARED)!=0; + } + + bool ConditionVariable::SleepWithReaderForTime(ReaderWriterLock& lock, vint ms) + { + return SleepConditionVariableSRW(&internalData->variable, &lock.internalData->lock, (DWORD)ms, CONDITION_VARIABLE_LOCKMODE_SHARED)!=0; + } + + bool ConditionVariable::SleepWithWriter(ReaderWriterLock& lock) + { + return SleepConditionVariableSRW(&internalData->variable, &lock.internalData->lock, INFINITE, 0)!=0; + } + + bool ConditionVariable::SleepWithWriterForTime(ReaderWriterLock& lock, vint ms) + { + return SleepConditionVariableSRW(&internalData->variable, &lock.internalData->lock, (DWORD)ms, 0)!=0; + } + + void ConditionVariable::WakeOnePending() + { + WakeConditionVariable(&internalData->variable); + } + + void ConditionVariable::WakeAllPendings() + { + WakeAllConditionVariable(&internalData->variable); + } + +/*********************************************************************** +SpinLock +***********************************************************************/ + + SpinLock::Scope::Scope(SpinLock& _spinLock) + :spinLock(&_spinLock) + { + spinLock->Enter(); + } + + SpinLock::Scope::~Scope() + { + spinLock->Leave(); + } + + SpinLock::SpinLock() + :token(0) + { + } + + SpinLock::~SpinLock() + { + } + + bool SpinLock::TryEnter() + { + return _InterlockedExchange(&token, 1)==0; + } + + void SpinLock::Enter() + { + while(_InterlockedCompareExchange(&token, 1, 0)!=0) + { + while(token!=0) _mm_pause(); + } + } + + void SpinLock::Leave() + { + _InterlockedExchange(&token, 0); + } + +/*********************************************************************** +ThreadLocalStorage +***********************************************************************/ + +#define KEY ((DWORD&)key) + + ThreadLocalStorage::ThreadLocalStorage(Destructor _destructor) + :destructor(_destructor) + { + static_assert(sizeof(key) >= sizeof(DWORD), "ThreadLocalStorage's key storage is not large enouth."); + PushStorage(this); + KEY = TlsAlloc(); + CHECK_ERROR(KEY != TLS_OUT_OF_INDEXES, L"vl::ThreadLocalStorage::ThreadLocalStorage()#Failed to alloc new thread local storage index."); + } + + ThreadLocalStorage::~ThreadLocalStorage() + { + TlsFree(KEY); + } + + void* ThreadLocalStorage::Get() + { + CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Get()#Cannot access a disposed ThreadLocalStorage."); + return TlsGetValue(KEY); + } + + void ThreadLocalStorage::Set(void* data) + { + CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Set()#Cannot access a disposed ThreadLocalStorage."); + TlsSetValue(KEY, data); + } + +#undef KEY +} +#endif + +/*********************************************************************** +ThreadLocalStorage Common Implementations +***********************************************************************/ + +namespace vl +{ + void ThreadLocalStorage::Clear() + { + CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Clear()#Cannot access a disposed ThreadLocalStorage."); + if(destructor) + { + if (auto data = Get()) + { + destructor(data); + } + } + Set(nullptr); + } + + void ThreadLocalStorage::Dispose() + { + CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Dispose()#Cannot access a disposed ThreadLocalStorage."); + Clear(); + disposed = true; + } + + struct TlsStorageLink + { + ThreadLocalStorage* storage = nullptr; + TlsStorageLink* next = nullptr; + }; + + volatile bool tlsFixed = false; + TlsStorageLink* tlsHead = nullptr; + TlsStorageLink** tlsTail = &tlsHead; + + void ThreadLocalStorage::PushStorage(ThreadLocalStorage* storage) + { + CHECK_ERROR(!tlsFixed, L"vl::ThreadLocalStorage::PushStorage(ThreadLocalStorage*)#Cannot create new ThreadLocalStorage instance after calling ThreadLocalStorage::FixStorages()."); + auto link = new TlsStorageLink; + link->storage = storage; + *tlsTail = link; + tlsTail = &link->next; + } + + void ThreadLocalStorage::FixStorages() + { + tlsFixed = true; + } + + void ThreadLocalStorage::ClearStorages() + { + FixStorages(); + auto current = tlsHead; + while (current) + { + current->storage->Clear(); + current = current->next; + } + } + + void ThreadLocalStorage::DisposeStorages() + { + FixStorages(); + auto current = tlsHead; + tlsHead = nullptr; + tlsTail = nullptr; + while (current) + { + current->storage->Dispose(); + + auto temp = current; + current = current->next; + delete temp; + } + } +} + + +/*********************************************************************** +.\THREADINGLINUX.CPP +***********************************************************************/ +#ifdef VCZH_GCC +#include +#include +#include +#include +#if defined(__APPLE__) || defined(__APPLE_CC__) +#include +#endif + + +namespace vl +{ + using namespace threading_internal; + using namespace collections; + + +/*********************************************************************** +Thread +***********************************************************************/ + + namespace threading_internal + { + struct ThreadData + { + pthread_t id; + EventObject ev; + }; + + class ProceduredThread : public Thread + { + private: + Thread::ThreadProcedure procedure; + void* argument; + bool deleteAfterStopped; + + protected: + void Run() + { + bool deleteAfterStopped = this->deleteAfterStopped; + ThreadLocalStorage::FixStorages(); + try + { + procedure(this, argument); + threadState=Thread::Stopped; + internalData->ev.Signal(); + ThreadLocalStorage::ClearStorages(); + } + catch (...) + { + ThreadLocalStorage::ClearStorages(); + throw; + } + if(deleteAfterStopped) + { + delete this; + } + } + public: + ProceduredThread(Thread::ThreadProcedure _procedure, void* _argument, bool _deleteAfterStopped) + :procedure(_procedure) + ,argument(_argument) + ,deleteAfterStopped(_deleteAfterStopped) + { + } + }; + + class LambdaThread : public Thread + { + private: + Func procedure; + bool deleteAfterStopped; + + protected: + void Run() + { + bool deleteAfterStopped = this->deleteAfterStopped; + ThreadLocalStorage::FixStorages(); + try + { + procedure(); + threadState=Thread::Stopped; + internalData->ev.Signal(); + ThreadLocalStorage::ClearStorages(); + } + catch (...) + { + ThreadLocalStorage::ClearStorages(); + throw; + } + if(deleteAfterStopped) + { + delete this; + } + } + public: + LambdaThread(const Func& _procedure, bool _deleteAfterStopped) + :procedure(_procedure) + ,deleteAfterStopped(_deleteAfterStopped) + { + } + }; + } + + void InternalThreadProc(Thread* thread) + { + thread->Run(); + } + + void* InternalThreadProcWrapper(void* lpParameter) + { + InternalThreadProc((Thread*)lpParameter); + return 0; + } + + Thread::Thread() + { + internalData=new ThreadData; + internalData->ev.CreateManualUnsignal(false); + threadState=Thread::NotStarted; + } + + Thread::~Thread() + { + if (internalData) + { + Stop(); + if (threadState!=Thread::NotStarted) + { + pthread_detach(internalData->id); + } + delete internalData; + } + } + + Thread* Thread::CreateAndStart(ThreadProcedure procedure, void* argument, bool deleteAfterStopped) + { + if(procedure) + { + Thread* thread=new ProceduredThread(procedure, argument, deleteAfterStopped); + if(thread->Start()) + { + return thread; + } + else + { + delete thread; + } + } + return 0; + } + + Thread* Thread::CreateAndStart(const Func& procedure, bool deleteAfterStopped) + { + Thread* thread=new LambdaThread(procedure, deleteAfterStopped); + if(thread->Start()) + { + return thread; + } + else + { + delete thread; + } + return 0; + } + + void Thread::Sleep(vint ms) + { + if (ms >= 1000) + { + sleep(ms / 1000); + } + if (ms % 1000) + { + usleep((ms % 1000) * 1000); + } + } + + vint Thread::GetCPUCount() + { + return (vint)sysconf(_SC_NPROCESSORS_ONLN); + } + + vint Thread::GetCurrentThreadId() + { + return (vint)::pthread_self(); + } + + bool Thread::Start() + { + if(threadState==Thread::NotStarted) + { + if(pthread_create(&internalData->id, nullptr, &InternalThreadProcWrapper, this)==0) + { + threadState=Thread::Running; + return true; + } + } + return false; + } + + bool Thread::Wait() + { + return internalData->ev.Wait(); + } + + bool Thread::Stop() + { + if (threadState==Thread::Running) + { + if(pthread_cancel(internalData->id)==0) + { + threadState=Thread::Stopped; + internalData->ev.Signal(); + return true; + } + } + return false; + } + + Thread::ThreadState Thread::GetState() + { + return threadState; + } + +/*********************************************************************** +Mutex +***********************************************************************/ + + namespace threading_internal + { + struct MutexData + { + Semaphore sem; + }; + }; + + Mutex::Mutex() + { + internalData = new MutexData; + } + + Mutex::~Mutex() + { + delete internalData; + } + + bool Mutex::Create(bool owned, const WString& name) + { + return internalData->sem.Create(owned ? 0 : 1, 1, name); + } + + bool Mutex::Open(bool inheritable, const WString& name) + { + return internalData->sem.Open(inheritable, name); + } + + bool Mutex::Release() + { + return internalData->sem.Release(); + } + + bool Mutex::Wait() + { + return internalData->sem.Wait(); + } + +/*********************************************************************** +Semaphore +***********************************************************************/ + + namespace threading_internal + { + struct SemaphoreData + { + sem_t semUnnamed; + sem_t* semNamed = nullptr; + }; + } + + Semaphore::Semaphore() + :internalData(0) + { + } + + Semaphore::~Semaphore() + { + if (internalData) + { + if (internalData->semNamed) + { + sem_close(internalData->semNamed); + } + else + { + sem_destroy(&internalData->semUnnamed); + } + delete internalData; + } + } + + bool Semaphore::Create(vint initialCount, vint maxCount, const WString& name) + { + if (internalData) return false; + if (initialCount > maxCount) return false; + + internalData = new SemaphoreData; +#if defined(__APPLE__) + + AString auuid; + if(name.Length() == 0) + { + CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault); + CFStringRef cfstr = CFUUIDCreateString(kCFAllocatorDefault, cfuuid); + auuid = CFStringGetCStringPtr(cfstr, kCFStringEncodingASCII); + + CFRelease(cfstr); + CFRelease(cfuuid); + } + auuid = auuid.Insert(0, "/"); + // OSX SEM_NAME_LENGTH = 31 + if(auuid.Length() >= 30) + auuid = auuid.Sub(0, 30); + + if ((internalData->semNamed = sem_open(auuid.Buffer(), O_CREAT, O_RDWR, initialCount)) == SEM_FAILED) + { + delete internalData; + internalData = 0; + return false; + } + +#else + if (name == L"") + { + if(sem_init(&internalData->semUnnamed, 0, (int)initialCount) == -1) + { + delete internalData; + internalData = 0; + return false; + } + } + else + { + AString astr = wtoa(name); + + if ((internalData->semNamed = sem_open(astr.Buffer(), O_CREAT, 0777, initialCount)) == SEM_FAILED) + { + delete internalData; + internalData = 0; + return false; + } + } +#endif + + Release(initialCount); + return true; + } + + bool Semaphore::Open(bool inheritable, const WString& name) + { + if (internalData) return false; + if (inheritable) return false; + + internalData = new SemaphoreData; + if (!(internalData->semNamed = sem_open(wtoa(name).Buffer(), 0))) + { + delete internalData; + internalData = 0; + return false; + } + + return true; + } + + bool Semaphore::Release() + { + return Release(1); + } + + vint Semaphore::Release(vint count) + { + for (vint i = 0; i < count; i++) + { + if (internalData->semNamed) + { + sem_post(internalData->semNamed); + } + else + { + sem_post(&internalData->semUnnamed); + } + } + return true; + } + + bool Semaphore::Wait() + { + if (internalData->semNamed) + { + return sem_wait(internalData->semNamed) == 0; + } + else + { + return sem_wait(&internalData->semUnnamed) == 0; + } + } + +/*********************************************************************** +EventObject +***********************************************************************/ + + namespace threading_internal + { + struct EventData + { + bool autoReset; + volatile bool signaled; + CriticalSection mutex; + ConditionVariable cond; + volatile vint counter = 0; + }; + } + + EventObject::EventObject() + { + internalData = nullptr; + } + + EventObject::~EventObject() + { + if (internalData) + { + delete internalData; + } + } + + bool EventObject::CreateAutoUnsignal(bool signaled, const WString& name) + { + if (name!=L"") return false; + if (internalData) return false; + + internalData = new EventData; + internalData->autoReset = true; + internalData->signaled = signaled; + return true; + } + + bool EventObject::CreateManualUnsignal(bool signaled, const WString& name) + { + if (name!=L"") return false; + if (internalData) return false; + + internalData = new EventData; + internalData->autoReset = false; + internalData->signaled = signaled; + return true; + } + + bool EventObject::Signal() + { + if (!internalData) return false; + + internalData->mutex.Enter(); + internalData->signaled = true; + if (internalData->counter) + { + if (internalData->autoReset) + { + internalData->cond.WakeOnePending(); + internalData->signaled = false; + } + else + { + internalData->cond.WakeAllPendings(); + } + } + internalData->mutex.Leave(); + return true; + } + + bool EventObject::Unsignal() + { + if (!internalData) return false; + + internalData->mutex.Enter(); + internalData->signaled = false; + internalData->mutex.Leave(); + return true; + } + + bool EventObject::Wait() + { + if (!internalData) return false; + + internalData->mutex.Enter(); + if (internalData->signaled) + { + if (internalData->autoReset) + { + internalData->signaled = false; + } + } + else + { + internalData->counter++; + internalData->cond.SleepWith(internalData->mutex); + internalData->counter--; + } + internalData->mutex.Leave(); + return true; + } + +/*********************************************************************** +ThreadPoolLite +***********************************************************************/ + + namespace threading_internal + { + struct ThreadPoolTask + { + Func task; + Ptr next; + }; + + struct ThreadPoolData + { + Semaphore semaphore; + EventObject taskFinishEvent; + Ptr taskBegin; + Ptr* taskEnd = nullptr; + volatile bool stopping = false; + List taskThreads; + }; + + SpinLock threadPoolLock; + ThreadPoolData* threadPoolData = nullptr; + + void ThreadPoolProc(Thread* thread, void* argument) + { + while (true) + { + Ptr task; + + threadPoolData->semaphore.Wait(); + SPIN_LOCK(threadPoolLock) + { + if (threadPoolData->taskBegin) + { + task = threadPoolData->taskBegin; + threadPoolData->taskBegin = task->next; + } + + if (!threadPoolData->taskBegin) + { + threadPoolData->taskEnd = &threadPoolData->taskBegin; + threadPoolData->taskFinishEvent.Signal(); + } + } + + if (task) + { + ThreadLocalStorage::FixStorages(); + try + { + task->task(); + ThreadLocalStorage::ClearStorages(); + } + catch (...) + { + ThreadLocalStorage::ClearStorages(); + } + } + else if (threadPoolData->stopping) + { + return; + } + } + } + + bool ThreadPoolQueue(const Func& proc) + { + SPIN_LOCK(threadPoolLock) + { + if (!threadPoolData) + { + threadPoolData = new ThreadPoolData; + threadPoolData->semaphore.Create(0, 65536); + threadPoolData->taskFinishEvent.CreateManualUnsignal(false); + threadPoolData->taskEnd = &threadPoolData->taskBegin; + + for (vint i = 0; i < Thread::GetCPUCount() * 4; i++) + { + threadPoolData->taskThreads.Add(Thread::CreateAndStart(&ThreadPoolProc, nullptr, false)); + } + } + + if (threadPoolData) + { + if (threadPoolData->stopping) + { + return false; + } + + auto task = MakePtr(); + task->task = proc; + *threadPoolData->taskEnd = task; + threadPoolData->taskEnd = &task->next; + threadPoolData->semaphore.Release(); + threadPoolData->taskFinishEvent.Unsignal(); + } + } + return true; + } + + bool ThreadPoolStop(bool discardPendingTasks) + { + SPIN_LOCK(threadPoolLock) + { + if (!threadPoolData) return false; + if (threadPoolData->stopping) return false; + + threadPoolData->stopping = true; + if (discardPendingTasks) + { + threadPoolData->taskEnd = &threadPoolData->taskBegin; + threadPoolData->taskBegin = nullptr; + } + + threadPoolData->semaphore.Release(threadPoolData->taskThreads.Count()); + } + + threadPoolData->taskFinishEvent.Wait(); + for (vint i = 0; i < threadPoolData->taskThreads.Count(); i++) + { + auto thread = threadPoolData->taskThreads[i]; + thread->Wait(); + delete thread; + } + threadPoolData->taskThreads.Clear(); + + SPIN_LOCK(threadPoolLock) + { + delete threadPoolData; + threadPoolData = nullptr; + } + return true; + } + } + + ThreadPoolLite::ThreadPoolLite() + { + } + + ThreadPoolLite::~ThreadPoolLite() + { + } + + bool ThreadPoolLite::Queue(void(*proc)(void*), void* argument) + { + return ThreadPoolQueue([proc, argument](){proc(argument);}); + } + + bool ThreadPoolLite::Queue(const Func& proc) + { + return ThreadPoolQueue(proc); + } + + bool ThreadPoolLite::Stop(bool discardPendingTasks) + { + return ThreadPoolStop(discardPendingTasks); + } + +/*********************************************************************** +CriticalSection +***********************************************************************/ + + namespace threading_internal + { + struct CriticalSectionData + { + pthread_mutex_t mutex; + }; + } + + CriticalSection::CriticalSection() + { + internalData = new CriticalSectionData; + pthread_mutex_init(&internalData->mutex, nullptr); + } + + CriticalSection::~CriticalSection() + { + pthread_mutex_destroy(&internalData->mutex); + delete internalData; + } + + bool CriticalSection::TryEnter() + { + return pthread_mutex_trylock(&internalData->mutex) == 0; + } + + void CriticalSection::Enter() + { + pthread_mutex_lock(&internalData->mutex); + } + + void CriticalSection::Leave() + { + pthread_mutex_unlock(&internalData->mutex); + } + + CriticalSection::Scope::Scope(CriticalSection& _criticalSection) + :criticalSection(&_criticalSection) + { + criticalSection->Enter(); + } + + CriticalSection::Scope::~Scope() + { + criticalSection->Leave(); + } + +/*********************************************************************** +ReaderWriterLock +***********************************************************************/ + + namespace threading_internal + { + struct ReaderWriterLockData + { + pthread_rwlock_t rwlock; + }; + } + + ReaderWriterLock::ReaderWriterLock() + { + internalData = new ReaderWriterLockData; + pthread_rwlock_init(&internalData->rwlock, nullptr); + } + + ReaderWriterLock::~ReaderWriterLock() + { + pthread_rwlock_destroy(&internalData->rwlock); + delete internalData; + } + + bool ReaderWriterLock::TryEnterReader() + { + return pthread_rwlock_tryrdlock(&internalData->rwlock) == 0; + } + + void ReaderWriterLock::EnterReader() + { + pthread_rwlock_rdlock(&internalData->rwlock); + } + + void ReaderWriterLock::LeaveReader() + { + pthread_rwlock_unlock(&internalData->rwlock); + } + + bool ReaderWriterLock::TryEnterWriter() + { + return pthread_rwlock_trywrlock(&internalData->rwlock) == 0; + } + + void ReaderWriterLock::EnterWriter() + { + pthread_rwlock_wrlock(&internalData->rwlock); + } + + void ReaderWriterLock::LeaveWriter() + { + pthread_rwlock_unlock(&internalData->rwlock); + } + + ReaderWriterLock::ReaderScope::ReaderScope(ReaderWriterLock& _lock) + :lock(&_lock) + { + lock->EnterReader(); + } + + ReaderWriterLock::ReaderScope::~ReaderScope() + { + lock->LeaveReader(); + } + + ReaderWriterLock::WriterScope::WriterScope(ReaderWriterLock& _lock) + :lock(&_lock) + { + lock->EnterWriter(); + } + + ReaderWriterLock::WriterScope::~WriterScope() + { + lock->LeaveReader(); + } + +/*********************************************************************** +ConditionVariable +***********************************************************************/ + + namespace threading_internal + { + struct ConditionVariableData + { + pthread_cond_t cond; + }; + } + + ConditionVariable::ConditionVariable() + { + internalData = new ConditionVariableData; + pthread_cond_init(&internalData->cond, nullptr); + } + + ConditionVariable::~ConditionVariable() + { + pthread_cond_destroy(&internalData->cond); + delete internalData; + } + + bool ConditionVariable::SleepWith(CriticalSection& cs) + { + return pthread_cond_wait(&internalData->cond, &cs.internalData->mutex) == 0; + } + + void ConditionVariable::WakeOnePending() + { + pthread_cond_signal(&internalData->cond); + } + + void ConditionVariable::WakeAllPendings() + { + pthread_cond_broadcast(&internalData->cond); + } + +/*********************************************************************** +SpinLock +***********************************************************************/ + + SpinLock::Scope::Scope(SpinLock& _spinLock) + :spinLock(&_spinLock) + { + spinLock->Enter(); + } + + SpinLock::Scope::~Scope() + { + spinLock->Leave(); + } + + SpinLock::SpinLock() + :token(0) + { + } + + SpinLock::~SpinLock() + { + } + + bool SpinLock::TryEnter() + { + return __sync_lock_test_and_set(&token, 1)==0; + } + + void SpinLock::Enter() + { + while(__sync_val_compare_and_swap(&token, 0, 1)!=0) + { + while(token!=0) _mm_pause(); + } + } + + void SpinLock::Leave() + { + __sync_lock_test_and_set(&token, 0); + } + +/*********************************************************************** +ThreadLocalStorage +***********************************************************************/ + +#define KEY ((pthread_key_t&)key) + + ThreadLocalStorage::ThreadLocalStorage(Destructor _destructor) + :destructor(_destructor) + { + static_assert(sizeof(key) >= sizeof(pthread_key_t), "ThreadLocalStorage's key storage is not large enouth."); + PushStorage(this); + auto error = pthread_key_create(&KEY, destructor); + CHECK_ERROR(error != EAGAIN && error != ENOMEM, L"vl::ThreadLocalStorage::ThreadLocalStorage()#Failed to create a thread local storage index."); + } + + ThreadLocalStorage::~ThreadLocalStorage() + { + pthread_key_delete(KEY); + } + + void* ThreadLocalStorage::Get() + { + CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Get()#Cannot access a disposed ThreadLocalStorage."); + return pthread_getspecific(KEY); + } + + void ThreadLocalStorage::Set(void* data) + { + CHECK_ERROR(!disposed, L"vl::ThreadLocalStorage::Set()#Cannot access a disposed ThreadLocalStorage."); + pthread_setspecific(KEY, data); + } + +#undef KEY +} +#endif + + +/*********************************************************************** +.\STREAM\ACCESSOR.CPP +***********************************************************************/ +#include + +namespace vl +{ + namespace stream + { + using namespace collections; + +/*********************************************************************** +TextReader +***********************************************************************/ + + WString TextReader::ReadString(vint length) + { + wchar_t* buffer=new wchar_t[length+1]; + vint i=0; + for(;i0 && result[result.Length()-1]==L'\r') + { + return result.Left(result.Length()-1); + } + else + { + return result; + } + } + + WString TextReader::ReadToEnd() + { + WString result; + auto buffer = new wchar_t[65537]; + buffer[0]=L'\0'; + vint i=0; + while(true) + { + wchar_t c=ReadChar(); + if(c==L'\0') + { + buffer[i]=L'\0'; + result+=buffer; + buffer[0]=L'\0'; + i=0; + break; + } + else + { + if(i==65536) + { + buffer[i]=L'\0'; + result+=buffer; + buffer[0]=L'\0'; + i=0; + } + buffer[i++]=c; + } + } + result+=buffer; + delete[] buffer; + return result; + } + +/*********************************************************************** +TextWriter +***********************************************************************/ + + void TextWriter::WriteString(const wchar_t* string, vint charCount) + { + while(*string) + { + WriteChar(*string++); + } + } + + void TextWriter::WriteString(const wchar_t* string) + { + WriteString(string, (vint)wcslen(string)); + } + + void TextWriter::WriteString(const WString& string) + { + if(string.Length()) + { + WriteString(string.Buffer(), string.Length()); + } + } + + void TextWriter::WriteLine(const wchar_t* string, vint charCount) + { + WriteString(string, charCount); + WriteString(L"\r\n", 2); + } + + void TextWriter::WriteLine(const wchar_t* string) + { + WriteString(string); + WriteString(L"\r\n", 2); + } + + void TextWriter::WriteLine(const WString& string) + { + WriteString(string); + WriteString(L"\r\n", 2); + } + + namespace monospace_tabling + { + void WriteBorderLine(TextWriter& writer, Array& columnWidths, vint columns) + { + writer.WriteChar(L'+'); + for(vint i=0;i& columnWidths, vint rowHeight, vint columns, Array& tableByRow, vint startRow) + { + vint cellStart=startRow*columns; + for(vint r=0;r=length;i--) + { + writer.WriteChar(L' '); + } + writer.WriteChar(L'|'); + } + writer.WriteLine(L""); + } + } + } + using namespace monospace_tabling; + + void TextWriter::WriteMonospacedEnglishTable(collections::Array& tableByRow, vint rows, vint columns) + { + Array rowHeights(rows); + Array columnWidths(columns); + for(vint i=0;iremain) length=remain; + WString result=string.Sub(current, length); + current+=length; + return result; + } + } + + WString StringReader::ReadLine() + { + PrepareIfLastCallIsReadLine(); + if(IsEnd()) + { + return L""; + } + else + { + vint lineEnd=current; + while(lineEndRead(&buffer, sizeof(buffer))==0) + { + stream=0; + return 0; + } + else + { + return buffer; + } + } + else + { + return L'\0'; + } + } + +/*********************************************************************** +StreamWriter +***********************************************************************/ + + StreamWriter::StreamWriter(IStream& _stream) + :stream(&_stream) + { + } + + void StreamWriter::WriteChar(wchar_t c) + { + stream->Write(&c, sizeof(c)); + } + + void StreamWriter::WriteString(const wchar_t* string, vint charCount) + { + stream->Write((void*)string, charCount*sizeof(*string)); + } + +/*********************************************************************** +EncoderStream +***********************************************************************/ + + EncoderStream::EncoderStream(IStream& _stream, IEncoder& _encoder) + :stream(&_stream) + ,encoder(&_encoder) + ,position(0) + { + encoder->Setup(stream); + } + + EncoderStream::~EncoderStream() + { + Close(); + } + + bool EncoderStream::CanRead()const + { + return false; + } + + bool EncoderStream::CanWrite()const + { + return IsAvailable(); + } + + bool EncoderStream::CanSeek()const + { + return false; + } + + bool EncoderStream::CanPeek()const + { + return false; + } + + bool EncoderStream::IsLimited()const + { + return stream!=0 && stream->IsLimited(); + } + + bool EncoderStream::IsAvailable()const + { + return stream!=0 && stream->IsAvailable(); + } + + void EncoderStream::Close() + { + encoder->Close(); + stream=0; + } + + pos_t EncoderStream::Position()const + { + return IsAvailable()?position:-1; + } + + pos_t EncoderStream::Size()const + { + return -1; + } + + void EncoderStream::Seek(pos_t _size) + { + CHECK_FAIL(L"EncoderStream::Seek(pos_t)#Operation not supported."); + } + + void EncoderStream::SeekFromBegin(pos_t _size) + { + CHECK_FAIL(L"EncoderStream::SeekFromBegin(pos_t)#Operation not supported."); + } + + void EncoderStream::SeekFromEnd(pos_t _size) + { + CHECK_FAIL(L"EncoderStream::SeekFromEnd(pos_t)#Operation not supported."); + } + + vint EncoderStream::Read(void* _buffer, vint _size) + { + CHECK_FAIL(L"EncoderStream::Read(void*, vint)#Operation not supported."); + } + + vint EncoderStream::Write(void* _buffer, vint _size) + { + vint result=encoder->Write(_buffer, _size); + if(result>=0) + { + position+=result; + } + return result; + } + + vint EncoderStream::Peek(void* _buffer, vint _size) + { + CHECK_FAIL(L"EncoderStream::Peek(void*, vint)#Operation not supported."); + } + +/*********************************************************************** +DecoderStream +***********************************************************************/ + + DecoderStream::DecoderStream(IStream& _stream, IDecoder& _decoder) + :stream(&_stream) + ,decoder(&_decoder) + ,position(0) + { + decoder->Setup(stream); + } + + DecoderStream::~DecoderStream() + { + Close(); + } + + bool DecoderStream::CanRead()const + { + return IsAvailable(); + } + + bool DecoderStream::CanWrite()const + { + return false; + } + + bool DecoderStream::CanSeek()const + { + return false; + } + + bool DecoderStream::CanPeek()const + { + return false; + } + + bool DecoderStream::IsLimited()const + { + return stream!=0 && stream->IsLimited(); + } + + bool DecoderStream::IsAvailable()const + { + return stream!=0 && stream->IsAvailable(); + } + + void DecoderStream::Close() + { + decoder->Close(); + stream=0; + } + + pos_t DecoderStream::Position()const + { + return IsAvailable()?position:-1; + } + + pos_t DecoderStream::Size()const + { + return -1; + } + + void DecoderStream::Seek(pos_t _size) + { + CHECK_FAIL(L"DecoderStream::Seek(pos_t)#Operation not supported."); + } + + void DecoderStream::SeekFromBegin(pos_t _size) + { + CHECK_FAIL(L"DecoderStream::SeekFromBegin(pos_t)#Operation not supported."); + } + + void DecoderStream::SeekFromEnd(pos_t _size) + { + CHECK_FAIL(L"DecoderStream::SeekFromEnd(pos_t)#Operation not supported."); + } + + vint DecoderStream::Read(void* _buffer, vint _size) + { + vint result=decoder->Read(_buffer, _size); + if(result>=0) + { + position+=result; + } + return result; + } + + vint DecoderStream::Write(void* _buffer, vint _size) + { + CHECK_FAIL(L"DecoderStream::Write(void*, vint)#Operation not supported."); + } + + vint DecoderStream::Peek(void* _buffer, vint _size) + { + CHECK_FAIL(L"DecoderStream::Peek(void*, vint)#Operation not supported."); + } + } +} + + +/*********************************************************************** +.\STREAM\BROADCASTSTREAM.CPP +***********************************************************************/ + +namespace vl +{ + namespace stream + { +/*********************************************************************** +BroadcastStream +***********************************************************************/ + + BroadcastStream::BroadcastStream() + :closed(false) + ,position(0) + { + } + + BroadcastStream::~BroadcastStream() + { + } + + BroadcastStream::StreamList& BroadcastStream::Targets() + { + return streams; + } + + bool BroadcastStream::CanRead()const + { + return false; + } + + bool BroadcastStream::CanWrite()const + { + return !closed; + } + + bool BroadcastStream::CanSeek()const + { + return false; + } + + bool BroadcastStream::CanPeek()const + { + return false; + } + + bool BroadcastStream::IsLimited()const + { + return false; + } + + bool BroadcastStream::IsAvailable()const + { + return !closed; + } + + void BroadcastStream::Close() + { + closed=true; + position=-1; + } + + pos_t BroadcastStream::Position()const + { + return position; + } + + pos_t BroadcastStream::Size()const + { + return position; + } + + void BroadcastStream::Seek(pos_t _size) + { + CHECK_FAIL(L"BroadcastStream::Seek(pos_t)#Operation not supported."); + } + + void BroadcastStream::SeekFromBegin(pos_t _size) + { + CHECK_FAIL(L"BroadcastStream::SeekFromBegin(pos_t)#Operation not supported."); + } + + void BroadcastStream::SeekFromEnd(pos_t _size) + { + CHECK_FAIL(L"BroadcastStream::SeekFromEnd(pos_t)#Operation not supported."); + } + + vint BroadcastStream::Read(void* _buffer, vint _size) + { + CHECK_FAIL(L"BroadcastStream::Read(void*, vint)#Operation not supported."); + } + + vint BroadcastStream::Write(void* _buffer, vint _size) + { + for(vint i=0;iWrite(_buffer, _size); + } + position+=_size; + return _size; + } + + vint BroadcastStream::Peek(void* _buffer, vint _size) + { + CHECK_FAIL(L"BroadcastStream::Peek(void*, vint)#Operation not supported."); + } + } +} + +/*********************************************************************** +.\STREAM\CACHESTREAM.CPP +***********************************************************************/ + +namespace vl +{ + namespace stream + { +/*********************************************************************** +CacheStream +***********************************************************************/ + + void CacheStream::Flush() + { + if(dirtyLength>0) + { + if(target->Position()!=start+dirtyStart) + { + target->SeekFromBegin(start+dirtyStart); + } + target->Write(buffer+dirtyStart, dirtyLength); + } + dirtyStart=0; + dirtyLength=0; + availableLength=0; + } + + void CacheStream::Load(pos_t _position) + { + if(target->Position()!=_position) + { + target->SeekFromBegin(_position); + } + start=_position; + if(target->CanRead()) + { + availableLength=target->Read(buffer, block); + } + } + + vint CacheStream::InternalRead(void* _buffer, vint _size) + { + vint readed=0; + if(position>=start && positionreaded) + { + Flush(); + if(_size-readed>=block) + { + if(CanSeek()) + { + target->SeekFromBegin(position+readed); + } + vint additional=target->Read(_buffer, _size-readed); + if(additional!=-1) + { + readed+=additional; + } + } + else + { + Load(position+readed); + vint remain=_size-readed; + vint min=availableLength=start && position0) + { + availableLength+=availableOffset; + } + } + + if(_size>written) + { + Flush(); + if(_size-written>=block) + { + if(CanSeek()) + { + target->SeekFromBegin(position+written); + } + vint additional=target->Write(_buffer, _size-written); + if(additional!=-1) + { + written+=additional; + } + } + else + { + Load(position+written); + dirtyLength=_size-written; + memcpy(buffer, _buffer, dirtyLength); + written+=dirtyLength; + } + } + return written; + } + + CacheStream::CacheStream(IStream& _target, vint _block) + :target(&_target) + ,block(_block) + ,start(0) + ,position(0) + ,dirtyStart(0) + ,dirtyLength(0) + ,availableLength(0) + ,operatedSize(0) + { + if(block<=0) + { + block=65536; + } + buffer=new char[block]; + } + + CacheStream::~CacheStream() + { + Close(); + } + + bool CacheStream::CanRead()const + { + return target!=0 && target->CanRead(); + } + + bool CacheStream::CanWrite()const + { + return target!=0 && target->CanWrite(); + } + + bool CacheStream::CanSeek()const + { + return target!=0 && target->CanSeek(); + } + + bool CacheStream::CanPeek()const + { + return target!=0 && target->CanPeek(); + } + + bool CacheStream::IsLimited()const + { + return target!=0 && target->IsLimited(); + } + + bool CacheStream::IsAvailable()const + { + return target!=0 && target->IsAvailable(); + } + + void CacheStream::Close() + { + Flush(); + target=0; + delete[] buffer; + buffer=0; + position=-1; + dirtyStart=0; + dirtyLength=0; + availableLength=0; + operatedSize=-1; + } + + pos_t CacheStream::Position()const + { + return position; + } + + pos_t CacheStream::Size()const + { + if(target!=0) + { + if(IsLimited()) + { + return target->Size(); + } + else + { + return operatedSize; + } + } + else + { + return -1; + } + } + + void CacheStream::Seek(pos_t _size) + { + SeekFromBegin(position+_size); + } + + void CacheStream::SeekFromBegin(pos_t _size) + { + if(CanSeek()) + { + if(_size<0) + { + position=0; + } + else if(_size>Size()) + { + position=Size(); + } + else + { + position=_size; + } + } + } + + void CacheStream::SeekFromEnd(pos_t _size) + { + SeekFromBegin(Size()-_size); + } + + vint CacheStream::Read(void* _buffer, vint _size) + { + CHECK_ERROR(CanRead(), L"CacheStream::Read(void*, vint)#Stream is closed or operation not supported."); + CHECK_ERROR(_size>=0, L"CacheStream::Read(void*, vint)#Argument size cannot be negative."); + + _size=InternalRead(_buffer, _size); + position+=_size; + if(operatedSize=0, L"CacheStream::Read(void*, vint)#Argument size cannot be negative."); + + if(IsLimited()) + { + pos_t size=Size(); + if(size!=-1) + { + vint remain=(vint)(size-(position+_size)); + if(remain<0) + { + _size-=remain; + } + } + } + + _size=InternalWrite(_buffer, _size); + position+=_size; + if(operatedSize=0, L"CacheStream::Read(void*, vint)#Argument size cannot be negative."); + + return InternalRead(_buffer, _size); + } + } +} + +/*********************************************************************** +.\STREAM\CHARFORMAT.CPP +***********************************************************************/ +#if defined VCZH_MSVC +#include +#elif defined VCZH_GCC +#endif + +namespace vl +{ + namespace stream + { + +/*********************************************************************** +CharEncoder +***********************************************************************/ + + CharEncoder::CharEncoder() + :stream(0) + ,cacheSize(0) + { + } + + void CharEncoder::Setup(IStream* _stream) + { + stream=_stream; + } + + void CharEncoder::Close() + { + } + + vint CharEncoder::Write(void* _buffer, vint _size) + { + const vint all=cacheSize+_size; + const vint chars=all/sizeof(wchar_t); + const vint bytes=chars*sizeof(wchar_t); + wchar_t* unicode=0; + bool needToFree=false; + vint result=0; + + if(chars) + { + if(cacheSize>0) + { + unicode=new wchar_t[chars]; + memcpy(unicode, cacheBuffer, cacheSize); + memcpy(((vuint8_t*)unicode)+cacheSize, _buffer, bytes-cacheSize); + needToFree=true; + } + else + { + unicode=(wchar_t*)_buffer; + } + result=WriteString(unicode, chars)*sizeof(wchar_t)-cacheSize; + cacheSize=0; + } + + if(needToFree) + { + delete[] unicode; + } + if(all-bytes>0) + { + cacheSize=all-bytes; + memcpy(cacheBuffer, (vuint8_t*)_buffer+_size-cacheSize, cacheSize); + result+=cacheSize; + } + return result; + } + +/*********************************************************************** +CharDecoder +***********************************************************************/ + + CharDecoder::CharDecoder() + :stream(0) + ,cacheSize(0) + { + } + + void CharDecoder::Setup(IStream* _stream) + { + stream=_stream; + } + + void CharDecoder::Close() + { + } + + vint CharDecoder::Read(void* _buffer, vint _size) + { + vuint8_t* unicode=(vuint8_t*)_buffer; + vint result=0; + { + vint index=0; + while(cacheSize>0 && _size>0) + { + *unicode++=cacheBuffer[index]++; + cacheSize--; + _size--; + result++; + } + } + + const vint chars=_size/sizeof(wchar_t); + vint bytes=ReadString((wchar_t*)unicode, chars)*sizeof(wchar_t); + result+=bytes; + _size-=bytes; + unicode+=bytes; + + if(_size>0) + { + wchar_t c; + if(ReadString(&c, 1)==1) + { + cacheSize=sizeof(wchar_t)-_size; + memcpy(unicode, &c, _size); + memcpy(cacheBuffer, (vuint8_t*)&c+_size, cacheSize); + result+=_size; + } + } + return result; + } + +/*********************************************************************** +Mbcs +***********************************************************************/ + + vint MbcsEncoder::WriteString(wchar_t* _buffer, vint chars) + { +#if defined VCZH_MSVC + vint length=WideCharToMultiByte(CP_THREAD_ACP, 0, _buffer, (int)chars, NULL, NULL, NULL, NULL); + char* mbcs=new char[length]; + WideCharToMultiByte(CP_THREAD_ACP, 0, _buffer, (int)chars, mbcs, (int)length, NULL, NULL); + vint result=stream->Write(mbcs, length); + delete[] mbcs; +#elif defined VCZH_GCC + WString w(_buffer, chars); + AString a=wtoa(w); + vint length=a.Length(); + vint result=stream->Write((void*)a.Buffer(), length); +#endif + if(result==length) + { + return chars; + } + else + { + Close(); + return 0; + } + } + + vint MbcsDecoder::ReadString(wchar_t* _buffer, vint chars) + { + char* source=new char[chars*2]; + char* reading=source; + vint readed=0; + while(readedRead(reading, 1)!=1) + { + break; + } +#if defined VCZH_MSVC + if(IsDBCSLeadByte(*reading)) +#elif defined VCZH_GCC + if((vint8_t)*reading<0) +#endif + { + if(stream->Read(reading+1, 1)!=1) + { + break; + } + reading+=2; + } + else + { + reading++; + } + readed++; + } +#if defined VCZH_MSVC + MultiByteToWideChar(CP_THREAD_ACP, 0, source, (int)(reading-source), _buffer, (int)chars); +#elif defined VCZH_GCC + AString a(source, (vint)(reading-source)); + WString w=atow(a); + memcpy(_buffer, w.Buffer(), readed*sizeof(wchar_t)); +#endif + delete[] source; + return readed; + } + +/*********************************************************************** +Utf-16 +***********************************************************************/ + + vint Utf16Encoder::WriteString(wchar_t* _buffer, vint chars) + { +#if defined VCZH_MSVC + return stream->Write(_buffer, chars*sizeof(wchar_t))/sizeof(wchar_t); +#elif defined VCZH_GCC + vint writed = 0; + vuint16_t utf16 = 0; + vuint8_t* utf16buf = (vuint8_t*)&utf16; + while (writed < chars) + { + wchar_t w = *_buffer++; + if (w < 0x10000) + { + utf16 = (vuint16_t)w; + if (stream->Write(&utf16buf[0], 1) != 1) break; + if (stream->Write(&utf16buf[1], 1) != 1) break; + } + else if (w < 0x110000) + { + wchar_t inc = w - 0x10000; + + utf16 = (vuint16_t)(inc / 0x400) + 0xD800; + if (stream->Write(&utf16buf[0], 1) != 1) break; + if (stream->Write(&utf16buf[1], 1) != 1) break; + + utf16 = (vuint16_t)(inc % 0x400) + 0xDC00; + if (stream->Write(&utf16buf[0], 1) != 1) break; + if (stream->Write(&utf16buf[1], 1) != 1) break; + } + else + { + break; + } + writed++; + } + if(writed!=chars) + { + Close(); + } + return writed; +#endif + } + + vint Utf16Decoder::ReadString(wchar_t* _buffer, vint chars) + { +#if defined VCZH_MSVC + return stream->Read(_buffer, chars*sizeof(wchar_t))/sizeof(wchar_t); +#elif defined VCZH_GCC + wchar_t* writing = _buffer; + while (writing - _buffer < chars) + { + vuint16_t utf16_1 = 0; + vuint16_t utf16_2 = 0; + + if (stream->Read(&utf16_1, 2) != 2) break; + if (utf16_1 < 0xD800 || utf16_1 > 0xDFFF) + { + *writing++ = (wchar_t)utf16_1; + } + else if (utf16_1 < 0xDC00) + { + if (stream->Read(&utf16_2, 2) != 2) break; + if (0xDC00 <= utf16_2 && utf16_2 <= 0xDFFF) + { + *writing++ = (wchar_t)(utf16_1 - 0xD800) * 0x400 + (wchar_t)(utf16_2 - 0xDC00) + 0x10000; + } + else + { + break; + } + } + else + { + break; + } + } + return writing - _buffer; +#endif + } + +/*********************************************************************** +Utf-16-be +***********************************************************************/ + + vint Utf16BEEncoder::WriteString(wchar_t* _buffer, vint chars) + { +#if defined VCZH_MSVC + vint writed=0; + while(writedWrite(((unsigned char*)_buffer)+1, 1)!=1) + { + break; + } + if(stream->Write(_buffer, 1)!=1) + { + break; + } + _buffer++; + writed++; + } + if(writed!=chars) + { + Close(); + } + return writed; +#elif defined VCZH_GCC + vint writed = 0; + vuint16_t utf16 = 0; + vuint8_t* utf16buf = (vuint8_t*)&utf16; + while (writed < chars) + { + wchar_t w = *_buffer++; + if (w < 0x10000) + { + utf16 = (vuint16_t)w; + if (stream->Write(&utf16buf[1], 1) != 1) break; + if (stream->Write(&utf16buf[0], 1) != 1) break; + } + else if (w < 0x110000) + { + wchar_t inc = w - 0x10000; + + utf16 = (vuint16_t)(inc / 0x400) + 0xD800; + if (stream->Write(&utf16buf[1], 1) != 1) break; + if (stream->Write(&utf16buf[0], 1) != 1) break; + + utf16 = (vuint16_t)(inc % 0x400) + 0xDC00; + if (stream->Write(&utf16buf[1], 1) != 1) break; + if (stream->Write(&utf16buf[0], 1) != 1) break; + } + else + { + break; + } + writed++; + } + if(writed!=chars) + { + Close(); + } + return writed; +#endif + } + + vint Utf16BEDecoder::ReadString(wchar_t* _buffer, vint chars) + { +#if defined VCZH_MSVC + chars=stream->Read(_buffer, chars*sizeof(wchar_t))/sizeof(wchar_t); + unsigned char* unicode=(unsigned char*)_buffer; + for(vint i=0;iRead(&utf16_1, 2) != 2) break; + + utf16buf = (vuint8_t*)&utf16_1; + utf16buf_temp = utf16buf[0]; + utf16buf[0] = utf16buf[1]; + utf16buf[1] = utf16buf_temp; + + if (utf16_1 < 0xD800 || utf16_1 > 0xDFFF) + { + *writing++ = (wchar_t)utf16_1; + } + else if (utf16_1 < 0xDC00) + { + if (stream->Read(&utf16_2, 2) != 2) break; + + utf16buf = (vuint8_t*)&utf16_2; + utf16buf_temp = utf16buf[0]; + utf16buf[0] = utf16buf[1]; + utf16buf[1] = utf16buf_temp; + + if (0xDC00 <= utf16_2 && utf16_2 <= 0xDFFF) + { + *writing++ = (wchar_t)(utf16_1 - 0xD800) * 0x400 + (wchar_t)(utf16_2 - 0xDC00) + 0x10000; + } + else + { + break; + } + } + else + { + break; + } + } + return writing - _buffer; +#endif + } + +/*********************************************************************** +Utf8 +***********************************************************************/ + + vint Utf8Encoder::WriteString(wchar_t* _buffer, vint chars) + { +#if defined VCZH_MSVC + vint length=WideCharToMultiByte(CP_UTF8, 0, _buffer, (int)chars, NULL, NULL, NULL, NULL); + char* mbcs=new char[length]; + WideCharToMultiByte(CP_UTF8, 0, _buffer, (int)chars, mbcs, (int)length, NULL, NULL); + vint result=stream->Write(mbcs, length); + delete[] mbcs; + if(result==length) + { + return chars; + } + else + { + Close(); + return 0; + } +#elif defined VCZH_GCC + vint writed = 0; + while (writed < chars) + { + wchar_t w = *_buffer++; + vuint8_t utf8[4]; + if (w < 0x80) + { + utf8[0] = (vuint8_t)w; + if (stream->Write(utf8, 1) != 1) break; + } + else if (w < 0x800) + { + utf8[0] = 0xC0 + ((w & 0x7C0) >> 6); + utf8[1] = 0x80 + (w & 0x3F); + if (stream->Write(utf8, 2) != 2) break; + } + else if (w < 0x10000) + { + utf8[0] = 0xE0 + ((w & 0xF000) >> 12); + utf8[1] = 0x80 + ((w & 0xFC0) >> 6); + utf8[2] = 0x80 + (w & 0x3F); + if (stream->Write(utf8, 3) != 3) break; + } + else if (w < 0x110000) // only accept UTF-16 range + { + utf8[0] = 0xF0 + ((w & 0x1C0000) >> 18); + utf8[1] = 0x80 + ((w & 0x3F000) >> 12); + utf8[2] = 0x80 + ((w & 0xFC0) >> 6); + utf8[3] = 0x80 + (w & 0x3F); + if (stream->Write(utf8, 4) != 4) break; + } + else + { + break; + } + writed++; + } + if(writed!=chars) + { + Close(); + } + return writed; +#endif + } + + Utf8Decoder::Utf8Decoder() +#if defined VCZH_MSVC + :cache(0) + ,cacheAvailable(false) +#endif + { + } + + vint Utf8Decoder::ReadString(wchar_t* _buffer, vint chars) + { + vuint8_t source[4]; +#if defined VCZH_MSVC + wchar_t target[2]; +#endif + wchar_t* writing=_buffer; + vint readed=0; + vint sourceCount=0; + + while(readedRead(source, 1)!=1) + { + break; + } + if((*source & 0xF0) == 0xF0) + { + if(stream->Read(source+1, 3)!=3) + { + break; + } + sourceCount=4; + } + else if((*source & 0xE0) == 0xE0) + { + if(stream->Read(source+1, 2)!=2) + { + break; + } + sourceCount=3; + } + else if((*source & 0xC0) == 0xC0) + { + if(stream->Read(source+1, 1)!=1) + { + break; + } + sourceCount=2; + } + else + { + sourceCount=1; + } +#if defined VCZH_MSVC + int targetCount=MultiByteToWideChar(CP_UTF8, 0, (char*)source, (int)sourceCount, target, 2); + if(targetCount==1) + { + *writing++=target[0]; + } + else if(targetCount==2) + { + *writing++=target[0]; + cache=target[1]; + cacheAvailable=true; + } + else + { + break; + } + } +#elif defined VCZH_GCC + if (sourceCount == 1) + { + *writing++ = (wchar_t)source[0]; + } + else if (sourceCount == 2) + { + *writing++ = (((wchar_t)source[0] & 0x1F) << 6) + ((wchar_t)source[1] & 0x3F); + } + else if (sourceCount == 3) + { + *writing++ = (((wchar_t)source[0] & 0xF) << 12) + (((wchar_t)source[1] & 0x3F) << 6) + ((wchar_t)source[2] & 0x3F); + } + else if (sourceCount == 4) + { + *writing++ = (((wchar_t)source[0] & 0x7) << 18) + (((wchar_t)source[1] & 0x3F) << 12) + (((wchar_t)source[2] & 0x3F) << 6) + ((wchar_t)source[3] & 0x3F); + } + else + { + break; + } +#endif + readed++; + } + return readed; + } + +/*********************************************************************** +BomEncoder +***********************************************************************/ + + BomEncoder::BomEncoder(Encoding _encoding) + :encoding(_encoding) + ,encoder(0) + { + switch(encoding) + { + case Mbcs: + encoder=new MbcsEncoder; + break; + case Utf8: + encoder=new Utf8Encoder; + break; + case Utf16: + encoder=new Utf16Encoder; + break; + case Utf16BE: + encoder=new Utf16BEEncoder; + break; + } + } + + BomEncoder::~BomEncoder() + { + Close(); + } + + void BomEncoder::Setup(IStream* _stream) + { + switch(encoding) + { + case Mbcs: + break; + case Utf8: + _stream->Write((void*)"\xEF\xBB\xBF", 3); + break; + case Utf16: + _stream->Write((void*)"\xFF\xFE", 2); + break; + case Utf16BE: + _stream->Write((void*)"\xFE\xFF", 2); + break; + } + encoder->Setup(_stream); + } + + void BomEncoder::Close() + { + if(encoder) + { + encoder->Close(); + delete encoder; + encoder=0; + } + } + + vint BomEncoder::Write(void* _buffer, vint _size) + { + return encoder->Write(_buffer, _size); + } + +/*********************************************************************** +BomDecoder +***********************************************************************/ + + BomDecoder::BomStream::BomStream(IStream* _stream, char* _bom, vint _bomLength) + :stream(_stream) + ,bomPosition(0) + ,bomLength(_bomLength) + { + memcpy(bom, _bom, bomLength); + } + + bool BomDecoder::BomStream::CanRead()const + { + return IsAvailable(); + } + + bool BomDecoder::BomStream::CanWrite()const + { + return false; + } + + bool BomDecoder::BomStream::CanSeek()const + { + return false; + } + + bool BomDecoder::BomStream::CanPeek()const + { + return false; + } + + bool BomDecoder::BomStream::IsLimited()const + { + return stream!=0 && stream->IsLimited(); + } + + bool BomDecoder::BomStream::IsAvailable()const + { + return stream!=0 && stream->IsAvailable(); + } + + void BomDecoder::BomStream::Close() + { + stream=0; + } + + pos_t BomDecoder::BomStream::Position()const + { + return IsAvailable()?bomPosition+stream->Position():-1; + } + + pos_t BomDecoder::BomStream::Size()const + { + return -1; + } + + void BomDecoder::BomStream::Seek(pos_t _size) + { + CHECK_FAIL(L"BomDecoder::BomStream::Seek(pos_t)#Operation not supported."); + } + + void BomDecoder::BomStream::SeekFromBegin(pos_t _size) + { + CHECK_FAIL(L"BomDecoder::BomStream::SeekFromBegin(pos_t)#Operation not supported."); + } + + void BomDecoder::BomStream::SeekFromEnd(pos_t _size) + { + CHECK_FAIL(L"BomDecoder::BomStream::SeekFromEnd(pos_t)#Operation not supported."); + } + + vint BomDecoder::BomStream::Read(void* _buffer, vint _size) + { + vint result=0; + unsigned char* buffer=(unsigned char*)_buffer; + if(bomPositionRead(buffer, _size); + } + return result; + } + + vint BomDecoder::BomStream::Write(void* _buffer, vint _size) + { + CHECK_FAIL(L"BomDecoder::BomStream::Write(void*, vint)#Operation not supported."); + } + + vint BomDecoder::BomStream::Peek(void* _buffer, vint _size) + { + CHECK_FAIL(L"BomDecoder::BomStream::Peek(void*, vint)#Operation not supported."); + } + + BomDecoder::BomDecoder() + :decoder(0) + { + } + + BomDecoder::~BomDecoder() + { + Close(); + } + + void BomDecoder::Setup(IStream* _stream) + { + char bom[3]={0}; + vint length=_stream->Read(bom, sizeof(bom)); + if(strncmp(bom, "\xEF\xBB\xBF", 3)==0) + { + decoder=new Utf8Decoder; + stream=new BomStream(_stream, bom+3, 0); + } + else if(strncmp(bom, "\xFF\xFE", 2)==0) + { + decoder=new Utf16Decoder; + stream=new BomStream(_stream, bom+2, 1); + } + else if(strncmp(bom, "\xFE\xFF", 2)==0) + { + decoder=new Utf16BEDecoder; + stream=new BomStream(_stream, bom+2, 1); + } + else + { + decoder=new MbcsDecoder; + stream=new BomStream(_stream, bom, 3); + } + decoder->Setup(stream); + } + + void BomDecoder::Close() + { + if(decoder) + { + decoder->Close(); + delete decoder; + decoder=0; + stream->Close(); + delete stream; + stream=0; + } + } + + vint BomDecoder::Read(void* _buffer, vint _size) + { + return decoder->Read(_buffer, _size); + } + +/*********************************************************************** +CharEncoder +***********************************************************************/ + + bool CanBeMbcs(unsigned char* buffer, vint size) + { + for(vint i=0;i + bool GetEncodingResult(int(&tests)[Count], bool(&results)[Count], int test) + { + for (vint i = 0; i < Count; i++) + { + if (tests[i] & test) + { + if (results[i]) return true; + } + } + return false; + } +#endif + + void TestEncoding(unsigned char* buffer, vint size, BomEncoder::Encoding& encoding, bool& containsBom) + { + if (size >= 3 && strncmp((char*)buffer, "\xEF\xBB\xBF", 3) == 0) + { + encoding = BomEncoder::Utf8; + containsBom = true; + } + else if (size >= 2 && strncmp((char*)buffer, "\xFF\xFE", 2) == 0) + { + encoding = BomEncoder::Utf16; + containsBom = true; + } + else if (size >= 2 && strncmp((char*)buffer, "\xFE\xFF", 2) == 0) + { + encoding = BomEncoder::Utf16BE; + containsBom = true; + } + else + { + encoding = BomEncoder::Mbcs; + containsBom = false; + + bool utf16HitSurrogatePairs = false; + bool utf16BEHitSurrogatePairs = false; + bool roughMbcs = CanBeMbcs(buffer, size); + bool roughUtf8 = CanBeUtf8(buffer, size); + bool roughUtf16 = CanBeUtf16(buffer, size, utf16HitSurrogatePairs); + bool roughUtf16BE = CanBeUtf16BE(buffer, size, utf16BEHitSurrogatePairs); + + vint roughCount = (roughMbcs ? 1 : 0) + (roughUtf8 ? 1 : 0) + (roughUtf16 ? 1 : 0) + (roughUtf16BE ? 1 : 0); + if (roughCount == 1) + { + if (roughUtf8) encoding = BomEncoder::Utf8; + else if (roughUtf16) encoding = BomEncoder::Utf16; + else if (roughUtf16BE) encoding = BomEncoder::Utf16BE; + } + else if (roughCount > 1) + { +#if defined VCZH_MSVC + int tests[] = + { + IS_TEXT_UNICODE_REVERSE_ASCII16, + IS_TEXT_UNICODE_REVERSE_STATISTICS, + IS_TEXT_UNICODE_REVERSE_CONTROLS, + + IS_TEXT_UNICODE_ASCII16, + IS_TEXT_UNICODE_STATISTICS, + IS_TEXT_UNICODE_CONTROLS, + + IS_TEXT_UNICODE_ILLEGAL_CHARS, + IS_TEXT_UNICODE_ODD_LENGTH, + IS_TEXT_UNICODE_NULL_BYTES, + }; + + const vint TestCount = sizeof(tests) / sizeof(*tests); + bool results[TestCount]; + for (vint i = 0; i < TestCount; i++) + { + int test = tests[i]; + results[i] = IsTextUnicode(buffer, (int)size, &test) != 0; + } + + if (size % 2 == 0 + && !GetEncodingResult(tests, results, IS_TEXT_UNICODE_REVERSE_ASCII16) + && !GetEncodingResult(tests, results, IS_TEXT_UNICODE_REVERSE_STATISTICS) + && !GetEncodingResult(tests, results, IS_TEXT_UNICODE_REVERSE_CONTROLS) + ) + { + for (vint i = 0; i < size; i += 2) + { + unsigned char c = buffer[i]; + buffer[i] = buffer[i + 1]; + buffer[i + 1] = c; + } + // 3 = (count of reverse group) = (count of unicode group) + for (vint i = 0; i < 3; i++) + { + int test = tests[i + 3]; + results[i] = IsTextUnicode(buffer, (int)size, &test) != 0; + } + for (vint i = 0; i < size; i += 2) + { + unsigned char c = buffer[i]; + buffer[i] = buffer[i + 1]; + buffer[i + 1] = c; + } + } + + if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_NOT_UNICODE_MASK)) + { + if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_NOT_ASCII_MASK)) + { + encoding = BomEncoder::Utf8; + } + else if (roughUtf8 || !roughMbcs) + { + encoding = BomEncoder::Utf8; + } + } + else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_ASCII16)) + { + encoding = BomEncoder::Utf16; + } + else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_REVERSE_ASCII16)) + { + encoding = BomEncoder::Utf16BE; + } + else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_CONTROLS)) + { + encoding = BomEncoder::Utf16; + } + else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_REVERSE_CONTROLS)) + { + encoding = BomEncoder::Utf16BE; + } + else + { + if (!roughUtf8) + { + if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_STATISTICS)) + { + encoding = BomEncoder::Utf16; + } + else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_STATISTICS)) + { + encoding = BomEncoder::Utf16BE; + } + } + else if (GetEncodingResult(tests, results, IS_TEXT_UNICODE_NOT_UNICODE_MASK)) + { + encoding = BomEncoder::Utf8; + } + else if (roughUtf8 || !roughMbcs) + { + encoding = BomEncoder::Utf8; + } + } +#elif defined VCZH_GCC + if (roughUtf16 && roughUtf16BE && !roughUtf8) + { + if (utf16BEHitSurrogatePairs && !utf16HitSurrogatePairs) + { + encoding = BomEncoder::Utf16BE; + } + else + { + encoding = BomEncoder::Utf16; + } + } + else + { + encoding = BomEncoder::Utf8; + } +#endif + } + } + } + } +} + + +/*********************************************************************** +.\STREAM\COMPRESSIONSTREAM.CPP +***********************************************************************/ + +namespace vl +{ + namespace stream + { + using namespace collections; + using namespace lzw; + +/*********************************************************************** +LzwBase +***********************************************************************/ + + void LzwBase::UpdateIndexBits() + { + if (nextIndex >=2 && (nextIndex & (nextIndex - 1)) == 0) + { + indexBits++; + } + } + + lzw::Code* LzwBase::CreateCode(lzw::Code* prefix, vuint8_t byte) + { + if (nextIndex < MaxDictionarySize) + { + Code* code = codeAllocator.Create(); + code->byte = byte; + code->code = nextIndex; + code->parent = prefix; + code->size = prefix->size + 1; + prefix->children.Set(byte, code, mapAllocator); + nextIndex++; + + return code; + } + else + { + return 0; + } + } + + LzwBase::LzwBase() + :codeAllocator(65536) + , mapAllocator(1048576) + { + root = codeAllocator.Create(); + + for (vint i = 0; i < 256; i++) + { + UpdateIndexBits(); + CreateCode(root, (vuint8_t)i); + } + } + + LzwBase::LzwBase(bool (&existingBytes)[256]) + { + root = codeAllocator.Create(); + for (vint i = 0; i < 256; i++) + { + if (existingBytes[i]) + { + UpdateIndexBits(); + CreateCode(root, (vuint8_t)i); + } + } + + if (indexBits < 8) + { + eofIndex = nextIndex++; + } + } + + LzwBase::~LzwBase() + { + } + +/*********************************************************************** +LzwEncoder +***********************************************************************/ + + void LzwEncoder::Flush() + { + vint written = 0; + vint bufferUsedSize = bufferUsedBits / 8; + if (bufferUsedBits % 8 != 0) + { + bufferUsedSize++; + } + while (written < bufferUsedSize) + { + vint size = stream->Write(buffer + written, bufferUsedSize - written); + CHECK_ERROR(size != 0, L"LzwEncoder::Flush()#Failed to flush the lzw buffer."); + written += size; + } + bufferUsedBits = 0; + } + + vuint8_t highMarks[9] = { 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF }; + vuint8_t lowMarks[9] = { 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF }; + + void LzwEncoder::WriteNumber(vint number, vint bitSize) + { + vint bitStart = 0; + vint bitStep = 8 - bufferUsedBits % 8; + if (bitStep > bitSize) + { + bitStep = bitSize; + } + while (bitStart < bitSize) + { + if(bufferUsedBits == BufferSize * 8) + { + Flush(); + } + + vint writeStart = bufferUsedBits % 8; + vint byteIndex = bufferUsedBits / 8; + vuint8_t byte = buffer[byteIndex]; + byte &= highMarks[writeStart]; + + vuint8_t content = (vuint8_t)((number >> bitStart)&lowMarks[bitStep]) << (8 - writeStart - bitStep); + byte |= content; + + buffer[byteIndex] = byte; + bufferUsedBits += bitStep; + + bitStart += bitStep; + vint remain = bitSize - bitStart; + bitStep = remain < 8 ? remain : 8; + } + } + + LzwEncoder::LzwEncoder() + { + prefix = root; + } + + LzwEncoder::LzwEncoder(bool (&existingBytes)[256]) + :LzwBase(existingBytes) + { + prefix = root; + } + + LzwEncoder::~LzwEncoder() + { + } + + void LzwEncoder::Setup(IStream* _stream) + { + stream = _stream; + } + + void LzwEncoder::Close() + { + if (prefix != root) + { + WriteNumber(prefix->code, indexBits); + prefix = root; + } + + vint remain = 8 - bufferUsedBits % 8; + if (remain != 8 && remain >= indexBits) + { + CHECK_ERROR(eofIndex != -1, L"LzwEncoder::Close()#Internal error."); + WriteNumber(eofIndex, indexBits); + } + Flush(); + } + + vint LzwEncoder::Write(void* _buffer, vint _size) + { + vuint8_t* bytes = (vuint8_t*)_buffer; + for (vint i = 0; i < _size; i++) + { + vuint8_t byte = bytes[i]; + Code* next = prefix->children.Get(byte); + if (next) + { + prefix = next; + } + else + { + WriteNumber(prefix->code, indexBits); + + if (nextIndex < MaxDictionarySize) + { + UpdateIndexBits(); + CreateCode(prefix, byte); + } + prefix = root->children.Get(byte); + } + } + return _size; + } + +/*********************************************************************** +LzwDecoder +***********************************************************************/ + + bool LzwDecoder::ReadNumber(vint& number, vint bitSize) + { + number = 0; + if (inputBufferSize == -1) + { + return false; + } + + vint remainBits = inputBufferSize * 8 - inputBufferUsedBits; + vint writtenBits = 0; + vint bitStep = 8 - inputBufferUsedBits % 8; + if (bitStep > bitSize) + { + bitStep = bitSize; + } + while (writtenBits < bitSize) + { + if (remainBits == 0) + { + inputBufferSize = stream->Read(inputBuffer, BufferSize); + if (inputBufferSize == 0) + { + inputBufferSize = -1; + return false; + } + remainBits = inputBufferSize * 8; + inputBufferUsedBits = 0; + } + + vuint8_t byte = inputBuffer[inputBufferUsedBits / 8]; + byte >>= (8 - inputBufferUsedBits % 8 - bitStep); + byte &= lowMarks[bitStep]; + number |= byte << writtenBits; + + inputBufferUsedBits += bitStep; + remainBits -= bitStep; + writtenBits += bitStep; + vint remain = bitSize - writtenBits; + bitStep = remain < 8 ? remain : 8; + } + + return true; + } + + void LzwDecoder::PrepareOutputBuffer(vint size) + { + if (outputBuffer.Count() < size) + { + outputBuffer.Resize(size); + } + outputBufferSize = size; + } + + void LzwDecoder::ExpandCodeToOutputBuffer(lzw::Code* code) + { + vuint8_t* outputByte = &outputBuffer[0] + code->size; + Code* current = code; + while (current != root) + { + *(--outputByte) = current->byte; + current = current->parent; + } + outputBufferUsedBytes = 0; + } + + LzwDecoder::LzwDecoder() + { + for (vint i = 0; i < 256; i++) + { + dictionary.Add(root->children.Get((vuint8_t)i)); + } + } + + LzwDecoder::LzwDecoder(bool (&existingBytes)[256]) + :LzwBase(existingBytes) + { + for (vint i = 0; i < 256; i++) + { + if (existingBytes[i]) + { + dictionary.Add(root->children.Get((vuint8_t)i)); + } + } + if (eofIndex != -1) + { + dictionary.Add(0); + } + } + + LzwDecoder::~LzwDecoder() + { + } + + void LzwDecoder::Setup(IStream* _stream) + { + stream = _stream; + } + + void LzwDecoder::Close() + { + } + + vint LzwDecoder::Read(void* _buffer, vint _size) + { + vint written = 0; + vuint8_t* bytes = (vuint8_t*)_buffer; + while (written < _size) + { + vint expect = _size - written; + vint remain = outputBufferSize - outputBufferUsedBytes; + if (remain == 0) + { + vint index = 0; + if (!ReadNumber(index, indexBits) || index == eofIndex) + { + break; + } + + Code* prefix = 0; + if (index == dictionary.Count()) + { + prefix = lastCode; + PrepareOutputBuffer(prefix->size + 1); + ExpandCodeToOutputBuffer(prefix); + outputBuffer[outputBufferSize - 1] = outputBuffer[0]; + } + else + { + prefix = dictionary[index]; + PrepareOutputBuffer(prefix->size); + ExpandCodeToOutputBuffer(prefix); + } + + if (nextIndex < MaxDictionarySize) + { + if (lastCode) + { + dictionary.Add(CreateCode(lastCode, outputBuffer[0])); + } + UpdateIndexBits(); + } + lastCode = dictionary[index]; + } + else + { + if (remain > expect) + { + remain = expect; + } + memcpy(bytes + written, &outputBuffer[outputBufferUsedBytes], remain); + + outputBufferUsedBytes += remain; + written += remain; + } + } + return written; + } + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + vint CopyStream(stream::IStream& inputStream, stream::IStream& outputStream) + { + vint totalSize = 0; + while (true) + { + char buffer[1024]; + vint copied = inputStream.Read(buffer, (vint)sizeof(buffer)); + if (copied == 0) + { + break; + } + totalSize += outputStream.Write(buffer, copied); + } + return totalSize; + } + + const vint CompressionFragmentSize = 1048576; + + void CompressStream(stream::IStream& inputStream, stream::IStream& outputStream) + { + Array buffer(CompressionFragmentSize); + while (true) + { + vint size = inputStream.Read(&buffer[0], buffer.Count()); + if (size == 0) break; + + MemoryStream compressedStream; + { + LzwEncoder encoder; + EncoderStream encoderStream(compressedStream, encoder); + encoderStream.Write(&buffer[0], size); + } + + compressedStream.SeekFromBegin(0); + { + { + vint32_t bufferSize = (vint32_t)size; + outputStream.Write(&bufferSize, (vint)sizeof(bufferSize)); + } + { + vint32_t compressedSize = (vint32_t)compressedStream.Size(); + outputStream.Write(&compressedSize, (vint)sizeof(compressedSize)); + } + CopyStream(compressedStream, outputStream); + } + } + } + + void DecompressStream(stream::IStream& inputStream, stream::IStream& outputStream) + { + vint totalSize = 0; + vint totalWritten = 0; + while (true) + { + vint32_t bufferSize = 0; + if (inputStream.Read(&bufferSize, (vint)sizeof(bufferSize)) != sizeof(bufferSize)) + { + break; + } + + vint32_t compressedSize = 0; + CHECK_ERROR(inputStream.Read(&compressedSize, (vint)sizeof(compressedSize)) == sizeof(compressedSize), L"vl::stream::DecompressStream(MemoryStream&, MemoryStream&)#Incomplete input"); + + Array buffer(compressedSize); + CHECK_ERROR(inputStream.Read(&buffer[0], compressedSize) == compressedSize, L"vl::stream::DecompressStream(MemoryStream&, MemoryStream&)#Incomplete input"); + + MemoryWrapperStream compressedStream(&buffer[0], compressedSize); + LzwDecoder decoder; + DecoderStream decoderStream(compressedStream, decoder); + totalWritten += CopyStream(decoderStream, outputStream); + totalSize += bufferSize; + } + CHECK_ERROR(outputStream.Size() == totalSize, L"vl::stream::DecompressStream(MemoryStream&, MemoryStream&)#Incomplete input"); + } + } +} + +/*********************************************************************** +.\STREAM\FILESTREAM.CPP +***********************************************************************/ +#if defined VCZH_GCC +#endif + +namespace vl +{ + namespace stream + { + +#if defined VCZH_GCC + void _fseeki64(FILE* file, pos_t offset, int origin) + { + fseek(file, (long)offset, origin); + } +#endif + +/*********************************************************************** +FileStream +***********************************************************************/ + + FileStream::FileStream(const WString& fileName, AccessRight _accessRight) + :accessRight(_accessRight) + { + const wchar_t* mode=L"rb"; + switch(accessRight) + { + case ReadOnly: + mode=L"rb"; + break; + case WriteOnly: + mode=L"wb"; + break; + case ReadWrite: + mode=L"w+b"; + break; + } + +#if defined VCZH_MSVC + if(_wfopen_s(&file, fileName.Buffer(), mode)!=0) + { + file=0; + } +#elif defined VCZH_GCC + AString fileNameA = wtoa(fileName); + AString modeA = wtoa(mode); + file = fopen(fileNameA.Buffer(), modeA.Buffer()); +#endif + } + + FileStream::~FileStream() + { + Close(); + } + + bool FileStream::CanRead()const + { + return file!=0 && (accessRight==ReadOnly || accessRight==ReadWrite); + } + + bool FileStream::CanWrite()const + { + return file!=0 && (accessRight==WriteOnly || accessRight==ReadWrite); + } + + bool FileStream::CanSeek()const + { + return file!=0; + } + + bool FileStream::CanPeek()const + { + return file!=0 && (accessRight==ReadOnly || accessRight==ReadWrite); + } + + bool FileStream::IsLimited()const + { + return file!=0 && accessRight==ReadOnly; + } + + bool FileStream::IsAvailable()const + { + return file!=0; + } + + void FileStream::Close() + { + if(file!=0) + { + fclose(file); + file=0; + } + } + + pos_t FileStream::Position()const + { + if(file!=0) + { +#if defined VCZH_MSVC + fpos_t position=0; + if(fgetpos(file, &position)==0) + { + return position; + } +#elif defined VCZH_GCC + return (pos_t)ftell(file); +#endif + } + return -1; + } + + pos_t FileStream::Size()const + { + if(file!=0) + { +#if defined VCZH_MSVC + fpos_t position=0; + if(fgetpos(file, &position)==0) + { + if(fseek(file, 0, SEEK_END)==0) + { + pos_t size=Position(); + if(fsetpos(file, &position)==0) + { + return size; + } + } + } +#elif defined VCZH_GCC + long position = ftell(file); + fseek(file, 0, SEEK_END); + long size=ftell(file); + fseek(file, position, SEEK_SET); + return (pos_t)size; +#endif + } + return -1; + } + + void FileStream::Seek(pos_t _size) + { + if(Position()+_size>Size()) + { + _fseeki64(file, 0, SEEK_END); + } + else if(Position()+_size<0) + { + _fseeki64(file, 0, SEEK_SET); + } + else + { + _fseeki64(file, _size, SEEK_CUR); + } + } + + void FileStream::SeekFromBegin(pos_t _size) + { + if(_size>Size()) + { + _fseeki64(file, 0, SEEK_END); + } + else if(_size<0) + { + _fseeki64(file, 0, SEEK_SET); + } + else + { + _fseeki64(file, _size, SEEK_SET); + } + } + + void FileStream::SeekFromEnd(pos_t _size) + { + if(_size<0) + { + _fseeki64(file, 0, SEEK_END); + } + else if(_size>Size()) + { + _fseeki64(file, 0, SEEK_SET); + } + else + { + _fseeki64(file, -_size, SEEK_END); + } + } + + vint FileStream::Read(void* _buffer, vint _size) + { + CHECK_ERROR(file!=0, L"FileStream::Read(pos_t)#Stream is closed, cannot perform this operation."); + CHECK_ERROR(_size>=0, L"FileStream::Read(void*, vint)#Argument size cannot be negative."); + return fread(_buffer, 1, _size, file); + } + + vint FileStream::Write(void* _buffer, vint _size) + { + CHECK_ERROR(file!=0, L"FileStream::Write(pos_t)#Stream is closed, cannot perform this operation."); + CHECK_ERROR(_size>=0, L"FileStream::Write(void*, vint)#Argument size cannot be negative."); + return fwrite(_buffer, 1, _size, file); + } + + vint FileStream::Peek(void* _buffer, vint _size) + { + CHECK_ERROR(file!=0, L"FileStream::Peek(pos_t)#Stream is closed, cannot perform this operation."); + CHECK_ERROR(_size>=0, L"FileStream::Peek(void*, vint)#Argument size cannot be negative."); +#if defined VCZH_MSVC + fpos_t position=0; + if(fgetpos(file, &position)==0) + { + size_t count=fread(_buffer, 1, _size, file); + if(fsetpos(file, &position)==0) + { + return count; + } + } + return -1; +#elif defined VCZH_GCC + long position=ftell(file); + size_t count=fread(_buffer, 1, _size, file); + fseek(file, position, SEEK_SET); + return count; +#endif + } + } +} + + +/*********************************************************************** +.\STREAM\MEMORYSTREAM.CPP +***********************************************************************/ + +namespace vl +{ + namespace stream + { +/*********************************************************************** +MemoryStream +***********************************************************************/ + + void MemoryStream::PrepareSpace(vint totalSpace) + { + if(totalSpace>capacity) + { + totalSpace=(totalSpace/block+1)*block; + char* newBuffer=new char[totalSpace]; + if(buffer) + { + memcpy(newBuffer, buffer, size); + delete[] buffer; + } + buffer=newBuffer; + capacity=totalSpace; + } + } + + MemoryStream::MemoryStream(vint _block) + :block(_block) + ,buffer(0) + ,size(0) + ,position(0) + ,capacity(0) + { + if(block<=0) + { + block=65536; + } + } + + MemoryStream::~MemoryStream() + { + Close(); + } + + bool MemoryStream::CanRead()const + { + return block!=0; + } + + bool MemoryStream::CanWrite()const + { + return block!=0; + } + + bool MemoryStream::CanSeek()const + { + return block!=0; + } + + bool MemoryStream::CanPeek()const + { + return block!=0; + } + + bool MemoryStream::IsLimited()const + { + return false; + } + + bool MemoryStream::IsAvailable()const + { + return block!=0; + } + + void MemoryStream::Close() + { + if(buffer) + { + delete[] buffer; + } + block=0; + buffer=0; + size=-1; + position=-1; + capacity=0; + } + + pos_t MemoryStream::Position()const + { + return position; + } + + pos_t MemoryStream::Size()const + { + return size; + } + + void MemoryStream::Seek(pos_t _size) + { + SeekFromBegin(position+_size); + } + + void MemoryStream::SeekFromBegin(pos_t _size) + { + CHECK_ERROR(block!=0, L"MemoryStream::SeekFromBegin(pos_t)#Stream is closed, cannot perform this operation."); + vint expected=(vint)_size; + if(expected<0) + { + position=0; + } + else if(expected>=size) + { + position=size; + } + else + { + position=expected; + } + } + + void MemoryStream::SeekFromEnd(pos_t _size) + { + SeekFromBegin(size-_size); + } + + vint MemoryStream::Read(void* _buffer, vint _size) + { + CHECK_ERROR(block!=0, L"MemoryStream::Read(pos_t)#Stream is closed, cannot perform this operation."); + CHECK_ERROR(_size>=0, L"MemoryStream::Read(void*, vint)#Argument size cannot be negative."); + vint max=size-position; + if(_size>max) + { + _size=max; + } + memmove(_buffer, buffer+position, _size); + position+=_size; + return _size; + } + + vint MemoryStream::Write(void* _buffer, vint _size) + { + CHECK_ERROR(block!=0, L"MemoryStream::Write(pos_t)#Stream is closed, cannot perform this operation."); + CHECK_ERROR(_size>=0, L"MemoryStream::Write(void*, vint)#Argument size cannot be negative."); + PrepareSpace(size+_size); + memmove(buffer+position, _buffer, _size); + position+=_size; + if(size=0, L"MemoryStream::Peek(void*, vint)#Argument size cannot be negative."); + vint max=size-position; + if(_size>max) + { + _size=max; + } + memmove(_buffer, buffer+position, _size); + return _size; + } + + void* MemoryStream::GetInternalBuffer() + { + return buffer; + } + } +} + +/*********************************************************************** +.\STREAM\MEMORYWRAPPERSTREAM.CPP +***********************************************************************/ + +namespace vl +{ + namespace stream + { +/*********************************************************************** +MemoryWrapperStream +***********************************************************************/ + + MemoryWrapperStream::MemoryWrapperStream(void* _buffer, vint _size) + :buffer((char*)_buffer) + ,size(_size) + ,position(0) + { + if(size<=0) + { + buffer=0; + size=0; + } + } + + MemoryWrapperStream::~MemoryWrapperStream() + { + } + + bool MemoryWrapperStream::CanRead()const + { + return buffer!=0; + } + + bool MemoryWrapperStream::CanWrite()const + { + return buffer!=0; + } + + bool MemoryWrapperStream::CanSeek()const + { + return buffer!=0; + } + + bool MemoryWrapperStream::CanPeek()const + { + return buffer!=0; + } + + bool MemoryWrapperStream::IsLimited()const + { + return buffer!=0; + } + + bool MemoryWrapperStream::IsAvailable()const + { + return buffer!=0; + } + + void MemoryWrapperStream::Close() + { + buffer=0; + size=-1; + position=-1; + } + + pos_t MemoryWrapperStream::Position()const + { + return position; + } + + pos_t MemoryWrapperStream::Size()const + { + return size; + } + + void MemoryWrapperStream::Seek(pos_t _size) + { + SeekFromBegin(position+_size); + } + + void MemoryWrapperStream::SeekFromBegin(pos_t _size) + { + CHECK_ERROR(buffer!=0, L"MemoryWrapperStream::SeekFromBegin(pos_t)#Stream is closed, cannot perform this operation."); + vint expected=(vint)_size; + if(expected<0) + { + position=0; + } + else if(expected>=size) + { + position=size; + } + else + { + position=expected; + } + } + + void MemoryWrapperStream::SeekFromEnd(pos_t _size) + { + SeekFromBegin(size-_size); + } + + vint MemoryWrapperStream::Read(void* _buffer, vint _size) + { + CHECK_ERROR(buffer!=0, L"MemoryWrapperStream::Read(pos_t)#Stream is closed, cannot perform this operation."); + CHECK_ERROR(_size>=0, L"MemoryWrapperStream::Read(void*, vint)#Argument size cannot be negative."); + vint max=size-position; + if(_size>max) + { + _size=max; + } + memmove(_buffer, buffer+position, _size); + position+=_size; + return _size; + } + + vint MemoryWrapperStream::Write(void* _buffer, vint _size) + { + CHECK_ERROR(buffer!=0, L"MemoryWrapperStream::Write(pos_t)#Stream is closed, cannot perform this operation."); + CHECK_ERROR(_size>=0, L"MemoryWrapperStream::Write(void*, vint)#Argument size cannot be negative."); + vint max=size-position; + if(_size>max) + { + _size=max; + } + memmove(buffer+position, _buffer, _size); + position+=_size; + return _size; + } + + vint MemoryWrapperStream::Peek(void* _buffer, vint _size) + { + CHECK_ERROR(buffer!=0, L"MemoryWrapperStream::Peek(pos_t)#Stream is closed, cannot perform this operation."); + CHECK_ERROR(_size>=0, L"MemoryWrapperStream::Peek(void*, vint)#Argument size cannot be negative."); + vint max=size-position; + if(_size>max) + { + _size=max; + } + memmove(_buffer, buffer+position, _size); + return _size; + } + } +} + +/*********************************************************************** +.\STREAM\RECORDERSTREAM.CPP +***********************************************************************/ + +namespace vl +{ + namespace stream + { +/*********************************************************************** +RecorderStream +***********************************************************************/ + + RecorderStream::RecorderStream(IStream& _in, IStream& _out) + :in(&_in) + ,out(&_out) + { + } + + RecorderStream::~RecorderStream() + { + } + + bool RecorderStream::CanRead()const + { + return IsAvailable() && in->CanRead(); + } + + bool RecorderStream::CanWrite()const + { + return false; + } + + bool RecorderStream::CanSeek()const + { + return false; + } + + bool RecorderStream::CanPeek()const + { + return false; + } + + bool RecorderStream::IsLimited()const + { + return IsAvailable() && in->IsLimited(); + } + + bool RecorderStream::IsAvailable()const + { + return in!=0 && out!=0 && in->IsAvailable() && out->IsAvailable(); + } + + void RecorderStream::Close() + { + in=0; + out=0; + } + + pos_t RecorderStream::Position()const + { + return IsAvailable()?in->Position():-1; + } + + pos_t RecorderStream::Size()const + { + return IsAvailable()?in->Size():-1; + } + + void RecorderStream::Seek(pos_t _size) + { + CHECK_FAIL(L"RecorderStream::Seek(pos_t)#Operation not supported."); + } + + void RecorderStream::SeekFromBegin(pos_t _size) + { + CHECK_FAIL(L"RecorderStream::SeekFromBegin(pos_t)#Operation not supported."); + } + + void RecorderStream::SeekFromEnd(pos_t _size) + { + CHECK_FAIL(L"RecorderStream::SeekFromEnd(pos_t)#Operation not supported."); + } + + vint RecorderStream::Read(void* _buffer, vint _size) + { + _size=in->Read(_buffer, _size); + out->Write(_buffer, _size); + return _size; + } + + vint RecorderStream::Write(void* _buffer, vint _size) + { + CHECK_FAIL(L"RecorderStream::Write(void*, vint)#Operation not supported."); + } + + vint RecorderStream::Peek(void* _buffer, vint _size) + { + CHECK_FAIL(L"RecorderStream::Peek(void*, vint)#Operation not supported."); + } + } +} diff --git a/Import/VlppOS.h b/Import/VlppOS.h new file mode 100644 index 00000000..a0d7e514 --- /dev/null +++ b/Import/VlppOS.h @@ -0,0 +1,2772 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "Vlpp.h" + +/*********************************************************************** +.\STREAM\INTERFACES.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Stream::Interfaces + +Interfaces: + IStream : Stream +***********************************************************************/ + +#ifndef VCZH_STREAM_INTERFACES +#define VCZH_STREAM_INTERFACES + + +namespace vl +{ + namespace stream + { + /// + /// Interface for streams. Stream functions are grouped into 5 categories: + /// 1) Feature testing functions. + /// 2) Read functions, available only if [M:vl.stream.IStream.CanRead] returns true. + /// 3) Peek functions, available only if [M:vl.stream.IStream.CanPeek] returns true. + /// 4) Write functions, available only if [M:vl.stream.IStream.CanWrite] returns true. + /// 5) Seek functions, available only if [M:vl.stream.IStream.CanSeek] returns true. + /// 6) Size functions, available only if [M:vl.stream.IStream.IsLimited] returns true. But there are still some streams knows that the content is limited, but the size is unknown. In this case, [M:vl.stream.IStream.Size] will return -1. + /// + class IStream : public virtual Interface + { + public: + /// Test if the stream is readable. + /// Returns true if the stream is readable. + virtual bool CanRead()const=0; + /// Test if the stream is writable. + /// Returns true if the stream is writable. + virtual bool CanWrite()const=0; + /// Test if the stream is seekable. + /// Returns true if the stream is seekable. + virtual bool CanSeek()const=0; + /// Test if the stream is peekable. + /// Returns true if the stream is peekable. + virtual bool CanPeek()const=0; + /// Test if the content of the stream is limited. A writable stream can also be limited, it means that you can only write a limited content to the stream. + /// Returns true if the content of the stream is limited. + virtual bool IsLimited()const=0; + /// Test if the stream is available. For example, if you create a readable [T:vl.stream.FileStream] giving a wrong file name, it will be unavailable. + /// Returns true if the stream is available. + virtual bool IsAvailable()const=0; + /// Close the stream. + virtual void Close()=0; + /// Get the current position in the stream. + /// The position in the stream. Returns -1 if the stream is not available. + virtual pos_t Position()const=0; + /// Get the size of the content.. + /// The size of the content. Returns -1 if the size is unknown or the stream is not available. + virtual pos_t Size()const=0; + /// Step forward or backward from the current position. Will throw exception if the stream is not seekable or not available. + /// The length of the step. + virtual void Seek(pos_t _size)=0; + /// Step fowward from the beginning. Will throw exception if the stream is not seekable or not available. + /// The length of the step. + virtual void SeekFromBegin(pos_t _size)=0; + /// Step backward from the end. Will throw exception if the stream is not seekable or not available. + /// The length of the step. + virtual void SeekFromEnd(pos_t _size)=0; + /// Read from the current position and step forward. Will throw exception if the stream is not readable or not available. + /// Returns the actual size of the content that is read. Returns 0 indicates that the stream reaches the end if the stream is limited. + /// A buffer to store the content. + /// The size of the content that is expected to read. + virtual vint Read(void* _buffer, vint _size)=0; + /// Write to the current position and step forward. Will throw exception if the stream is not writable or not available. + /// Returns the actual size of the content that is written. Returns 0 indicates that the stream reaches the end if the stream is limited. + /// A buffer storing the content to write. + /// The size of the content that is expected to write. + virtual vint Write(void* _buffer, vint _size)=0; + /// Read from the current position but not step forward. Will throw exception if the stream is not peekable or not available. + /// Returns the actual size of the content that is read. Returns 0 indicates that the stream reaches the end if the stream is limited. + /// A buffer to store the content. + /// The size of the content that is expected to peek. + virtual vint Peek(void* _buffer, vint _size)=0; + }; + + /// Encoder interface. This interface defines a writable transformation from one stream to another stream. You can create a [T:vl.stream.EncoderStream] after you have an encoder. + class IEncoder : public Interface + { + public: + /// Set a target writable stream. The function will transform the content and write to this tream. + /// The target writable stream. + virtual void Setup(IStream* _stream)=0; + /// Stop the transformation, ensuring all written content is transformed to the target stream. + virtual void Close()=0; + /// Transform content and write to the target stream. This function may cache something to increase performance, so it cannot expect that all transformed content will be written to the target stream immediately. + /// Returns the actual size of the content before transforming that is written. The content is treated as being written even it is cached and not actually write to the target stream. + /// A buffer storing the content to write. + /// The size of the content that is expected to write. + virtual vint Write(void* _buffer, vint _size)=0; + }; + + /// Decoder interface. This interface defines a readable transformation from one stream to another stream. You can create a [T:vl.stream.DecoderStream] after you have an decoder. + class IDecoder : public Interface + { + public: + /// Set a target readable stream. The function will read from this tream and transform the content. + /// The target readable stream. + virtual void Setup(IStream* _stream)=0; + /// Stop the transformation. + virtual void Close()=0; + /// Read from the target stream and transform the content. + /// Returns the actual size of the content after transforming that is read. + /// A buffer to store the content. + /// The size of the content that is expected to read. + virtual vint Read(void* _buffer, vint _size)=0; + }; + } +} + +#endif + +/*********************************************************************** +.\STREAM\MEMORYSTREAM.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Stream::MemoryStream + +Interfaces: + MemoryStream : Memory stream +***********************************************************************/ + +#ifndef VCZH_STREAM_MEMORYSTREAM +#define VCZH_STREAM_MEMORYSTREAM + + +namespace vl +{ + namespace stream + { + /// A readable, writable, seekable and peekable stream that stores everything in memory. + class MemoryStream : public Object, public virtual IStream + { + protected: + vint block; + char* buffer; + vint size; + vint position; + vint capacity; + + void PrepareSpace(vint totalSpace); + public: + /// Create a stream. + /// Size for each allocation. The stream will only allocate new memory of size "_block" when it reaches the end and has to extend. + MemoryStream(vint _block=65536); + ~MemoryStream(); + + bool CanRead()const; + bool CanWrite()const; + bool CanSeek()const; + bool CanPeek()const; + bool IsLimited()const; + bool IsAvailable()const; + void Close(); + pos_t Position()const; + pos_t Size()const; + void Seek(pos_t _size); + void SeekFromBegin(pos_t _size); + void SeekFromEnd(pos_t _size); + vint Read(void* _buffer, vint _size); + vint Write(void* _buffer, vint _size); + vint Peek(void* _buffer, vint _size); + void* GetInternalBuffer(); + }; + } +} + +#endif + +/*********************************************************************** +.\STREAM\MEMORYWRAPPERSTREAM.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Stream::MemoryWrapperStream + +Interfaces: + MemoryWrapperStream : Memory stream which manipulate a given buffer +***********************************************************************/ + +#ifndef VCZH_STREAM_MEMORYWRAPPERSTREAM +#define VCZH_STREAM_MEMORYWRAPPERSTREAM + + +namespace vl +{ + namespace stream + { + /// A readable, writable, seekable and peekable stream that operates a buffer. + class MemoryWrapperStream : public Object, public virtual IStream + { + protected: + char* buffer; + vint size; + vint position; + public: + /// Create a stream. + /// The buffer to operate. + /// Size of the buffer. + MemoryWrapperStream(void* _buffer, vint _size); + ~MemoryWrapperStream(); + + bool CanRead()const; + bool CanWrite()const; + bool CanSeek()const; + bool CanPeek()const; + bool IsLimited()const; + bool IsAvailable()const; + void Close(); + pos_t Position()const; + pos_t Size()const; + void Seek(pos_t _size); + void SeekFromBegin(pos_t _size); + void SeekFromEnd(pos_t _size); + vint Read(void* _buffer, vint _size); + vint Write(void* _buffer, vint _size); + vint Peek(void* _buffer, vint _size); + }; + } +} + +#endif + +/*********************************************************************** +.\STREAM\CHARFORMAT.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Stream::CharFormat + +Classes: + CharEncoder : Encoder to translate from wchar_t to some specified format + CharDecoder : Decoder to transate from some specified format to wchar_t + MbcsEncoder : Mbcs encoder (using the code page of the current locale) + MbcsDecoder : Mbcs decoder (using the code page of the current locale) + Utf16Encoder : UTF-16 encoder + Utf16Decoder : UTF-16 decoder + Utf16BEEncoder : UTF-16 encoder with big endian + Utf16BEDecoder : UTF-16 decoder with big endian + Utf8Encoder : UTF-8 encoder + Utf8Decoder : UTF-8 decoder + BomEncoder : Character encoder which writes a BOM before the text + BomDecoder : Character decoder which reads a BOM from the data to know the encoding +***********************************************************************/ + +#ifndef VCZH_STREAM_CHARFORMAT +#define VCZH_STREAM_CHARFORMAT + + +namespace vl +{ + namespace stream + { + + /* + How UCS-4 translate to UTF-8 + U-00000000 - U-0000007F: 0xxxxxxx + U-00000080 - U-000007FF: 110xxxxx 10xxxxxx + U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx + U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx + U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx + BOM: + FFFE =Unicode (vceUtf16) + FEFF =Unicode Big Endian (vceUtf16_be) + EFBBBF =UTF-8 (vceUtf8) + other =MBCS(GBK) (vceMbcs) + */ + +/*********************************************************************** +Char Encoder and Decoder +***********************************************************************/ + + /// Base type of all character encoder. + class CharEncoder : public Object, public IEncoder + { + protected: + IStream* stream; + vuint8_t cacheBuffer[sizeof(wchar_t)]; + vint cacheSize; + + virtual vint WriteString(wchar_t* _buffer, vint chars)=0; + public: + CharEncoder(); + + void Setup(IStream* _stream); + void Close(); + vint Write(void* _buffer, vint _size); + }; + + /// Base type of all character decoder. + class CharDecoder : public Object, public IDecoder + { + protected: + IStream* stream; + vuint8_t cacheBuffer[sizeof(wchar_t)]; + vint cacheSize; + + virtual vint ReadString(wchar_t* _buffer, vint chars)=0; + public: + CharDecoder(); + + void Setup(IStream* _stream); + void Close(); + vint Read(void* _buffer, vint _size); + }; + +/*********************************************************************** +Mbcs +***********************************************************************/ + + /// Encoder to transform text in a local code page from wchar_t. + class MbcsEncoder : public CharEncoder + { + protected: + vint WriteString(wchar_t* _buffer, vint chars); + }; + + /// Encoder to transform text in a local code page to wchar_t. + class MbcsDecoder : public CharDecoder + { + protected: + vint ReadString(wchar_t* _buffer, vint chars); + }; + +/*********************************************************************** +Utf-16 +***********************************************************************/ + + /// Encoder to transform UTF-16 text from wchar_t. + class Utf16Encoder : public CharEncoder + { + protected: + vint WriteString(wchar_t* _buffer, vint chars); + }; + + /// Decoder to transform UTF-16 text to wchar_t. + class Utf16Decoder : public CharDecoder + { + protected: + vint ReadString(wchar_t* _buffer, vint chars); + }; + +/*********************************************************************** +Utf-16-be +***********************************************************************/ + + /// Encoder to transform big endian UTF-16 text from wchar_t. + class Utf16BEEncoder : public CharEncoder + { + protected: + vint WriteString(wchar_t* _buffer, vint chars); + }; + + /// Decoder to transform big endian UTF-16 text to wchar_t. + class Utf16BEDecoder : public CharDecoder + { + protected: + vint ReadString(wchar_t* _buffer, vint chars); + }; + +/*********************************************************************** +Utf-8 +***********************************************************************/ + + /// Encoder to transform UTF-8 text from wchar_t. + class Utf8Encoder : public CharEncoder + { + protected: + vint WriteString(wchar_t* _buffer, vint chars); + }; + + /// Decoder to transform UTF-8 text to wchar_t. + class Utf8Decoder : public CharDecoder + { + protected: +#if defined VCZH_MSVC + wchar_t cache; + bool cacheAvailable; +#endif + vint ReadString(wchar_t* _buffer, vint chars); + public: + Utf8Decoder(); + }; + +/*********************************************************************** +Bom +***********************************************************************/ + + /// Encoder to transform text from wchar_t. A BOM will be added at the beginning. + class BomEncoder : public Object, public IEncoder + { + public: + /// Text encoding. + enum Encoding + { + /// Multi-bytes character string. + Mbcs, + /// UTF-8. + Utf8, + /// UTF-16. + Utf16, + /// Big endian UTF-16. + Utf16BE + }; + protected: + Encoding encoding; + IEncoder* encoder; + public: + /// Create an encoder. + /// Specified encoding. + BomEncoder(Encoding _encoding); + ~BomEncoder(); + + void Setup(IStream* _stream); + void Close(); + vint Write(void* _buffer, vint _size); + }; + + /// Decoder to transform text to wchar_t. This decoder depends on the BOM information at the beginning to decide the format of the input. + class BomDecoder : public Object, public IDecoder + { + private: + class BomStream : public Object, public IStream + { + protected: + IStream* stream; + char bom[3]; + vint bomLength; + vint bomPosition; + public: + BomStream(IStream* _stream, char* _bom, vint _bomLength); + + bool CanRead()const; + bool CanWrite()const; + bool CanSeek()const; + bool CanPeek()const; + bool IsLimited()const; + bool IsAvailable()const; + void Close(); + pos_t Position()const; + pos_t Size()const; + void Seek(pos_t _size); + void SeekFromBegin(pos_t _size); + void SeekFromEnd(pos_t _size); + vint Read(void* _buffer, vint _size); + vint Write(void* _buffer, vint _size); + vint Peek(void* _buffer, vint _size); + }; + protected: + IDecoder* decoder; + IStream* stream; + + public: + /// Create an decoder. + BomDecoder(); + ~BomDecoder(); + + void Setup(IStream* _stream); + void Close(); + vint Read(void* _buffer, vint _size); + }; + +/*********************************************************************** +Encoding Test +***********************************************************************/ + + /// Guess the text encoding in a buffer. + /// The buffer to guess. + /// Size of the buffer in bytes. + /// Returns the most possible encoding. + /// Returns true if the BOM information is at the beginning of the buffer. + extern void TestEncoding(unsigned char* buffer, vint size, BomEncoder::Encoding& encoding, bool& containsBom); + +/*********************************************************************** +Serialization +***********************************************************************/ + + namespace internal + { + template + struct Reader + { + stream::IStream& input; + T context; + + Reader(stream::IStream& _input) + :input(_input) + , context(nullptr) + { + } + }; + + template + struct Writer + { + stream::IStream& output; + T context; + + Writer(stream::IStream& _output) + :output(_output) + , context(nullptr) + { + } + }; + + using ContextFreeReader = Reader; + using ContextFreeWriter = Writer; + + template + struct Serialization + { + template + static void IO(TIO& io, T& value); + }; + + template + Reader& operator<<(Reader& reader, TValue& value) + { + Serialization::IO(reader, value); + return reader; + } + + template + Writer& operator<<(Writer& writer, TValue& value) + { + Serialization::IO(writer, value); + return writer; + } + + //--------------------------------------------- + + template<> + struct Serialization + { + template + static void IO(Reader& reader, vint64_t& value) + { + if (reader.input.Read(&value, sizeof(value)) != sizeof(value)) + { + CHECK_FAIL(L"Deserialization failed."); + } + } + + template + static void IO(Writer& writer, vint64_t& value) + { + if (writer.output.Write(&value, sizeof(value)) != sizeof(value)) + { + CHECK_FAIL(L"Serialization failed."); + } + } + }; + + template<> + struct Serialization + { + template + static void IO(Reader& reader, vint32_t& value) + { + vint64_t v = 0; + Serialization::IO(reader, v); + value = (vint32_t)v; + } + + template + static void IO(Writer& writer, vint32_t& value) + { + vint64_t v = (vint64_t)value; + Serialization::IO(writer, v); + } + }; + + template<> + struct Serialization + { + template + static void IO(Reader& reader, bool& value) + { + vint8_t v = 0; + if (reader.input.Read(&v, sizeof(v)) != sizeof(v)) + { + CHECK_FAIL(L"Deserialization failed."); + } + else + { + value = v == -1; + } + } + + template + static void IO(Writer& writer, bool& value) + { + vint8_t v = value ? -1 : 0; + if (writer.output.Write(&v, sizeof(v)) != sizeof(v)) + { + CHECK_FAIL(L"Serialization failed."); + } + } + }; + + template + struct Serialization> + { + template + static void IO(Reader& reader, Ptr& value) + { + bool notNull = false; + reader << notNull; + if (notNull) + { + value = new T; + Serialization::IO(reader, *value.Obj()); + } + else + { + value = 0; + } + } + + template + static void IO(Writer& writer, Ptr& value) + { + bool notNull = value; + writer << notNull; + if (notNull) + { + Serialization::IO(writer, *value.Obj()); + } + } + }; + + template + struct Serialization> + { + template + static void IO(Reader& reader, Nullable& value) + { + bool notNull = false; + reader << notNull; + if (notNull) + { + T data; + Serialization::IO(reader, data); + value = Nullable(data); + } + else + { + value = Nullable(); + } + } + + template + static void IO(Writer& writer, Nullable& value) + { + bool notNull = value; + writer << notNull; + if (notNull) + { + T data = value.Value(); + Serialization::IO(writer, data); + } + } + }; + + template<> + struct Serialization + { + template + static void IO(Reader& reader, WString& value) + { + vint count = -1; + reader << count; + if (count > 0) + { + MemoryStream stream; + reader << (IStream&)stream; + Utf8Decoder decoder; + decoder.Setup(&stream); + + collections::Array stringBuffer(count + 1); + vint stringSize = decoder.Read(&stringBuffer[0], count * sizeof(wchar_t)); + stringBuffer[stringSize / sizeof(wchar_t)] = 0; + + value = &stringBuffer[0]; + } + else + { + value = L""; + } + } + + template + static void IO(Writer& writer, WString& value) + { + vint count = value.Length(); + writer << count; + if (count > 0) + { + MemoryStream stream; + { + Utf8Encoder encoder; + encoder.Setup(&stream); + encoder.Write((void*)value.Buffer(), count * sizeof(wchar_t)); + } + writer << (IStream&)stream; + } + } + }; + + template + struct Serialization> + { + template + static void IO(Reader& reader, collections::List& value) + { + vint32_t count = -1; + reader << count; + value.Clear(); + for (vint i = 0; i < count; i++) + { + T t; + reader << t; + value.Add(t); + } + } + + template + static void IO(Writer& writer, collections::List& value) + { + vint32_t count = (vint32_t)value.Count(); + writer << count; + for (vint i = 0; i < count; i++) + { + writer << value[i]; + } + } + }; + + template + struct Serialization> + { + template + static void IO(Reader& reader, collections::Array& value) + { + vint32_t count = -1; + reader << count; + value.Resize(count); + for (vint i = 0; i < count; i++) + { + reader << value[i]; + } + } + + template + static void IO(Writer& writer, collections::Array& value) + { + vint32_t count = (vint32_t)value.Count(); + writer << count; + for (vint i = 0; i < count; i++) + { + writer << value[i]; + } + } + }; + + template + struct Serialization> + { + template + static void IO(Reader& reader, collections::Dictionary& value) + { + vint32_t count = -1; + reader << count; + value.Clear(); + for (vint i = 0; i < count; i++) + { + K k; + V v; + reader << k << v; + value.Add(k, v); + } + } + + template + static void IO(Writer& writer, collections::Dictionary& value) + { + vint32_t count = (vint32_t)value.Count(); + writer << count; + for (vint i = 0; i < count; i++) + { + K k = value.Keys()[i]; + V v = value.Values()[i]; + writer << k << v; + } + } + }; + + template + struct Serialization> + { + template + static void IO(Reader& reader, collections::Group& value) + { + vint32_t count = -1; + reader << count; + value.Clear(); + for (vint i = 0; i < count; i++) + { + K k; + collections::List v; + reader << k << v; + for (vint j = 0; j < v.Count(); j++) + { + value.Add(k, v[j]); + } + } + } + + template + static void IO(Writer& writer, collections::Group& value) + { + vint32_t count = (vint32_t)value.Count(); + writer << count; + for (vint i = 0; i < count; i++) + { + K k = value.Keys()[i]; + collections::List& v = const_cast&>(value.GetByIndex(i)); + writer << k << v; + } + } + }; + + template<> + struct Serialization + { + template + static void IO(Reader& reader, stream::IStream& value) + { + vint32_t count = 0; + reader.input.Read(&count, sizeof(count)); + + if (count > 0) + { + vint length = 0; + collections::Array buffer(count); + value.SeekFromBegin(0); + length = reader.input.Read(&buffer[0], count); + if (length != count) + { + CHECK_FAIL(L"Deserialization failed."); + } + length = value.Write(&buffer[0], count); + if (length != count) + { + CHECK_FAIL(L"Deserialization failed."); + } + value.SeekFromBegin(0); + } + } + + template + static void IO(Writer& writer, stream::IStream& value) + { + vint32_t count = (vint32_t)value.Size(); + writer.output.Write(&count, sizeof(count)); + + if (count > 0) + { + vint length = 0; + collections::Array buffer(count); + value.SeekFromBegin(0); + length = value.Read(&buffer[0], count); + if (length != count) + { + CHECK_FAIL(L"Serialization failed."); + } + length = writer.output.Write(&buffer[0], count); + if (length != count) + { + CHECK_FAIL(L"Serialization failed."); + } + value.SeekFromBegin(0); + } + } + }; + + //--------------------------------------------- + +#define BEGIN_SERIALIZATION(TYPE)\ + template<>\ + struct Serialization\ + {\ + template\ + static void IO(TIO& op, TYPE& value)\ + {\ + op\ + +#define SERIALIZE(FIELD)\ + << value.FIELD\ + +#define END_SERIALIZATION\ + ;\ + }\ + };\ + +#define SERIALIZE_ENUM(TYPE)\ + template<>\ + struct Serialization\ + {\ + template\ + static void IO(Reader& reader, TYPE& value)\ + {\ + vint32_t v = 0;\ + Serialization::IO(reader, v);\ + value = (TYPE)v;\ + }\ + template\ + static void IO(Writer& writer, TYPE& value)\ + {\ + vint32_t v = (vint32_t)value;\ + Serialization::IO(writer, v);\ + }\ + };\ + + } + } +} + +#endif + + +/*********************************************************************** +.\FILESYSTEM.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::FileSystem + +***********************************************************************/ + +#ifndef VCZH_FILESYSTEM +#define VCZH_FILESYSTEM + + +namespace vl +{ + namespace filesystem + { + /// A type representing a file path. + class FilePath : public Object + { + protected: + WString fullPath; + + void Initialize(); + + static void GetPathComponents(WString path, collections::List& components); + static WString ComponentsToPath(const collections::List& components); + public: +#if defined VCZH_MSVC + static const wchar_t Delimiter = L'\\'; +#elif defined VCZH_GCC + static const wchar_t Delimiter = L'/'; +#endif + + /// Create a root path. + FilePath(); + /// Create a file path. + /// Content of the file path. If it is a relative path, it will be converted to an absolute path. + FilePath(const WString& _filePath); + /// Create a file path. + /// Content of the file path. If it is a relative path, it will be converted to an absolute path. + FilePath(const wchar_t* _filePath); + /// Copy a file path. + /// The file path to copy. + FilePath(const FilePath& _filePath); + ~FilePath(); + + static vint Compare(const FilePath& a, const FilePath& b); + bool operator==(const FilePath& filePath)const{ return Compare(*this, filePath) == 0; } + bool operator!=(const FilePath& filePath)const{ return Compare(*this, filePath) != 0; } + bool operator< (const FilePath& filePath)const{ return Compare(*this, filePath) < 0; } + bool operator<=(const FilePath& filePath)const{ return Compare(*this, filePath) <= 0; } + bool operator> (const FilePath& filePath)const{ return Compare(*this, filePath) > 0; } + bool operator>=(const FilePath& filePath)const{ return Compare(*this, filePath) >= 0; } + + /// Concat an absolute path and a relative path. + /// The result absolute path. + /// The relative path to concat. + FilePath operator/(const WString& relativePath)const; + + /// Test if the file path is a file. + /// Returns true if the file path is a file. + bool IsFile()const; + /// Test if the file path is a folder. + /// Returns true if the file path is a folder. + bool IsFolder()const; + /// Test if the file path is a the root of all file system objects. + /// Returns true if the file path is the root of all file system objects. + bool IsRoot()const; + + /// Get the last piece of names in the file path. + /// The last piece of names in the file path. + WString GetName()const; + /// Get the containing folder of this file path. + /// The containing folder. + FilePath GetFolder()const; + /// Get the content of the file path. + /// The content of the file path. + WString GetFullPath()const; + /// Calculate the relative path using a referencing folder. + /// The relative path. + /// The referencing folder. + WString GetRelativePathFor(const FilePath& _filePath); + + }; + + /// Representing a file reference. + class File : public Object + { + private: + FilePath filePath; + + public: + /// Create an empty reference. + File(); + /// Create a reference to a specified file. + /// The specified file. + File(const FilePath& _filePath); + ~File(); + + /// Get the file path of the file. + /// The file path. + const FilePath& GetFilePath()const; + + /// Get the content of the file as text with encoding testing. + /// Returns false if this operation succeeded. + /// The content of the file. + /// The encoding. + /// True if there is BOM. + bool ReadAllTextWithEncodingTesting(WString& text, stream::BomEncoder::Encoding& encoding, bool& containsBom); + /// Get the content of the file as text. + /// The content of the file. + WString ReadAllTextByBom()const; + /// Get the content of the file as text. + /// Returns false if this operation succeeded. + /// The content of the file. + bool ReadAllTextByBom(WString& text)const; + /// Get the content of the file as text. + /// Returns false if this operation succeeded. + /// The content of the file. + bool ReadAllLinesByBom(collections::List& lines)const; + + /// Write text to the file. + /// Returns false if this operation succeeded. + /// The text to write. + /// Set to true to add a corresponding BOM at the beginning of the file according to the encoding. + /// The text encoding. + bool WriteAllText(const WString& text, bool bom = true, stream::BomEncoder::Encoding encoding = stream::BomEncoder::Utf16); + /// Write text to the file. + /// Returns false if this operation succeeded. + /// The text to write. + /// Set to true to add a corresponding BOM at the beginning of the file according to the encoding. + /// The text encoding. + bool WriteAllLines(collections::List& lines, bool bom = true, stream::BomEncoder::Encoding encoding = stream::BomEncoder::Utf16); + + /// Test does the file exist or not. + /// Returns true if the file exists. + bool Exists()const; + /// Delete the file. + /// Returns true if this operation succeeded. + bool Delete()const; + /// Rename the file in the same folder. + /// Returns true if this operation succeeded. + /// The new file name. + bool Rename(const WString& newName)const; + }; + + /// Representing a folder reference. + class Folder : public Object + { + private: + FilePath filePath; + + public: + /// Create a root reference. + Folder(); + /// Create a reference to a specified folder. + /// The specified folder. + Folder(const FilePath& _filePath); + ~Folder(); + + /// Get the file path of the folder. + /// The file path. + const FilePath& GetFilePath()const; + /// Get all folders in this folder. + /// Returns true if this operation succeeded. + /// All folders. + bool GetFolders(collections::List& folders)const; + /// Get all files in this folder. + /// Returns true if this operation succeeded. + /// All files. + bool GetFiles(collections::List& files)const; + + /// Test does the folder exist or not. + /// Returns true if the folder exists. + bool Exists()const; + /// Create the folder. + /// Returns true if this operation succeeded. + /// Set to true to create all parent folders if necessary. + bool Create(bool recursively)const; + /// Delete the folder. + /// Returns true if this operation succeeded. + /// Set to true to delete everything in the folder. + bool Delete(bool recursively)const; + /// Rename the folder in the same folder. + /// Returns true if this operation succeeded. + /// The new folder name. + bool Rename(const WString& newName)const; + }; + } +} + +#endif + + +/*********************************************************************** +.\LOCALE.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Locale + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_LOCALE +#define VCZH_LOCALE + + +namespace vl +{ + /// Locale awared operations. Macro "INVLOC" is a shortcut to get a invariant locale. + class Locale : public Object + { + protected: + WString localeName; + + public: + Locale(const WString& _localeName=WString::Empty); + ~Locale(); + + bool operator==(const Locale& value)const { return localeName==value.localeName; } + bool operator!=(const Locale& value)const { return localeName!=value.localeName; } + bool operator<(const Locale& value)const { return localeName(const Locale& value)const { return localeName>value.localeName; } + bool operator>=(const Locale& value)const { return localeName>=value.localeName; } + + /// Get the invariant locale. + /// The invariant locale. + static Locale Invariant(); + /// Get the system default locale. This locale controls the code page that used by the the system to interpret ANSI string buffers. + /// The system default locale. + static Locale SystemDefault(); + /// Get the user default locale. This locale reflect the user's setting. + /// The user default locale. + static Locale UserDefault(); + /// Get all supported locales. + /// All supported locales. + static void Enumerate(collections::List& locales); + + /// Get the name of the locale. + /// The name of the locale. + const WString& GetName()const; + + /// Get all short date formats for the locale. + /// The formats. + void GetShortDateFormats(collections::List& formats)const; + /// Get all long date formats for the locale. + /// The formats. + void GetLongDateFormats(collections::List& formats)const; + /// Get all Year-Month date formats for the locale. + /// The formats. + void GetYearMonthDateFormats(collections::List& formats)const; + /// Get all long time formats for the locale. + /// The formats. + void GetLongTimeFormats(collections::List& formats)const; + /// Get all short time formats for the locale. + /// The formats. + void GetShortTimeFormats(collections::List& formats)const; + + /// Convert a date to a formatted string. + /// The formatted string. + /// The format to use. + /// The date to convert. + WString FormatDate(const WString& format, DateTime date)const; + /// Convert a time to a formatted string. + /// The formatted string. + /// The format to use. + /// The time to convert. + WString FormatTime(const WString& format, DateTime time)const; + + /// Convert a number to a formatted string. + /// The formatted string. + /// The number to convert. + WString FormatNumber(const WString& number)const; + /// Convert a currency (money) to a formatted string. + /// The formatted string. + /// The currency to convert. + WString FormatCurrency(const WString& currency)const; + + /// Get the short display string of a day of week. + /// The display string. + /// Day of week, begins from 0 as Sunday. + WString GetShortDayOfWeekName(vint dayOfWeek)const; + /// Get the long display string of a day of week. + /// The display string. + /// Day of week, begins from 0 as Sunday. + WString GetLongDayOfWeekName(vint dayOfWeek)const; + /// Get the short display string of a month. + /// The display string. + /// Month, begins from 1 as January. + WString GetShortMonthName(vint month)const; + /// Get the long display string of a month. + /// The display string. + /// Month, begins from 1 as January. + WString GetLongMonthName(vint month)const; + +#ifdef VCZH_MSVC + /// Convert characters to the full width. + /// The converted string. + /// The string to convert. + WString ToFullWidth(const WString& str)const; + /// Convert characters to the half width. + /// The converted string. + /// The string to convert. + WString ToHalfWidth(const WString& str)const; + /// Convert characters to the Hiragana. + /// The converted string. + /// The string to convert. + WString ToHiragana(const WString& str)const; + /// Convert characters to the Katagana. + /// The converted string. + /// The string to convert. + WString ToKatagana(const WString& str)const; +#endif + + /// Convert characters to the lower case using the file system rule. + /// The converted string. + /// The string to convert. + WString ToLower(const WString& str)const; + /// Convert characters to the upper case using the file system rule. + /// The converted string. + /// The string to convert. + WString ToUpper(const WString& str)const; + /// Convert characters to the lower case using the linguistic rule. + /// The converted string. + /// The string to convert. + WString ToLinguisticLower(const WString& str)const; + /// Convert characters to the upper case using the linguistic rule. + /// The converted string. + /// The string to convert. + WString ToLinguisticUpper(const WString& str)const; + +#ifdef VCZH_MSVC + /// Convert characters to Simplified Chinese. + /// The converted string. + /// The string to convert. + WString ToSimplifiedChinese(const WString& str)const; + /// Convert characters to the Traditional Chinese. + /// The converted string. + /// The string to convert. + WString ToTraditionalChinese(const WString& str)const; + /// Convert characters to the tile case, in which the first letter of each major word is capitalized. + /// The converted string. + /// The string to convert. + WString ToTileCase(const WString& str)const; +#endif + + /// Mergable flags controlling how to normalize a string. + enum Normalization + { + /// Do nothing. + None=0, + /// Ignore case using the file system rule. + IgnoreCase=1, +#ifdef VCZH_MSVC + /// Ignore case using the linguistic rule. + IgnoreCaseLinguistic=2, + /// Ignore the difference between between hiragana and katakana characters. + IgnoreKanaType=4, + /// Ignore nonspacing characters. + IgnoreNonSpace=8, + /// Ignore symbols and punctuation. + IgnoreSymbol=16, + /// Ignore the difference between half-width and full-width characters. + IgnoreWidth=32, + /// Treat digits as numbers during sorting. + DigitsAsNumbers=64, + /// Treat punctuation the same as symbols. + StringSoft=128, +#endif + }; + + /// Compare two strings. + /// Returns 0 if two strings are equal. Returns a positive number if the first string is larger. Returns a negative number if the second string is larger. When sorting strings, larger strings are put after then smaller strings. + /// The first string to compare. + /// The second string to compare. + /// Flags controlling how to normalize a string. + vint Compare(const WString& s1, const WString& s2, Normalization normalization)const; + /// Compare two strings to test binary equivalence. + /// Returns 0 if two strings are equal. Returns a positive number if the first string is larger. Returns a negative number if the second string is larger. When sorting strings, larger strings are put after then smaller strings. + /// The first string to compare. + /// The second string to compare. + vint CompareOrdinal(const WString& s1, const WString& s2)const; + /// Compare two strings to test binary equivalence, ignoring case. + /// Returns 0 if two strings are equal. Returns a positive number if the first string is larger. Returns a negative number if the second string is larger. When sorting strings, larger strings are put after then smaller strings. + /// The first string to compare. + /// The second string to compare. + vint CompareOrdinalIgnoreCase(const WString& s1, const WString& s2)const; + /// Find the first position that the sub string appears in a text. + /// Returns a pair of numbers, the first number indicating the position in the text, the second number indicating the size of the equivalence sub string in the text. For some normalization, the found sub string may be binary different to the string you want to find. + /// The text to find the sub string. + /// The sub string to match. + /// Flags controlling how to normalize a string. + collections::Pair FindFirst(const WString& text, const WString& find, Normalization normalization)const; + /// Find the last position that the sub string appears in a text. + /// Returns a pair of numbers, the first number indicating the position in the text, the second number indicating the size of the equivalence sub string in the text. For some normalization, the found sub string may be binary different to the string you want to find. + /// The text to find the sub string. + /// The sub string to match. + /// Flags controlling how to normalize a string. + collections::Pair FindLast(const WString& text, const WString& find, Normalization normalization)const; + /// Test is the prefix of the text equivalence to the provided sub string. + /// Returns true if the prefix of the text equivalence to the provided sub string. + /// The text to test the prefix. + /// The sub string to match. + /// Flags controlling how to normalize a string. + bool StartsWith(const WString& text, const WString& find, Normalization normalization)const; + /// Test is the postfix of the text equivalence to the provided sub string. + /// Returns true if the postfix of the text equivalence to the provided sub string. + /// The text to test the postfix. + /// The sub string to match. + /// Flags controlling how to normalize a string. + bool EndsWith(const WString& text, const WString& find, Normalization normalization)const; + }; + +#define INVLOC vl::Locale::Invariant() +} + +#endif + +/*********************************************************************** +.\STREAM\FILESTREAM.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Stream::FileStream + +Interfaces: + FileStream : File stream +***********************************************************************/ + +#ifndef VCZH_STREAM_FILESTREAM +#define VCZH_STREAM_FILESTREAM + +#include + +namespace vl +{ + namespace stream + { + /// A file stream. It is readable when you use [F:vl.stream.FileStream.AccessRight.ReadOnly] or [F:vl.stream.FileStream.AccessRight.ReadWrite] to create the stream. It is writable when you use [F:vl.stream.FileStream.AccessRight.WriteOnly] or [F:vl.stream.FileStream.AccessRight.ReadWrite] to create the stream. + class FileStream : public Object, public virtual IStream + { + public: + /// Access to the file. + enum AccessRight + { + /// The file is opened to read. + ReadOnly, + /// The file is opened to write. + WriteOnly, + /// The file is opened to both read and write. + ReadWrite + }; + protected: + AccessRight accessRight; + FILE* file; + public: + /// Create a stream. + /// File to operate. + /// Operations want to perform on the file. + FileStream(const WString& fileName, AccessRight _accessRight); + ~FileStream(); + + bool CanRead()const; + bool CanWrite()const; + bool CanSeek()const; + bool CanPeek()const; + bool IsLimited()const; + bool IsAvailable()const; + void Close(); + pos_t Position()const; + pos_t Size()const; + void Seek(pos_t _size); + void SeekFromBegin(pos_t _size); + void SeekFromEnd(pos_t _size); + vint Read(void* _buffer, vint _size); + vint Write(void* _buffer, vint _size); + vint Peek(void* _buffer, vint _size); + }; + } +} + +#endif + +/*********************************************************************** +.\STREAM\ACCESSOR.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Stream::Accessor + +Classes: + TextReader : Text reader base class + TextWriter : Text writer base class + StringReader : Text reader from a string + StreamReader : Text reader from a stream + StreamWriter : Text writer to a stream + EncoderStream : Stream that takes an encoder to translate another stream + DecoderStream : Stream that takes a decoder to translate another stream +***********************************************************************/ + +#ifndef VCZH_STREAM_ACCESSOR +#define VCZH_STREAM_ACCESSOR + + +namespace vl +{ + namespace stream + { + +/*********************************************************************** +Text Related +***********************************************************************/ + + /// Text reader. All line breaks are normalized to CRLF regardless the format in the source. + class TextReader : public Object, private NotCopyable + { + public: + /// Test does the reader reach the end or not. + /// Returns true if the reader reaches the end. + virtual bool IsEnd()=0; + /// Read a single character. + /// The character. + virtual wchar_t ReadChar()=0; + /// Read a string of a specified size. + /// The string. + /// Expected length of the string to read. + virtual WString ReadString(vint length); + /// Read a string until a line breaks is reached. + /// The string. It does not contain the line break. + virtual WString ReadLine(); + /// Read everying remain. + /// The string. + virtual WString ReadToEnd(); + }; + + /// Text writer. + class TextWriter : public Object, private NotCopyable + { + public: + /// Write a single character. + /// The character to write. + virtual void WriteChar(wchar_t c)=0; + /// Write a string. + /// Buffer to the string to write. + /// Size of the string in characters not including the zero terminator. + virtual void WriteString(const wchar_t* string, vint charCount); + /// Write a string. + /// Buffer to the zero terminated string to write. + virtual void WriteString(const wchar_t* string); + /// Write a string. + /// The string to write. + virtual void WriteString(const WString& string); + /// Write a string with a CRLF. + /// Buffer to the string to write. + /// Size of the string in characters not including the zero terminator. + virtual void WriteLine(const wchar_t* string, vint charCount); + /// Write a string with a CRLF. + /// Buffer to the zero terminated string to write. + virtual void WriteLine(const wchar_t* string); + /// Write a string with a CRLF. + /// The string to write. + virtual void WriteLine(const WString& string); + + virtual void WriteMonospacedEnglishTable(collections::Array& tableByRow, vint rows, vint columns); + }; + + /// Text reader from a string. + class StringReader : public TextReader + { + protected: + WString string; + vint current; + bool lastCallIsReadLine; + + void PrepareIfLastCallIsReadLine(); + public: + /// Create a text reader. + /// The string to read. + StringReader(const WString& _string); + + bool IsEnd(); + wchar_t ReadChar(); + WString ReadString(vint length); + WString ReadLine(); + WString ReadToEnd(); + }; + + /// Text reader from a stream. + class StreamReader : public TextReader + { + protected: + IStream* stream; + public: + /// Create a text reader. + /// The stream to read. + StreamReader(IStream& _stream); + + bool IsEnd(); + wchar_t ReadChar(); + }; + + /// Text writer to a stream. + class StreamWriter : public TextWriter + { + protected: + IStream* stream; + public: + /// Create a text writer. + /// The stream to write. + StreamWriter(IStream& _stream); + using TextWriter::WriteString; + + void WriteChar(wchar_t c); + void WriteString(const wchar_t* string, vint charCount); + }; + +/*********************************************************************** +Encoding Related +***********************************************************************/ + + /// Encoder stream, a writable stream using an [T:vl.stream.IEncoder] to transform content. + class EncoderStream : public virtual IStream + { + protected: + IStream* stream; + IEncoder* encoder; + pos_t position; + + public: + /// Create a stream. + /// The target stream to write. + /// The encoder to transform content. + EncoderStream(IStream& _stream, IEncoder& _encoder); + ~EncoderStream(); + + bool CanRead()const; + bool CanWrite()const; + bool CanSeek()const; + bool CanPeek()const; + bool IsLimited()const; + bool IsAvailable()const; + void Close(); + pos_t Position()const; + pos_t Size()const; + void Seek(pos_t _size); + void SeekFromBegin(pos_t _size); + void SeekFromEnd(pos_t _size); + vint Read(void* _buffer, vint _size); + vint Write(void* _buffer, vint _size); + vint Peek(void* _buffer, vint _size); + }; + + /// Decoder stream, a readable stream using an [T:vl.stream.IDecoder] to transform content. + class DecoderStream : public virtual IStream + { + protected: + IStream* stream; + IDecoder* decoder; + pos_t position; + + public: + /// Create a stream. + /// The target stream to read. + /// The decoder to transform content. + DecoderStream(IStream& _stream, IDecoder& _decoder); + ~DecoderStream(); + + bool CanRead()const; + bool CanWrite()const; + bool CanSeek()const; + bool CanPeek()const; + bool IsLimited()const; + bool IsAvailable()const; + void Close(); + pos_t Position()const; + pos_t Size()const; + void Seek(pos_t _size); + void SeekFromBegin(pos_t _size); + void SeekFromEnd(pos_t _size); + vint Read(void* _buffer, vint _size); + vint Write(void* _buffer, vint _size); + vint Peek(void* _buffer, vint _size); + }; + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + template + WString GenerateToStream(const TCallback& callback, vint block = 65536) + { + MemoryStream stream(block); + { + StreamWriter writer(stream); + callback(writer); + } + stream.SeekFromBegin(0); + { + StreamReader reader(stream); + return reader.ReadToEnd(); + } + } + } +} + +#endif + +/*********************************************************************** +.\HTTPUTILITY.H +***********************************************************************/ +#ifndef VCZH_HTTPUTILITY +#define VCZH_HTTPUTILITY + + +#ifdef VCZH_MSVC + +namespace vl +{ + +/*********************************************************************** +HTTP Utility +***********************************************************************/ + + /// A type representing an http requiest. + class HttpRequest + { + typedef collections::Array BodyBuffer; + typedef collections::List StringList; + typedef collections::Dictionary HeaderMap; + public: + /// Name of the server, like "gaclib.net". + WString server; + /// Port of the server, like 80. + vint port; + /// Query of the request, like "/GettingStart.html". + WString query; + /// Set to true if the request uses SSL. + bool secure; + /// User name to authorize. Set to empty if you don't want to provide it. + WString username; + /// Password to authorize. Set to empty if you don't want to provide it. + WString password; + /// HTTP method, like "GET", "POST", "PUT", "DELETE", etc. + WString method; + /// Cookie. Set to empty if you don't want to provide it. + WString cookie; + /// Request body. This is a binary array using an array container to char. + BodyBuffer body; + /// Content type, like "text/xml". + WString contentType; + /// Accept type list, elements of it like "text/xml". + StringList acceptTypes; + /// A dictionary to contain extra headers. + HeaderMap extraHeaders; + + /// Create an empty request. + HttpRequest(); + + /// Set , , and fields for you using an URL. + /// Returns true if this operation succeeded. + /// The URL. + bool SetHost(const WString& inputQuery); + + /// Fill the body with a text using UTF-8 encoding. + /// The text to fill. + void SetBodyUtf8(const WString& bodyString); + }; + + /// A type representing an http response. + class HttpResponse + { + typedef collections::Array BodyBuffer; + public: + /// Status code, like 200. + vint statusCode; + /// Response body. This is a binary array using an array container to char. + BodyBuffer body; + /// Returned cookie from the server. + WString cookie; + + HttpResponse(); + + /// If you believe the server returns a text in UTF-8, use it to decode the body. + /// The response body as text. + WString GetBodyUtf8(); + }; + + /// Send an http request and receive a response. + /// Returns true if this operation succeeded. Even the server returns 404 will be treated as success, because you get the response. + /// The request. + /// The response. + extern bool HttpQuery(const HttpRequest& request, HttpResponse& response); + + /// Encode a text as part of the url. This function can be used to create arguments in an URL. + /// The encoded text. + /// The text to encode. + extern WString UrlEncodeQuery(const WString& query); +} + +#endif + +#endif + + +/*********************************************************************** +.\THREADING.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Threading + +Classes: + Thread : Thread + CriticalSection + Mutex + Semaphore + EventObject +***********************************************************************/ + +#ifndef VCZH_THREADING +#define VCZH_THREADING + + +namespace vl +{ + +/*********************************************************************** +Kernel Mode Objects +***********************************************************************/ + + namespace threading_internal + { + struct WaitableData; + struct ThreadData; + struct MutexData; + struct SemaphoreData; + struct EventData; + struct CriticalSectionData; + struct ReaderWriterLockData; + struct ConditionVariableData; + } + + /// Base type of all synchronization objects. + class WaitableObject : public Object, public NotCopyable + { +#if defined VCZH_MSVC + private: + threading_internal::WaitableData* waitableData; + protected: + + WaitableObject(); + void SetData(threading_internal::WaitableData* data); + public: + /// Test if the object has already been created. Some of the synchronization objects should initialize itself after the constructor. This function is only available in Windows. + /// Returns true if the object has already been created. + bool IsCreated(); + /// Wait for this object to signal. + /// Returns true if the object is signaled. Returns false if this operation failed. + bool Wait(); + /// Wait for this object to signal for a period of time. This function is only available in Windows. + /// Returns true if the object is signaled. Returns false if this operation failed, including time out. + /// Time in milliseconds. + bool WaitForTime(vint ms); + + /// Wait for multiple objects. This function is only available in Windows. + /// Returns true if all objects are signaled. Returns false if this operation failed. + /// A pointer to an array to pointers. + /// The number of objects in the array. + static bool WaitAll(WaitableObject** objects, vint count); + /// Wait for multiple objects for a period of time. This function is only available in Windows. + /// Returns true if all objects are signaled. Returns false if this operation failed, including time out. + /// A pointer to an array to pointers. + /// The number of objects in the array. + /// Time in milliseconds. + static bool WaitAllForTime(WaitableObject** objects, vint count, vint ms); + /// Wait for one of the objects. This function is only available in Windows. + /// Returns the index of the first signaled or abandoned object, according to the "abandoned" parameter. Returns -1 if this operation failed. + /// A pointer to an array to pointers. + /// The number of objects in the array. + /// Returns true if the waiting is canceled by an abandoned object. An abandoned object is caused by it's owner thread existing without releasing it. + static vint WaitAny(WaitableObject** objects, vint count, bool* abandoned); + /// Wait for one of the objects for a period of time. This function is only available in Windows. + /// Returns the index of the first signaled or abandoned object, according to the "abandoned" parameter. Returns -1 if this operation failed, including time out. + /// A pointer to an array to pointers. + /// The number of objects in the array. + /// Time in milliseconds. + /// Returns true if the waiting is canceled by an abandoned object. An abandoned object is caused by it's owner thread existing without releasing it. + static vint WaitAnyForTime(WaitableObject** objects, vint count, vint ms, bool* abandoned); +#elif defined VCZH_GCC + virtual bool Wait() = 0; +#endif + }; + + /// Representing a thread. [M:vl.Thread.CreateAndStart] is the suggested way to create threads. + class Thread : public WaitableObject + { + friend void InternalThreadProc(Thread* thread); + public: + /// Thread state. + enum ThreadState + { + /// The thread has not started. + NotStarted, + /// The thread is running. + Running, + /// The thread has been stopped. + Stopped + }; + + typedef void(*ThreadProcedure)(Thread*, void*); + protected: + threading_internal::ThreadData* internalData; + volatile ThreadState threadState; + + virtual void Run()=0; + + Thread(); + public: + ~Thread(); + + /// Create a thread using a function pointer. + /// Returns the created thread. + /// The function pointer. + /// The argument to call the function pointer. + /// Set to true (by default) to make the thread delete itself after the job is done. If you set this argument to true, you are not suggested to touch the returned thread pointer in any way. + static Thread* CreateAndStart(ThreadProcedure procedure, void* argument=0, bool deleteAfterStopped=true); + /// Create a thread using a function object or a lambda expression. + /// Returns the created thread. + /// The function object or the lambda expression. + /// Set to true (by default) to make the thread delete itself after the job is done. If you set this argument to true, you are not suggested to touch the returned thread pointer in any way. + static Thread* CreateAndStart(const Func& procedure, bool deleteAfterStopped=true); + /// Pause the caller thread for a period of time. + /// Time in milliseconds. + static void Sleep(vint ms); + /// Get the number of logical processors. + /// The number of logical processor. + static vint GetCPUCount(); + /// Get the current thread id. + /// The current thread id. + static vint GetCurrentThreadId(); + + /// Start the thread. + /// Returns true if this operation succeeded. + bool Start(); +#if defined VCZH_GCC + bool Wait(); +#endif + /// Stop the thread. + /// Returns true if this operation succeeded. + bool Stop(); + /// Get the state of the thread. + /// The state of the thread. + ThreadState GetState(); +#ifdef VCZH_MSVC + void SetCPU(vint index); +#endif + }; + + /// Mutex. + class Mutex : public WaitableObject + { + private: + threading_internal::MutexData* internalData; + public: + Mutex(); + ~Mutex(); + + /// Create a mutex. + /// Returns true if this operation succeeded. + /// Set to true to own the created mutex. + /// Name of the mutex. If it is not empty, than it is a global named mutex. This argument is ignored in Linux. + bool Create(bool owned=false, const WString& name=L""); + /// Open an existing global named mutex. + /// Returns true if this operation succeeded. + /// Set to true make the mutex visible to all all child processes. This argument is only used in Windows. + /// Name of the mutex. This argument is ignored in Linux. + bool Open(bool inheritable, const WString& name); + + /// + /// Release the mutex. + /// In the implementation for Linux, calling Release() more than once between two Wait(), or calling Wait() more than once between two Release(), will results in an undefined behavior. + /// + /// Returns true if this operation succeeded. + bool Release(); +#ifdef VCZH_GCC + bool Wait(); +#endif + }; + + /// Semaphore. + class Semaphore : public WaitableObject + { + private: + threading_internal::SemaphoreData* internalData; + public: + Semaphore(); + ~Semaphore(); + + /// Create a semaphore. + /// Returns true if this operation succeeded. + /// Define the counter of the semaphore. + /// Define the maximum value of the counter of the semaphore. This argument is only used in Windows. + /// Name of the semaphore. If it is not empty, than it is a global named semaphore. This argument is ignored in Linux. + bool Create(vint initialCount, vint maxCount, const WString& name=L""); + /// Open an existing global named semaphore. + /// Returns true if this operation succeeded. + /// Set to true make the semaphore visible to all all child processes. This argument is only used in Windows. + /// Name of the semaphore. This argument is ignored in Linux. + bool Open(bool inheritable, const WString& name); + + /// Release the semaphore once. + /// Returns true if this operation succeeded. + bool Release(); + /// Release the semaphore multiple times. + /// Returns true if this operation succeeded. + /// The amout to release. + vint Release(vint count); +#ifdef VCZH_GCC + bool Wait(); +#endif + }; + + /// Event. + class EventObject : public WaitableObject + { + private: + threading_internal::EventData* internalData; + public: + EventObject(); + ~EventObject(); + + /// Create an auto unsignal event. Auto unsignal means, when one thread waits for the event and succeeded, the event will become unsignaled immediately. + /// Returns true if this operation succeeded. + /// Set to true make the event signaled at the beginning. + /// Name of the event. If it is not empty, than it is a global named mutex. This argument is only used in Windows. + bool CreateAutoUnsignal(bool signaled, const WString& name=L""); + /// Create a manual unsignal event. + /// Returns true if this operation succeeded. + /// Set to true make the event signaled at the beginning. + /// Name of the event. If it is not empty, than it is a global named mutex. This argument is only used in Windows. + bool CreateManualUnsignal(bool signaled, const WString& name=L""); + /// Open an existing global named event. + /// Returns true if this operation succeeded. + /// Set to true make the event visible to all all child processes. This argument is only used in Windows. + /// Name of the event. This argument is only used in Windows. + bool Open(bool inheritable, const WString& name); + + /// Signal the event. + /// Returns true if this operation succeeded. + bool Signal(); + /// Unsignal the event. + /// Returns true if this operation succeeded. + bool Unsignal(); +#ifdef VCZH_GCC + bool Wait(); +#endif + }; + +/*********************************************************************** +Thread Pool +***********************************************************************/ + + /// A light-weight thread pool. + class ThreadPoolLite : public Object + { + private: + ThreadPoolLite(); + ~ThreadPoolLite(); + public: + /// Queue a function pointer. + /// Returns true if this operation succeeded. + /// The function pointer. + /// The argument to call the function pointer. + static bool Queue(void(*proc)(void*), void* argument); + /// Queue a function object. + /// Returns true if this operation succeeded. + /// The function object. + static bool Queue(const Func& proc); + + /// Queue a lambda expression. + /// The type of the lambda expression. + /// The lambda expression. + template + static void QueueLambda(const T& proc) + { + Queue(Func(proc)); + } + +#ifdef VCZH_GCC + static bool Stop(bool discardPendingTasks); +#endif + }; + +/*********************************************************************** +Kernel Mode Objects in Process +***********************************************************************/ + + /// + /// } + /// ]]> + class CriticalSection : public Object, public NotCopyable + { + private: + friend class ConditionVariable; + threading_internal::CriticalSectionData* internalData; + public: + /// Create a critical section. + CriticalSection(); + ~CriticalSection(); + + /// Try enter a critical section. This function will return immediately. + /// Returns true if the current thread owned the critical section. + bool TryEnter(); + /// Enter a critical section. + void Enter(); + /// Leave a critical section. + void Leave(); + + public: + class Scope : public Object, public NotCopyable + { + private: + CriticalSection* criticalSection; + public: + Scope(CriticalSection& _criticalSection); + ~Scope(); + }; + }; + + /// + /// } + /// or + /// WRITER_LOCK(yourLock) + /// { + /// + /// } + /// ]]> + class ReaderWriterLock : public Object, public NotCopyable + { + private: + friend class ConditionVariable; + threading_internal::ReaderWriterLockData* internalData; + public: + /// Create a reader writer lock. + ReaderWriterLock(); + ~ReaderWriterLock(); + + /// Try acquire a reader lock. This function will return immediately. + /// Returns true if the current thread acquired the reader lock. + bool TryEnterReader(); + /// Acquire a reader lock. + void EnterReader(); + /// Release a reader lock. + void LeaveReader(); + /// Try acquire a writer lock. This function will return immediately. + /// Returns true if the current thread acquired the writer lock. + bool TryEnterWriter(); + /// Acquire a writer lock. + void EnterWriter(); + /// Release a writer lock. + void LeaveWriter(); + public: + class ReaderScope : public Object, public NotCopyable + { + private: + ReaderWriterLock* lock; + public: + ReaderScope(ReaderWriterLock& _lock); + ~ReaderScope(); + }; + + class WriterScope : public Object, public NotCopyable + { + private: + ReaderWriterLock* lock; + public: + WriterScope(ReaderWriterLock& _lock); + ~WriterScope(); + }; + }; + + /// Conditional variable. + class ConditionVariable : public Object, public NotCopyable + { + private: + threading_internal::ConditionVariableData* internalData; + public: + /// Create a conditional variable. + ConditionVariable(); + ~ConditionVariable(); + + /// Bind a conditional variable with a owned critical section and release it. When the function returns, the condition variable is activated, and the current thread owned the critical section again. + /// Returns true if this operation succeeded. + /// The critical section. + bool SleepWith(CriticalSection& cs); +#ifdef VCZH_MSVC + /// Bind a conditional variable with a owned critical section and release it for a period of time. When the function returns, the condition variable is activated or it is time out, and the current thread owned the critical section again. This function is only available in Windows. + /// Returns true if this operation succeeded. + /// The critical section. + /// Time in milliseconds. + bool SleepWithForTime(CriticalSection& cs, vint ms); + /// Bind a conditional variable with a owned reader lock and release it. When the function returns, the condition variable is activated, and the current thread owned the reader lock again. This function is only available in Windows. + /// Returns true if this operation succeeded. + /// The reader lock. + bool SleepWithReader(ReaderWriterLock& lock); + /// Bind a conditional variable with a owned reader lock and release it for a period of time. When the function returns, the condition variable is activated or it is time out, and the current thread owned the reader lock again. This function is only available in Windows. + /// Returns true if this operation succeeded. + /// The reader lock. + /// Time in milliseconds. + bool SleepWithReaderForTime(ReaderWriterLock& lock, vint ms); + /// Bind a conditional variable with a owned writer lock and release it. When the function returns, the condition variable is activated, and the current thread owned the writer lock again. This function is only available in Windows. + /// Returns true if this operation succeeded. + /// The writer lock. + bool SleepWithWriter(ReaderWriterLock& lock); + /// Bind a conditional variable with a owned writer lock and release it for a period of time. When the function returns, the condition variable is activated or it is time out, and the current thread owned the writer lock again. This function is only available in Windows. + /// Returns true if this operation succeeded. + /// The writer lock. + /// Time in milliseconds. + bool SleepWithWriterForTime(ReaderWriterLock& lock, vint ms); +#endif + /// Wake one thread that pending on this condition variable. + void WakeOnePending(); + /// Wake all thread that pending on this condition variable. + void WakeAllPendings(); + }; + +/*********************************************************************** +User Mode Objects +***********************************************************************/ + + typedef long LockedInt; + + /// + /// } + /// ]]> + class SpinLock : public Object, public NotCopyable + { + protected: + volatile LockedInt token; + public: + /// Create a spin lock. + SpinLock(); + ~SpinLock(); + + /// Try enter a spin lock. This function will return immediately. + /// Returns true if the current thread owned the spin lock. + bool TryEnter(); + /// Enter a spin lock. + void Enter(); + /// Leave a spin lock. + void Leave(); + + public: + class Scope : public Object, public NotCopyable + { + private: + SpinLock* spinLock; + public: + Scope(SpinLock& _spinLock); + ~Scope(); + }; + }; + +#define SPIN_LOCK(LOCK) SCOPE_VARIABLE(const SpinLock::Scope&, scope, LOCK) +#define CS_LOCK(LOCK) SCOPE_VARIABLE(const CriticalSection::Scope&, scope, LOCK) +#define READER_LOCK(LOCK) SCOPE_VARIABLE(const ReaderWriterLock::ReaderScope&, scope, LOCK) +#define WRITER_LOCK(LOCK) SCOPE_VARIABLE(const ReaderWriterLock::WriterScope&, scope, LOCK) + +/*********************************************************************** +Thread Local Storage + +ThreadLocalStorage and ThreadVariable are designed to be used as global value types only. +Dynamically create instances of them are undefined behavior. +***********************************************************************/ + + /// Thread local storage operations. + class ThreadLocalStorage : public Object, private NotCopyable + { + typedef void(*Destructor)(void*); + protected: + vuint64_t key; + Destructor destructor; + volatile bool disposed = false; + + static void PushStorage(ThreadLocalStorage* storage); + public: + ThreadLocalStorage(Destructor _destructor); + ~ThreadLocalStorage(); + + void* Get(); + void Set(void* data); + void Clear(); + void Dispose(); + + /// Fix all storage creation. + static void FixStorages(); + /// Clear all storages for the current thread. For threads that are created using [T:vl.Thread], this function will be automatically called when before the thread exit. + static void ClearStorages(); + /// Clear all storages for the current thread (should be the main thread) and clear all records. This function can only be called by the main thread when all other threads are exited. It will reduce noices when you want to detect memory leaks. + static void DisposeStorages(); + }; + + /// Thread local variable. This type can only be used to define global variables. Different threads can store different values to and obtain differnt values from a thread local variable. + /// Type of the storage. + template + class ThreadVariable : public Object, private NotCopyable + { + protected: + ThreadLocalStorage storage; + + static void Destructor(void* data) + { + if (data) + { + delete (T*)data; + } + } + public: + /// Create a thread local variable. + ThreadVariable() + :storage(&Destructor) + { + } + + ~ThreadVariable() + { + } + + /// Test if the storage has data. + /// Returns true if the storage has data. + bool HasData() + { + return storage.Get() != nullptr; + } + + /// Remove the data from this storage. + void Clear() + { + storage.Clear(); + } + + /// Get the stored data. + /// The stored ata. + T& Get() + { + return *(T*)storage.Get(); + } + + /// Set data to this storage. + /// The data to set. + void Set(const T& value) + { + storage.Clear(); + storage.Set(new T(value)); + } + }; + + template + class ThreadVariable : public Object, private NotCopyable + { + protected: + ThreadLocalStorage storage; + + public: + ThreadVariable() + :storage(nullptr) + { + } + + ~ThreadVariable() + { + } + + bool HasData() + { + return storage.Get() != nullptr; + } + + void Clear() + { + storage.Set(nullptr); + } + + T* Get() + { + return (T*)storage.Get(); + } + + void Set(T* value) + { + storage.Set((void*)value); + } + }; + +/*********************************************************************** +RepeatingTaskExecutor +***********************************************************************/ + + /// Queued task executor. It is different from a thread pool by: 1) Task execution is single threaded, 2) If you queue a task, it will override the the unexecuted queued task. + /// The type of the argument to run a task. + template + class RepeatingTaskExecutor : public Object + { + private: + SpinLock inputLock; + T inputData; + volatile bool inputDataAvailable; + SpinLock executingEvent; + volatile bool executing; + + void ExecutingProcInternal() + { + while(true) + { + bool currentInputDataAvailable; + T currentInputData; + SPIN_LOCK(inputLock) + { + currentInputData=inputData; + inputData=T(); + currentInputDataAvailable=inputDataAvailable; + inputDataAvailable=false; + if(!currentInputDataAvailable) + { + executing=false; + goto FINISH_EXECUTING; + } + } + Execute(currentInputData); + } + FINISH_EXECUTING: + executingEvent.Leave(); + } + + static void ExecutingProc(void* argument) + { + ((RepeatingTaskExecutor*)argument)->ExecutingProcInternal(); + } + + protected: + /// This function is called when it is ready to execute a task. Task execution is single threaded. All task code should be put inside the function. + /// The argument to run a task. + virtual void Execute(const T& input)=0; + + public: + /// Create a task executor. + RepeatingTaskExecutor() + :inputDataAvailable(false) + ,executing(false) + { + } + + ~RepeatingTaskExecutor() + { + EnsureTaskFinished(); + } + + /// Wait for all tasks to finish. + void EnsureTaskFinished() + { + executingEvent.Enter(); + executingEvent.Leave(); + } + + /// Queue a task. If there is a queued task that has not been executied yet, those tasks will be canceled. Only one task can be queued at the same moment. + /// The argument to run a task. + void SubmitTask(const T& input) + { + SPIN_LOCK(inputLock) + { + inputData=input; + inputDataAvailable=true; + } + if(!executing) + { + executing=true; + executingEvent.Enter(); + ThreadPoolLite::Queue(&ExecutingProc, this); + } + } + }; +} +#endif + + +/*********************************************************************** +.\CONSOLE.H +***********************************************************************/ + +/*********************************************************************** +.\STREAM\BROADCASTSTREAM.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Stream::BroadcastStream + +Interfaces: + BroadcastStream : Stream that copy the written data to multiple streams +***********************************************************************/ + +#ifndef VCZH_STREAM_BROADCASTSTREAM +#define VCZH_STREAM_BROADCASTSTREAM + + +namespace vl +{ + namespace stream + { + /// A writable stream that copy written content to multiple target streams. + class BroadcastStream : public Object, public virtual IStream + { + typedef collections::List StreamList; + protected: + bool closed; + pos_t position; + StreamList streams; + public: + /// Create a strema. + BroadcastStream(); + ~BroadcastStream(); + + /// Get the list of target streams. You can add streams to this list, or remove streams from this list. + /// The list of target streams. + StreamList& Targets(); + bool CanRead()const; + bool CanWrite()const; + bool CanSeek()const; + bool CanPeek()const; + bool IsLimited()const; + bool IsAvailable()const; + void Close(); + pos_t Position()const; + pos_t Size()const; + void Seek(pos_t _size); + void SeekFromBegin(pos_t _size); + void SeekFromEnd(pos_t _size); + vint Read(void* _buffer, vint _size); + vint Write(void* _buffer, vint _size); + vint Peek(void* _buffer, vint _size); + }; + } +} + +#endif + +/*********************************************************************** +.\STREAM\CACHESTREAM.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Stream::CacheStream + +Interfaces: + CacheStream : Stream that provide a cache for reading and writing +***********************************************************************/ + +#ifndef VCZH_STREAM_CACHESTREAM +#define VCZH_STREAM_CACHESTREAM + + +namespace vl +{ + namespace stream + { + /// + /// A cache stream. Features (readable, writable, seekable, peekable) are enabled according to the target stream. + /// When you read from the cache strema, it will read a specified size of content from the target stream first and cache, reducing the numbers of operations on the target stream. + /// When you write to the cache strema, it will save them to a buffer, and write to the target stream until the buffer reaches a specified size, reducing the numbers of operations on the target stream. + /// + class CacheStream : public Object, public virtual IStream + { + protected: + IStream* target; + vint block; + pos_t start; + pos_t position; + + char* buffer; + vint dirtyStart; + vint dirtyLength; + vint availableLength; + pos_t operatedSize; + + void Flush(); + void Load(pos_t _position); + vint InternalRead(void* _buffer, vint _size); + vint InternalWrite(void* _buffer, vint _size); + public: + /// Create a cache stream using a target stream. + /// The target stream. + /// Size of the cache. + CacheStream(IStream& _target, vint _block=65536); + ~CacheStream(); + + bool CanRead()const; + bool CanWrite()const; + bool CanSeek()const; + bool CanPeek()const; + bool IsLimited()const; + bool IsAvailable()const; + void Close(); + pos_t Position()const; + pos_t Size()const; + void Seek(pos_t _size); + void SeekFromBegin(pos_t _size); + void SeekFromEnd(pos_t _size); + vint Read(void* _buffer, vint _size); + vint Write(void* _buffer, vint _size); + vint Peek(void* _buffer, vint _size); + }; + } +} + +#endif + +/*********************************************************************** +.\STREAM\COMPRESSIONSTREAM.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Stream::CharFormat + +Classes: +***********************************************************************/ + +#ifndef VCZH_STREAM_COMPRESSIONSTREAM +#define VCZH_STREAM_COMPRESSIONSTREAM + + +namespace vl +{ + namespace stream + { + +/*********************************************************************** +Compression +***********************************************************************/ + + namespace lzw + { + static const vint BufferSize = 1024; + static const vint MaxDictionarySize = 1 << 24; + + struct Code + { + typedef collections::PushOnlyAllocator CodeAllocator; + typedef collections::ByteObjectMap::Allocator MapAllocator; + + vuint8_t byte = 0; + vint code = -1; + Code* parent = 0; + vint size = 0; + collections::ByteObjectMap children; + }; + } + + class LzwBase : public Object + { + protected: + lzw::Code::CodeAllocator codeAllocator; + lzw::Code::MapAllocator mapAllocator; + lzw::Code* root; + vint eofIndex = -1; + vint nextIndex = 0; + vint indexBits = 1; + + void UpdateIndexBits(); + lzw::Code* CreateCode(lzw::Code* parent, vuint8_t byte); + + LzwBase(); + LzwBase(bool (&existingBytes)[256]); + ~LzwBase(); + }; + + /// An encoder to compress using Lzw algorithm. + class LzwEncoder : public LzwBase, public IEncoder + { + protected: + IStream* stream = 0; + + vuint8_t buffer[lzw::BufferSize]; + vint bufferUsedBits = 0; + lzw::Code* prefix; + + void Flush(); + void WriteNumber(vint number, vint bitSize); + public: + /// Create an encoder. + LzwEncoder(); + /// Create an encoder and tell it which byte will never appear in the data before compression. + /// An array to tell the encoder which byte will never appear in the data before compression. + LzwEncoder(bool (&existingBytes)[256]); + ~LzwEncoder(); + + void Setup(IStream* _stream)override; + void Close()override; + vint Write(void* _buffer, vint _size)override; + }; + + /// An decoder to decompress using Lzw algorithm. + class LzwDecoder :public LzwBase, public IDecoder + { + protected: + IStream* stream = 0; + collections::List dictionary; + lzw::Code* lastCode = 0; + + vuint8_t inputBuffer[lzw::BufferSize]; + vint inputBufferSize = 0; + vint inputBufferUsedBits = 0; + + collections::Array outputBuffer; + vint outputBufferSize = 0; + vint outputBufferUsedBytes = 0; + + bool ReadNumber(vint& number, vint bitSize); + void PrepareOutputBuffer(vint size); + void ExpandCodeToOutputBuffer(lzw::Code* code); + public: + /// Create an decoder. + LzwDecoder(); + /// Create an decoder and tell it which byte will never appear in the data before compression. + /// An array to tell the encoder which byte will never appear in the data before compression. + LzwDecoder(bool (&existingBytes)[256]); + ~LzwDecoder(); + + void Setup(IStream* _stream)override; + void Close()override; + vint Read(void* _buffer, vint _size)override; + }; + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + extern vint CopyStream(stream::IStream& inputStream, stream::IStream& outputStream); + extern void CompressStream(stream::IStream& inputStream, stream::IStream& outputStream); + extern void DecompressStream(stream::IStream& inputStream, stream::IStream& outputStream); + } +} + +#endif + +/*********************************************************************** +.\STREAM\RECORDERSTREAM.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Stream::RecorderStream + +Interfaces: + RecorderStream : A readable stream that will copy the data to another stream on the fly +***********************************************************************/ + +#ifndef VCZH_STREAM_RECORDERSTREAM +#define VCZH_STREAM_RECORDERSTREAM + + +namespace vl +{ + namespace stream + { + /// A readable stream that, read from an stream, and write everything that is read to another stream. + class RecorderStream : public Object, public virtual IStream + { + protected: + IStream* in; + IStream* out; + public: + /// Create a stream. + /// The stream to read. + /// The stream to write what is read from "_in". + RecorderStream(IStream& _in, IStream& _out); + ~RecorderStream(); + + bool CanRead()const; + bool CanWrite()const; + bool CanSeek()const; + bool CanPeek()const; + bool IsLimited()const; + bool IsAvailable()const; + void Close(); + pos_t Position()const; + pos_t Size()const; + void Seek(pos_t _size); + void SeekFromBegin(pos_t _size); + void SeekFromEnd(pos_t _size); + vint Read(void* _buffer, vint _size); + vint Write(void* _buffer, vint _size); + vint Peek(void* _buffer, vint _size); + }; + } +} + +#endif diff --git a/Import/VlppParser.cpp b/Import/VlppParser.cpp new file mode 100644 index 00000000..242c939c --- /dev/null +++ b/Import/VlppParser.cpp @@ -0,0 +1,11107 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "VlppParser.h" + +/*********************************************************************** +.\PARSING.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + namespace tabling + { + using namespace definitions; + using namespace analyzing; + using namespace collections; + using namespace regex; + +/*********************************************************************** +ParsingGeneralParser +***********************************************************************/ + + ParsingGeneralParser::ParsingGeneralParser(Ptr _table) + :table(_table) + { + } + + ParsingGeneralParser::~ParsingGeneralParser() + { + } + + Ptr ParsingGeneralParser::GetTable() + { + return table; + } + + void ParsingGeneralParser::BeginParse() + { + } + + bool ParsingGeneralParser::Parse(ParsingState& state, ParsingTransitionProcessor& processor, collections::List>& errors) + { + BeginParse(); + processor.Reset(); + + for(vint i=0;itoken==-1 || !token->completeToken) + { + errors.Add(new ParsingError(token, L"Unrecognizable token: \""+WString(token->reading, token->length)+L"\".")); + } + } + + while(true) + { + ParsingState::TransitionResult result=ParseStep(state, errors); + if(!result) + { + const RegexToken* token=state.GetToken(state.GetCurrentToken()); + errors.Add(new ParsingError(token, L"Internal error when parsing.")); + return false; + } + else if(result.transitionType==ParsingState::TransitionResult::SkipToken) + { + if(state.GetCurrentTableTokenIndex()==ParsingTable::TokenFinish) + { + const RegexToken* token=state.GetToken(state.GetCurrentToken()); + errors.Add(new ParsingError(token, L"Failed to recover error when reaching the end of the input.")); + return false; + } + else + { + state.SkipCurrentToken(); + continue; + } + } + else if(!processor.Run(result)) + { + const RegexToken* token=state.GetToken(state.GetCurrentToken()); + errors.Add(new ParsingError(token, L"Internal error when building the parsing tree.")); + return false; + } + if(result.tableTokenIndex==ParsingTable::TokenFinish && !processor.GetProcessingAmbiguityBranch()) + { + break; + } + } + + return true; + } + + Ptr ParsingGeneralParser::Parse(ParsingState& state, collections::List>& errors) + { + ParsingTreeBuilder builder; + Parse(state, builder, errors); + + Ptr node=builder.GetNode(); + if(!node) + { + errors.Add(new ParsingError(L"Internal error when building the parsing tree after a succeeded parsing process.")); + return 0; + } + return node; + } + + Ptr ParsingGeneralParser::Parse(const WString& input, const WString& rule, collections::List>& errors, vint codeIndex) + { + ParsingState state(input, table, codeIndex); + if(state.Reset(rule)==-1) + { + errors.Add(new ParsingError(L"Rule \""+rule+L"\" does not exist.")); + return 0; + } + return Parse(state, errors); + } + +/*********************************************************************** +ParsingStrictParser +***********************************************************************/ + + bool ParsingStrictParser::OnTestErrorRecoverExists() + { + return false; + } + + void ParsingStrictParser::OnClearErrorRecover() + { + } + + ParsingState::TransitionResult ParsingStrictParser::OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List>& errors) + { + const RegexToken* token=state.GetToken(state.GetCurrentToken()); + errors.Add(new ParsingError(token, (token==0?L"Error happened during parsing when reaching the end of the input.":L"Error happened during parsing."))); + return ParsingState::TransitionResult(); + } + + ParsingStrictParser::ParsingStrictParser(Ptr _table) + :ParsingGeneralParser(_table) + { + } + + ParsingStrictParser::~ParsingStrictParser() + { + } + + ParsingState::TransitionResult ParsingStrictParser::ParseStep(ParsingState& state, collections::List>& errors) + { + ParsingState::TransitionResult result; + if (OnTestErrorRecoverExists()) + { + result = OnErrorRecover(state, -1, errors); + } + else + { + result = state.ReadToken(); + if (result) + { + OnClearErrorRecover(); + } + else + { + vint currentTokenIndex = state.GetCurrentTableTokenIndex(); + if (currentTokenIndex != -1) + { + result = OnErrorRecover(state, currentTokenIndex, errors); + } + } + } + return result; + } + +/*********************************************************************** +ParsingAutoRecoverParser +***********************************************************************/ + + ParsingAutoRecoverParser::RecoverFuture& ParsingAutoRecoverParser::GetRecoverFuture(vint index) + { + return recoverFutures[index]; + } + + ParsingAutoRecoverParser::RecoverFuture& ParsingAutoRecoverParser::CreateRecoverFuture(vint index, vint previousIndex) + { + RecoverFuture* rf = 0; + if (index >= recoverFutures.Count()) + { + CHECK_ERROR(index == recoverFutures.Count(), L"ParsingAutoRecoverParser::CreateRecoverFuture(vint, vint)#Wrong argument: index."); + RecoverFuture recoverFuture; + recoverFuture.future = new ParsingState::Future; + index = recoverFutures.Add(recoverFuture); + } + rf = &GetRecoverFuture(index); + rf->index = index; + rf->previousIndex = previousIndex; + return *rf; + } + + bool ParsingAutoRecoverParser::OnTestErrorRecoverExists() + { + return recoveringFutureIndex != -1; + } + + void ParsingAutoRecoverParser::OnClearErrorRecover() + { + recoveringFutureIndex = -1; + } + + ParsingState::TransitionResult ParsingAutoRecoverParser::OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List>& errors) + { + if(recoveringFutureIndex==-1) + { + List prioritizedTokens; + prioritizedTokens.Add(ParsingTable::TokenFinish); + CopyFrom( + prioritizedTokens, + Range(ParsingTable::UserTokenStart, table->GetTokenCount() - ParsingTable::UserTokenStart) + ); + prioritizedTokens.Add(ParsingTable::LeftRecursiveReduce); + prioritizedTokens.Add(ParsingTable::NormalReduce); + prioritizedTokens.Remove(currentTokenIndex); + prioritizedTokens.Insert(0, currentTokenIndex); + + vint processingFutureIndex=-1; + vint usedFutureCount=0; + while(processingFutureIndexcurrentState==-1) continue; + + FOREACH(vint, currentTableTokenIndex, prioritizedTokens) + { + vint newInsertedTokenCount = previous.insertedTokenCount; + if (currentTableTokenIndex != ParsingTable::NormalReduce && currentTableTokenIndex != ParsingTable::LeftRecursiveReduce) + { + newInsertedTokenCount++; + } + if (currentTableTokenIndex != currentTokenIndex && newInsertedTokenCount > maxInsertedTokenCount) + { + continue; + } + + RecoverFuture& now = CreateRecoverFuture(usedFutureCount, previous.index); + now.insertedTokenCount = newInsertedTokenCount; + + if(state.ReadTokenInFuture(currentTableTokenIndex, previous.future, now.future, 0)) + { + if(currentTableTokenIndex==currentTokenIndex) + { + if(previous.future) + { + recoveringFutureIndex = previous.index; + RecoverFuture* rf = &GetRecoverFuture(previous.index); + while(rf->future->previous) + { + RecoverFuture* prf = &GetRecoverFuture(rf->previousIndex); + prf->nextIndex = rf->index; + prf->future->next = rf->future; + rf = prf; + } + recoveringFutureIndex = rf->index; + } + else + { + recoveringFutureIndex = 0; + } + goto FOUND_ERROR_RECOVER_SOLUTION; + } + else + { + usedFutureCount++; + } + } + } + } + } + FOUND_ERROR_RECOVER_SOLUTION: + + RecoverFuture* rf = 0; + if (recoveringFutureIndex != -1) + { + rf = &GetRecoverFuture(recoveringFutureIndex); + if(rf->future->next) + { + recoveringFutureIndex = rf->nextIndex; + } + else + { + recoveringFutureIndex = -1; + } + } + + if(rf) + { + return state.RunTransition(rf->future->selectedItem, 0); + } + else + { + return ParsingState::TransitionResult(ParsingState::TransitionResult::SkipToken); + } + } + + ParsingAutoRecoverParser::ParsingAutoRecoverParser(Ptr _table, vint _maxInsertedTokenCount) + :ParsingStrictParser(_table) + , recoveringFutureIndex(-1) + , maxInsertedTokenCount(_maxInsertedTokenCount == -1 ? 4 : _maxInsertedTokenCount) + { + } + + ParsingAutoRecoverParser::~ParsingAutoRecoverParser() + { + FOREACH(RecoverFuture, future, recoverFutures) + { + delete future.future; + } + } + + void ParsingAutoRecoverParser::BeginParse() + { + recoveringFutureIndex = -1; + ParsingStrictParser::BeginParse(); + } + +/*********************************************************************** +ParsingAmbiguousParser +***********************************************************************/ + + ParsingAmbiguousParser::ParsingAmbiguousParser(Ptr _table) + :ParsingGeneralParser(_table) + ,consumedDecisionCount(0) + { + } + + ParsingAmbiguousParser::~ParsingAmbiguousParser() + { + } + + void ParsingAmbiguousParser::OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List& futures, vint& begin, vint& end, collections::List>& errors) + { + begin=end; + } + + vint ParsingAmbiguousParser::GetResolvableFutureLevels(collections::List& futures, vint begin, vint end) + { + if(end-begin<2) + { + return 1; + } + List resolvingFutures; + for(vint i=begin;icurrentState!=second->currentState + || first->reduceStateCount!=second->reduceStateCount + || first->shiftStates.Count()!=second->shiftStates.Count() + ) + { + return level; + } + else + { + for(vint j=0;jshiftStates.Count();j++) + { + if(first->shiftStates[j]!=second->shiftStates[j]) + { + return level; + } + } + } + } + level++; + + for(vint i=0;iprevious)) + { + return level; + } + } + } + } + + vint ParsingAmbiguousParser::SearchPathForOneStep(ParsingState& state, collections::List& futures, vint& begin, vint& end, collections::List>& errors) + { + futures.Add(state.ExploreCreateRootFuture()); + vint previousBegin = 0; + vint previousEnd = 1; + vint resolvableFutureLevels = 0; + bool errorRecovered = false; + + while(true) + { + // keep all futures that consumed a token in a list + List consumedTokenFutures; + vint processBegin = previousBegin; + vint processEnd = previousEnd; + while (processEnd > processBegin) + { + // explore the current token + if (state.ExploreStep(futures, processBegin, processEnd - processBegin, futures)) + { + CopyFrom( + consumedTokenFutures, + From(futures) + .Skip(processEnd) + .Take(futures.Count() - processEnd), + true + ); + futures.RemoveRange(processEnd, futures.Count() - processEnd); + } + + // explore left recursive reduce and normal reduce + state.ExploreLeftRecursiveReduce(futures, processBegin, processEnd - processBegin, futures); + state.ExploreNormalReduce(futures, processBegin, processEnd - processBegin, futures); + + // if a token is consumed, then for those reduce futures, explore them until a token is consumed, and discard all failed futures + processBegin = processEnd; + processEnd = futures.Count(); + } + + if (consumedTokenFutures.Count() == 0) + { + // failed to get any future that consumed a token, do error recovering + vint tokenIndex = state.GetCurrentTableTokenIndex(); + OnErrorRecover(state, tokenIndex, futures, previousBegin, previousEnd, errors); + if (previousBegin == previousEnd) + { + break; + } + } + else + { + state.SkipCurrentToken(); + // put all futures that consumed a token from consumedTokenFutures back to future list + previousBegin = futures.Count(); + CopyFrom(futures, consumedTokenFutures, true); + previousEnd = futures.Count(); + + // resolve all futures and see if all futures collapsed into a equivalent single future + resolvableFutureLevels = GetResolvableFutureLevels(futures, previousBegin, previousEnd); + if (resolvableFutureLevels != 0) + { + break; + } + } + } + + begin = previousBegin; + end = previousEnd; + return resolvableFutureLevels; + } + + vint ParsingAmbiguousParser::GetConflictReduceCount(collections::List& futures) + { + vint conflictReduceCount=-1; + for(vint i=0;iselectedItem->instructions.Count(); + vint secondIndex=second->selectedItem->instructions.Count(); + while(--firstIndex>=0 && --secondIndex>=0) + { + ParsingTable::Instruction* firstIns=&first->selectedItem->instructions[firstIndex]; + ParsingTable::Instruction* secondIns=&second->selectedItem->instructions[secondIndex]; + if(firstIns && secondIns) + { + if(firstIns->instructionType==secondIns->instructionType + && firstIns->nameParameter==secondIns->nameParameter + && firstIns->stateParameter==secondIns->stateParameter + && firstIns->value==secondIns->value + ) + { + if(firstIns->instructionType==ParsingTable::Instruction::Reduce || firstIns->instructionType==ParsingTable::Instruction::LeftRecursiveReduce) + { + count++; + } + continue; + } + } + break; + } + if(conflictReduceCount==-1 || conflictReduceCount>count) + { + conflictReduceCount=count; + } + } + if(conflictReduceCount==-1) + { + conflictReduceCount=0; + } + return conflictReduceCount; + } + + void ParsingAmbiguousParser::GetConflictReduceIndices(collections::List& futures, vint conflictReduceCount, collections::Array& conflictReduceIndices) + { + conflictReduceIndices.Resize(futures.Count()); + for(vint i=0;iselectedItem->instructions.Count(); + vint count=0; + while(count0) + { + switch(future->selectedItem->instructions[--index].instructionType) + { + case ParsingTable::Instruction::Reduce: + case ParsingTable::Instruction::LeftRecursiveReduce: + count++; + break; + default:; + } + } + conflictReduceIndices[i]=index; + } + } + vint ParsingAmbiguousParser::GetAffectedStackNodeCount(collections::List& futures, collections::Array& conflictReduceIndices) + { + vint affectedStackNodeCount=-1; + for(vint i=0;iselectedItem) + { + vint start=(future==futures[i]?conflictReduceIndices[i]:future->selectedItem->instructions.Count())-1; + for(vint j=start;j>=0;j--) + { + switch(future->selectedItem->instructions[j].instructionType) + { + case ParsingTable::Instruction::Reduce: + count++; + break; + case ParsingTable::Instruction::Shift: + count--; + break; + default:; + } + } + future=future->previous; + } + + if(affectedStackNodeCount==-1) + { + affectedStackNodeCount=count; + } + else if(affectedStackNodeCount!=count) + { + return -1; + } + } + return affectedStackNodeCount; + } + + void ParsingAmbiguousParser::BuildSingleDecisionPath(ParsingState& state, ParsingState::Future* future, vint lastAvailableInstructionCount) + { + List> path; + while(future && future->selectedToken!=-1) + { + path.Add(Pair(future->selectedItem, future->selectedRegexToken)); + future = future->previous; + } + + for (vint j = path.Count() - 1; j >= 0; j--) + { + if(j==0 && lastAvailableInstructionCount!=-1) + { + decisions.Add(state.RunTransition(path[j].key, path[j].value, 0, lastAvailableInstructionCount, false)); + } + else + { + decisions.Add(state.RunTransition(path[j].key, path[j].value)); + } + } + } + + void ParsingAmbiguousParser::BuildAmbiguousDecisions(ParsingState& state, collections::List& futures, vint begin, vint end, vint resolvableFutureLevels, collections::List>& errors) + { + List resolvingFutures; + CopyFrom( + resolvingFutures, + From(futures) + .Skip(begin) + .Take(end - begin) + ); + for (vint i = 1; i < resolvableFutureLevels; i++) + { + for(vint j=0;jprevious; + } + } + + Array conflictReduceIndices; + vint conflictReduceCount=GetConflictReduceCount(resolvingFutures); + GetConflictReduceIndices(resolvingFutures, conflictReduceCount, conflictReduceIndices); + + WString ambiguityNodeType, ambiguityRuleName; + if(resolvingFutures[0]->selectedItem->instructions.Count()==conflictReduceIndices[0]) + { + vint rootStartState=state.GetParsingRuleStartState(); + ambiguityNodeType=state.GetTable()->GetStateInfo(rootStartState).ruleAmbiguousType; + ambiguityRuleName=state.GetParsingRule(); + } + else + { + ParsingTable::Instruction& ins=resolvingFutures[0]->selectedItem->instructions[conflictReduceIndices[0]]; + ambiguityNodeType=state.GetTable()->GetStateInfo(ins.stateParameter).ruleAmbiguousType; + ambiguityRuleName=state.GetTable()->GetStateInfo(ins.stateParameter).ruleName; + } + if(ambiguityNodeType==L"") + { + const RegexToken* token=state.GetToken(state.GetCurrentToken()); + errors.Add(new ParsingError(token, L"Ambiguity happens when reducing rule \""+ambiguityRuleName+L"\" but this rule does not have an associated ambiguous node type.")); + return; + } + + vint affectedStackNodeCount=GetAffectedStackNodeCount(resolvingFutures, conflictReduceIndices); + if(affectedStackNodeCount==-1) + { + const RegexToken* token=state.GetToken(state.GetCurrentToken()); + errors.Add(new ParsingError(token, (token==0?L"Failed to pass ambiguity checking during parsing when reaching to the end of the input.":L"Failed to pass ambiguity checking during parsing."))); + return; + } + + Ptr stateGroup; + for(vint i=0;iinstructions.Count()-start, true)); + } + } + } + + ParsingState::Future* lastFuture=futures[end-1]; + ParsingState::Future** futureCleaner=&lastFuture; + for(int i=1;iprevious; + } + *futureCleaner=0; + + if(lastFuture) + { + BuildSingleDecisionPath(state, lastFuture, -1); + } + } + + void ParsingAmbiguousParser::BuildDecisions(ParsingState& state, collections::List& futures, vint begin, vint end, vint resolvableFutureLevels, collections::List>& errors) + { + if(end-begin==0) + { + const RegexToken* token=state.GetToken(state.GetCurrentToken()); + errors.Add(new ParsingError(token, (token==0?L"Error happened during parsing when reaching to the end of the input.":L"Error happened during parsing."))); + } + else if(end-begin==1) + { + BuildSingleDecisionPath(state, futures[begin], -1); + } + else + { + BuildAmbiguousDecisions(state, futures, begin, end, resolvableFutureLevels, errors); + } + } + + ParsingState::TransitionResult ParsingAmbiguousParser::ParseStep(ParsingState& state, collections::List>& errors) + { + if(decisions.Count()==consumedDecisionCount) + { + List futures; + vint resultBegin=0; + vint resultEnd=0; + + vint resolvableFutureLevels=SearchPathForOneStep(state, futures, resultBegin, resultEnd, errors); + BuildDecisions(state, futures, resultBegin, resultEnd, resolvableFutureLevels, errors); + + FOREACH(ParsingState::Future*, future, futures) + { + delete future; + } + } + + if(decisions.Count()>consumedDecisionCount) + { + ParsingState::TransitionResult result=decisions[consumedDecisionCount++]; + if(consumedDecisionCount==decisions.Count()) + { + decisions.Clear(); + consumedDecisionCount=0; + } + return result; + } + else + { + return ParsingState::TransitionResult(); + } + } + + void ParsingAmbiguousParser::BeginParse() + { + decisions.Clear(); + consumedDecisionCount=0; + ParsingGeneralParser::BeginParse(); + } + +/*********************************************************************** +ParsingAutoRecoverAmbiguousParser +***********************************************************************/ + + void ParsingAutoRecoverAmbiguousParser::OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List& futures, vint& begin, vint& end, collections::List>& errors) + { + vint insertedTokenCount = 0; + while (insertedTokenCount++ < maxInsertedTokenCount) + { + // keep all futures that consumed a token in a list + List consumedTokenFutures; + vint processBegin = begin; + vint processEnd = end; + while (processEnd > processBegin) + { + // explore all tokens + for (vint i = processBegin; i < processEnd; i++) + { + state.Explore(ParsingTable::TokenFinish, futures[i], futures); + for (vint token = ParsingTable::UserTokenStart; token < state.GetTable()->GetTokenCount(); token++) + { + state.Explore(token, futures[i], futures); + } + } + // copy all futures that consumed a token to consumedTokenFutures + if (futures.Count() > processEnd) + { + CopyFrom( + consumedTokenFutures, + From(futures) + .Skip(processEnd) + .Take(futures.Count() - processEnd), + true + ); + futures.RemoveRange(processEnd, futures.Count() - processEnd); + } + + // explore left recursive reduce and normal reduce + state.ExploreLeftRecursiveReduce(futures, processBegin, processEnd - processBegin, futures); + state.ExploreNormalReduce(futures, processBegin, processEnd - processBegin, futures); + + // if a token is consumed, then for those reduce futures, explore them until a token is consumed, and discard all failed futures + processBegin = processEnd; + processEnd = futures.Count(); + } + + if (consumedTokenFutures.Count() == 0) + { + // failed to get any future that consumed a token + goto ERROR_RECOVERY_FAILED; + } + else + { + // try to see if the target token is reached + List recoveryFutures; + FOREACH(ParsingState::Future*, future, consumedTokenFutures) + { + if (future->selectedToken == currentTokenIndex) + { + // because this is reached by error recoverying, so all futures in availableFutures should have previous futures + recoveryFutures.Add(future->previous); + } + } + + if (recoveryFutures.Count()>0) + { + // finally reached the expected currentTokenIndex + // move these previous futures to the end + // then the original parser algorith, will use these previous futures to reach the currentTokenIndex in the next step + FOREACH(ParsingState::Future*, future, recoveryFutures) + { + futures.Remove(future); + futures.Add(future); + } + begin = futures.Count() - recoveryFutures.Count(); + end = futures.Count(); + + // delete all futures in consumedTokenFutures + FOREACH(ParsingState::Future*, future, consumedTokenFutures) + { + delete future; + } + goto ERROR_RECOVERY_SUCCEEDED; + } + else + { + // put all futures that consumed a token from consumedTokenFutures back to future list + begin = futures.Count(); + CopyFrom(futures, consumedTokenFutures, true); + end = futures.Count(); + } + } + } + // if the maxInsertedTokenCount is exceeded, then we get here + ERROR_RECOVERY_FAILED: + begin = end = futures.Count(); + return; + ERROR_RECOVERY_SUCCEEDED: + return; + } + + ParsingAutoRecoverAmbiguousParser::ParsingAutoRecoverAmbiguousParser(Ptr _table, vint _maxInsertedTokenCount) + :ParsingAmbiguousParser(_table) + , maxInsertedTokenCount(_maxInsertedTokenCount == -1 ? 4 : _maxInsertedTokenCount) + { + } + + ParsingAutoRecoverAmbiguousParser::~ParsingAutoRecoverAmbiguousParser() + { + } + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + Ptr CreateStrictParser(Ptr table) + { + if(table) + { + if(table->GetAmbiguity()) + { + return new ParsingAmbiguousParser(table); + } + else + { + return new ParsingStrictParser(table); + } + } + else + { + return 0; + } + } + + Ptr CreateAutoRecoverParser(Ptr table) + { + if(table) + { + if(table->GetAmbiguity()) + { + return new ParsingAutoRecoverAmbiguousParser(table); + } + else + { + return new ParsingAutoRecoverParser(table); + } + } + else + { + return 0; + } + } + + Ptr CreateBootstrapStrictParser() + { + List> errors; + Ptr definition=CreateParserDefinition(); + Ptr table=GenerateTable(definition, false, errors); + return CreateStrictParser(table); + } + + Ptr CreateBootstrapAutoRecoverParser() + { + List> errors; + Ptr definition=CreateParserDefinition(); + Ptr table=GenerateTable(definition, false, errors); + return CreateAutoRecoverParser(table); + } + } + } +} + +/*********************************************************************** +Reflection +***********************************************************************/ + +#ifndef VCZH_DEBUG_NO_REFLECTION + +namespace vl +{ + namespace reflection + { + namespace description + { + using namespace parsing; + + PARSINGREFLECTION_TYPELIST(IMPL_VL_TYPE_INFO) + +/*********************************************************************** +Type Declaration +***********************************************************************/ + +#define _ , + + BEGIN_STRUCT_MEMBER(ParsingTextPos) + STRUCT_MEMBER(index) + STRUCT_MEMBER(row) + STRUCT_MEMBER(column) + END_STRUCT_MEMBER(ParsingTextPos) + + BEGIN_STRUCT_MEMBER(ParsingTextRange) + STRUCT_MEMBER(start) + STRUCT_MEMBER(end) + END_STRUCT_MEMBER(ParsingTextRange) + + BEGIN_CLASS_MEMBER(ParsingTreeNode) + CLASS_MEMBER_PROPERTY_FAST(CodeRange) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Parent) + CLASS_MEMBER_PROPERTY_READONLY_FAST(SubNodes) + + CLASS_MEMBER_METHOD(Clone, NO_PARAMETER) + CLASS_MEMBER_METHOD(InitializeQueryCache, NO_PARAMETER) + CLASS_MEMBER_METHOD(ClearQueryCache, NO_PARAMETER) + CLASS_MEMBER_METHOD_OVERLOAD(FindSubNode, {L"position"}, ParsingTreeNode*(ParsingTreeNode::*)(const ParsingTextPos&)) + CLASS_MEMBER_METHOD_OVERLOAD(FindSubNode, {L"range"}, ParsingTreeNode*(ParsingTreeNode::*)(const ParsingTextRange&)) + CLASS_MEMBER_METHOD_OVERLOAD(FindDeepestNode, {L"position"}, ParsingTreeNode*(ParsingTreeNode::*)(const ParsingTextPos&)) + CLASS_MEMBER_METHOD_OVERLOAD(FindDeepestNode, {L"range"}, ParsingTreeNode*(ParsingTreeNode::*)(const ParsingTextRange&)) + END_CLASS_MEMBER(ParsingTreeNode) + + BEGIN_CLASS_MEMBER(ParsingTreeToken) + CLASS_MEMBER_CONSTRUCTOR(Ptr(const WString&, vint), {L"value" _ L"tokenIndex"}) + + CLASS_MEMBER_PROPERTY_FAST(TokenIndex) + CLASS_MEMBER_PROPERTY_FAST(Value) + END_CLASS_MEMBER(ParsingTreeToken) + + BEGIN_CLASS_MEMBER(ParsingTreeObject) + CLASS_MEMBER_CONSTRUCTOR(Ptr(const WString&), {L"type"}) + + CLASS_MEMBER_PROPERTY_FAST(Type) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Members) + CLASS_MEMBER_PROPERTY_READONLY_FAST(MemberNames) + CLASS_MEMBER_PROPERTY_READONLY_FAST(CreatorRules) + + CLASS_MEMBER_METHOD(GetMember, {L"name"}) + CLASS_MEMBER_METHOD(SetMember, {L"name" _ L"node"}) + END_CLASS_MEMBER(ParsingTreeObject) + + BEGIN_CLASS_MEMBER(ParsingTreeArray) + CLASS_MEMBER_CONSTRUCTOR(Ptr(const WString&), {L"elementType"}) + + CLASS_MEMBER_PROPERTY_FAST(ElementType) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Items) + + CLASS_MEMBER_METHOD(GetItem, {L"index"}) + CLASS_MEMBER_METHOD(SetItem, {L"index" _ L"node"}) + CLASS_MEMBER_METHOD(AddItem, {L"node"}) + CLASS_MEMBER_METHOD(InsertItem, {L"index" _ L"node"}) + CLASS_MEMBER_METHOD_OVERLOAD(RemoveItem, {L"index"}, bool(ParsingTreeArray::*)(vint)) + CLASS_MEMBER_METHOD_OVERLOAD(RemoveItem, {L"node"}, bool(ParsingTreeArray::*)(ParsingTreeNode*)) + CLASS_MEMBER_METHOD(IndexOfItem, {L"node"}) + CLASS_MEMBER_METHOD(ContainsItem, {L"node"}) + CLASS_MEMBER_METHOD(Clone, NO_PARAMETER) + + CLASS_MEMBER_METHOD_RENAME(GetCount, Count, NO_PARAMETER) + CLASS_MEMBER_PROPERTY_READONLY(Count, GetCount) + END_CLASS_MEMBER(ParsingTreeArray) + + BEGIN_CLASS_MEMBER(ParsingTreeCustomBase) + CLASS_MEMBER_FIELD(codeRange) + CLASS_MEMBER_FIELD(creatorRules) + END_CLASS_MEMBER(ParsingTreeCustomBase) + + BEGIN_CLASS_MEMBER(ParsingToken) + CLASS_MEMBER_BASE(ParsingTreeCustomBase) + + CLASS_MEMBER_FIELD(tokenIndex) + CLASS_MEMBER_FIELD(value) + END_CLASS_MEMBER(ParsingToken) + + BEGIN_CLASS_MEMBER(ParsingError) + CLASS_MEMBER_CONSTRUCTOR(Ptr(), NO_PARAMETER) + CLASS_MEMBER_CONSTRUCTOR(Ptr(const WString&), {L"errorMessage"}) + CLASS_MEMBER_CONSTRUCTOR(Ptr(ParsingTreeCustomBase*, const WString&), {L"parsingTree" _ L"errorMessage"}) + + CLASS_MEMBER_FIELD(codeRange) + CLASS_MEMBER_FIELD(parsingTree) + CLASS_MEMBER_FIELD(errorMessage) + END_CLASS_MEMBER(ParsingError) +#undef _ + } + } +} + +#endif + +namespace vl +{ + namespace reflection + { + namespace description + { + +/*********************************************************************** +Type Loader +***********************************************************************/ + +#ifndef VCZH_DEBUG_NO_REFLECTION + class ParsingTypeLoader : public Object, public ITypeLoader + { + public: + void Load(ITypeManager* manager) + { + PARSINGREFLECTION_TYPELIST(ADD_TYPE_INFO) + } + + void Unload(ITypeManager* manager) + { + } + }; +#endif + + bool LoadParsingTypes() + { +#ifndef VCZH_DEBUG_NO_REFLECTION + ITypeManager* manager=GetGlobalTypeManager(); + if(manager) + { + Ptr loader=new ParsingTypeLoader; + return manager->AddTypeLoader(loader); + } +#endif + return false; + } + } + } +} + +/*********************************************************************** +.\PARSINGANALYZER.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + using namespace collections; + using namespace definitions; + + namespace analyzing + { + +/*********************************************************************** +ParsingSymbol +***********************************************************************/ + + bool ParsingSymbol::AddSubSymbol(ParsingSymbol* subSymbol) + { + if(subSymbol->GetParentSymbol()) return false; + if(subSymbolMap.Keys().IndexOf(subSymbol->GetName())!=-1) return false; + switch(type) + { + case Global: + switch(subSymbol->GetType()) + { + case EnumType: break; + case ClassType: break; + case TokenDef: break; + case RuleDef: break; + default: return false; + } + break; + case EnumType: + switch(subSymbol->GetType()) + { + case EnumItem: break; + default: return false; + } + break; + case ClassType: + switch(subSymbol->GetType()) + { + case EnumType: + case ClassType: + case ClassField: break; + default: return false; + } + break; + default: return false; + } + + subSymbol->parentSymbol=this; + subSymbolList.Add(subSymbol); + subSymbolMap.Add(subSymbol->GetName(), subSymbol); + return true; + } + + ParsingSymbol::ParsingSymbol(ParsingSymbolManager* _manager, SymbolType _type, const WString& _name, ParsingSymbol* _descriptorSymbol, const WString& _descriptorString) + :manager(_manager) + ,type(_type) + ,name(_name) + ,descriptorSymbol(_descriptorSymbol) + ,descriptorString(_descriptorString) + ,parentSymbol(0) + ,arrayTypeSymbol(0) + { + } + + ParsingSymbol::~ParsingSymbol() + { + } + + ParsingSymbolManager* ParsingSymbol::GetManager() + { + return manager; + } + + ParsingSymbol::SymbolType ParsingSymbol::GetType() + { + return type; + } + + const WString& ParsingSymbol::GetName() + { + return name; + } + + vint ParsingSymbol::GetSubSymbolCount() + { + return subSymbolList.Count(); + } + + ParsingSymbol* ParsingSymbol::GetSubSymbol(vint index) + { + if(0<=index && indexGetSubSymbolByName(name); + if(subSymbol) + { + return subSymbol; + } + else + { + scope=scope->GetDescriptorSymbol(); + } + } + } + return 0; + } + + ParsingSymbol* ParsingSymbol::SearchCommonBaseClass(ParsingSymbol* classType) + { + if(type==ParsingSymbol::ClassType && classType->GetType()==ParsingSymbol::ClassType) + { + vint aCount=0; + vint bCount=0; + ParsingSymbol* a=this; + ParsingSymbol* b=classType; + while(a || b) + { + if(a) + { + aCount++; + a=a->GetDescriptorSymbol(); + } + if(b) + { + bCount++; + b=b->GetDescriptorSymbol(); + } + } + + a=this; + b=classType; + vint min=aCountmin;i--) + { + a=a->GetDescriptorSymbol(); + } + for(vint i=bCount;i>min;i--) + { + b=b->GetDescriptorSymbol(); + } + + while(a!=b) + { + a=a->GetDescriptorSymbol(); + b=b->GetDescriptorSymbol(); + } + return a; + } + return 0; + } + +/*********************************************************************** +ParsingSymbolManager +***********************************************************************/ + + bool ParsingSymbolManager::TryAddSubSymbol(Ptr subSymbol, ParsingSymbol* parentSymbol) + { + if(parentSymbol->AddSubSymbol(subSymbol.Obj())) + { + createdSymbols.Add(subSymbol); + return true; + } + return false; + } + + ParsingSymbolManager::ParsingSymbolManager() + { + globalSymbol=new ParsingSymbol(this, ParsingSymbol::Global, L"", 0, L""); + tokenTypeSymbol=new ParsingSymbol(this, ParsingSymbol::TokenType, L"token", 0, L""); + createdSymbols.Add(globalSymbol); + createdSymbols.Add(tokenTypeSymbol); + } + + ParsingSymbolManager::~ParsingSymbolManager() + { + } + + ParsingSymbol* ParsingSymbolManager::GetGlobal() + { + return globalSymbol; + } + + ParsingSymbol* ParsingSymbolManager::GetTokenType() + { + return tokenTypeSymbol; + } + + ParsingSymbol* ParsingSymbolManager::GetArrayType(ParsingSymbol* elementType) + { + if(elementType->IsType()) + { + if(!elementType->arrayTypeSymbol) + { + elementType->arrayTypeSymbol=new ParsingSymbol(this, ParsingSymbol::ArrayType, L"", elementType, L""); + createdSymbols.Add(elementType->arrayTypeSymbol); + } + return elementType->arrayTypeSymbol; + } + else + { + return 0; + } + } + + ParsingSymbol* ParsingSymbolManager::AddClass(definitions::ParsingDefinitionClassDefinition* classDef, ParsingSymbol* baseType, ParsingSymbol* parentType) + { + if((!baseType || baseType->GetType()==ParsingSymbol::ClassType) && (!parentType || parentType->IsType())) + { + ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::ClassType, classDef->name, baseType, L""); + if(TryAddSubSymbol(symbol, parentType?parentType:globalSymbol)) + { + symbolClassDefinitionCache.Add(symbol, classDef); + classDefinitionSymbolCache.Add(classDef, symbol); + return symbol; + } + } + return 0; + } + + ParsingSymbol* ParsingSymbolManager::AddField(const WString& name, ParsingSymbol* classType, ParsingSymbol* fieldType) + { + if(classType && classType->GetType()==ParsingSymbol::ClassType && fieldType && fieldType->IsType()) + { + ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::ClassField, name, fieldType, L""); + if(TryAddSubSymbol(symbol, classType)) + { + return symbol; + } + } + return 0; + } + + ParsingSymbol* ParsingSymbolManager::AddEnum(const WString& name, ParsingSymbol* parentType) + { + if(!parentType || parentType->GetType()==ParsingSymbol::ClassType) + { + ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::EnumType, name, 0, L""); + if(TryAddSubSymbol(symbol, parentType?parentType:globalSymbol)) + { + return symbol; + } + } + return 0; + } + + ParsingSymbol* ParsingSymbolManager::AddEnumItem(const WString& name, ParsingSymbol* enumType) + { + if(enumType && enumType->GetType()==ParsingSymbol::EnumType) + { + ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::EnumItem, name, enumType, L""); + if(TryAddSubSymbol(symbol, enumType)) + { + return symbol; + } + } + return 0; + } + + ParsingSymbol* ParsingSymbolManager::AddTokenDefinition(const WString& name, const WString& regex) + { + ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::TokenDef, name, tokenTypeSymbol, regex); + if(TryAddSubSymbol(symbol, globalSymbol)) + { + return symbol; + } + return 0; + } + + ParsingSymbol* ParsingSymbolManager::AddRuleDefinition(const WString& name, ParsingSymbol* ruleType) + { + if(ruleType && ruleType->IsType()) + { + ParsingSymbol* symbol=new ParsingSymbol(this, ParsingSymbol::RuleDef, name, ruleType, L""); + if(TryAddSubSymbol(symbol, globalSymbol)) + { + return symbol; + } + } + return 0; + } + + ParsingSymbolManager::ClassDefinition* ParsingSymbolManager::CacheGetClassDefinition(ParsingSymbol* type) + { + vint index=symbolClassDefinitionCache.Keys().IndexOf(type); + return index==-1?0:symbolClassDefinitionCache.Values().Get(index); + } + + ParsingSymbol* ParsingSymbolManager::CacheGetClassType(ClassDefinition* type) + { + vint index=classDefinitionSymbolCache.Keys().IndexOf(type); + return index==-1?0:classDefinitionSymbolCache.Values().Get(index); + } + + ParsingSymbol* ParsingSymbolManager::CacheGetType(definitions::ParsingDefinitionType* type, ParsingSymbol* scope) + { + DefinitionTypeScopePair key(type, scope); + vint index=definitionTypeSymbolCache.Keys().IndexOf(key); + return index==-1?0:definitionTypeSymbolCache.Values().Get(index); + } + + bool ParsingSymbolManager::CacheSetType(definitions::ParsingDefinitionType* type, ParsingSymbol* scope, ParsingSymbol* symbol) + { + DefinitionTypeScopePair key(type, scope); + vint index=definitionTypeSymbolCache.Keys().IndexOf(key); + if(index==-1) + { + definitionTypeSymbolCache.Add(key, symbol); + return true; + } + else + { + return false; + } + } + + ParsingSymbol* ParsingSymbolManager::CacheGetSymbol(definitions::ParsingDefinitionGrammar* grammar) + { + vint index=definitionGrammarSymbolCache.Keys().IndexOf(grammar); + return index==-1?0:definitionGrammarSymbolCache.Values().Get(index); + } + + bool ParsingSymbolManager::CacheSetSymbol(definitions::ParsingDefinitionGrammar* grammar, ParsingSymbol* symbol) + { + vint index=definitionGrammarSymbolCache.Keys().IndexOf(grammar); + if(index==-1) + { + definitionGrammarSymbolCache.Add(grammar, symbol); + return true; + } + else + { + return false; + } + } + + ParsingSymbol* ParsingSymbolManager::CacheGetType(definitions::ParsingDefinitionGrammar* grammar) + { + vint index=definitionGrammarTypeCache.Keys().IndexOf(grammar); + return index==-1?0:definitionGrammarTypeCache.Values().Get(index); + } + + bool ParsingSymbolManager::CacheSetType(definitions::ParsingDefinitionGrammar* grammar, ParsingSymbol* type) + { + vint index=definitionGrammarTypeCache.Keys().IndexOf(grammar); + if(index==-1) + { + definitionGrammarTypeCache.Add(grammar, type); + return true; + } + else + { + return false; + } + } + +/*********************************************************************** +FindType +***********************************************************************/ + + WString GetTypeFullName(ParsingSymbol* type) + { + if(type->GetType()==ParsingSymbol::ArrayType) + { + return GetTypeFullName(type->GetDescriptorSymbol())+L"[]"; + } + else + { + WString name=type->GetName(); + type=type->GetParentSymbol(); + while(type && type!=type->GetManager()->GetGlobal()) + { + name=type->GetName()+L"."+name; + type=type->GetParentSymbol(); + } + return name; + } + } + +/*********************************************************************** +FindType +***********************************************************************/ + + class FindTypeVisitor : public Object, public ParsingDefinitionType::IVisitor + { + public: + ParsingSymbolManager* manager; + ParsingSymbol* scope; + List>& errors; + ParsingSymbol* result; + + FindTypeVisitor(ParsingSymbolManager* _manager, ParsingSymbol* _scope, List>& _errors) + :manager(_manager) + ,scope(_scope) + ,errors(_errors) + ,result(0) + { + } + + void Visit(ParsingDefinitionPrimitiveType* node)override + { + ParsingSymbol* currentScope=scope; + while(currentScope) + { + ParsingSymbol* type=currentScope->GetSubSymbolByName(node->name); + if(type) + { + if(type->IsType()) + { + result=type; + } + else + { + errors.Add(new ParsingError(node, L"\""+node->name+L"\" in current scope is not a type.")); + } + return; + } + currentScope=currentScope->GetParentSymbol(); + } + errors.Add(new ParsingError(node, L"Cannot not find \""+node->name+L"\" in current scope.")); + } + + void Visit(ParsingDefinitionTokenType* node)override + { + result=manager->GetTokenType(); + } + + void Visit(ParsingDefinitionSubType* node)override + { + ParsingSymbol* type=FindType(node->parentType.Obj(), manager, scope, errors); + if(type) + { + ParsingSymbol* subType=type->SearchClassSubSymbol(node->subTypeName); + if(!subType) + { + errors.Add(new ParsingError(node, L"\""+GetTypeFullName(type)+L"\" does not has a sub type called \""+node->subTypeName+L"\".")); + } + else if(subType->IsType()) + { + result=subType; + } + else + { + errors.Add(new ParsingError(node, L"\""+GetTypeFullName(type)+L"\" contains a sub definition called \""+node->subTypeName+L"\" but this is not a type.")); + } + } + } + + void Visit(ParsingDefinitionArrayType* node)override + { + ParsingSymbol* type=FindType(node->elementType.Obj(), manager, scope, errors); + if(type) + { + result=manager->GetArrayType(type); + } + } + }; + + ParsingSymbol* FindType(definitions::ParsingDefinitionType* type, ParsingSymbolManager* manager, ParsingSymbol* scope, collections::List>& errors) + { + ParsingSymbol* result=manager->CacheGetType(type, scope); + if(!result) + { + FindTypeVisitor visitor(manager, (scope?scope:manager->GetGlobal()), errors); + type->Accept(&visitor); + result=visitor.result; + manager->CacheSetType(type, scope, result); + } + return result; + } + +/*********************************************************************** +PrepareSymbols +***********************************************************************/ + + class PrepareSymbolsTypeDefinitionVisitor : public Object, public ParsingDefinitionTypeDefinition::IVisitor + { + public: + ParsingSymbolManager* manager; + ParsingSymbol* scope; + List>& errors; + + PrepareSymbolsTypeDefinitionVisitor(ParsingSymbolManager* _manager, ParsingSymbol* _scope, List>& _errors) + :manager(_manager) + ,scope(_scope) + ,errors(_errors) + { + } + + bool EnsureNameNotExists(ParsingDefinitionTypeDefinition* node, const WString& subjectName) + { + if(scope->SearchClassSubSymbol(node->name)) + { + errors.Add(new ParsingError(node, L"Cannot redefine \""+node->name+L"\" to be "+subjectName+L".")); + return false; + } + else + { + return true; + } + } + + void Visit(ParsingDefinitionClassMemberDefinition* node)override + { + if(EnsureNameNotExists(node, L"a class field")) + { + ParsingSymbol* fieldType=FindType(node->type.Obj(), manager, scope, errors); + if(fieldType) + { + ParsingSymbol* field=manager->AddField(node->name, scope, fieldType); + if(!field) + { + errors.Add(new ParsingError(node, L"A class field cannot be defined here.")); + } + } + } + } + + void Visit(ParsingDefinitionClassDefinition* node)override + { + if(EnsureNameNotExists(node, L"a class type")) + { + ParsingSymbol* baseType=0; + if(node->parentType) + { + baseType=FindType(node->parentType.Obj(), manager, scope, errors); + } + ParsingSymbol* classType=manager->AddClass(node, baseType, (scope->GetType()==ParsingSymbol::Global?0:scope)); + if(classType) + { + PrepareSymbolsTypeDefinitionVisitor visitor(manager, classType, errors); + FOREACH(Ptr, subType, node->subTypes) + { + subType->Accept(&visitor); + } + FOREACH(Ptr, member, node->members) + { + member->Accept(&visitor); + } + } + else + { + errors.Add(new ParsingError(node, L"A class type cannot be defined here.")); + } + } + } + + void Visit(ParsingDefinitionEnumMemberDefinition* node)override + { + if(EnsureNameNotExists(node, L"an enum item")) + { + ParsingSymbol* enumItem=manager->AddEnumItem(node->name, scope); + if(!enumItem) + { + errors.Add(new ParsingError(node, L"An enum item cannot be defined here.")); + } + } + } + + void Visit(ParsingDefinitionEnumDefinition* node)override + { + if(EnsureNameNotExists(node, L"an enum type")) + { + ParsingSymbol* enumType=manager->AddEnum(node->name, (scope->GetType()==ParsingSymbol::Global?0:scope)); + if(enumType) + { + PrepareSymbolsTypeDefinitionVisitor visitor(manager, enumType, errors); + FOREACH(Ptr, member, node->members) + { + member->Accept(&visitor); + } + } + else + { + errors.Add(new ParsingError(node, L"An enum type cannot be defined here.")); + } + } + } + }; + + void PrepareSymbols(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors) + { + { + PrepareSymbolsTypeDefinitionVisitor visitor(manager, manager->GetGlobal(), errors); + FOREACH(Ptr, typeDefinition, definition->types) + { + typeDefinition->Accept(&visitor); + } + } + + FOREACH(Ptr, token, definition->tokens) + { + if(manager->GetGlobal()->GetSubSymbolByName(token->name)) + { + errors.Add(new ParsingError(token.Obj(), L"Cannot redefine \""+token->name+L"\" to be a token definition.")); + } + else + { + manager->AddTokenDefinition(token->name, token->regex); + try + { + regex_internal::ParseRegexExpression(token->regex); + } + catch(const ParsingException& ex) + { + errors.Add(new ParsingError(token.Obj(), L"Wrong token definition for \""+token->name+L"\": "+ex.Message())); + } + } + } + + FOREACH(Ptr, rule, definition->rules) + { + if(manager->GetGlobal()->GetSubSymbolByName(rule->name)) + { + errors.Add(new ParsingError(rule.Obj(), L"Cannot redefine \""+rule->name+L"\" to be a rule definition.")); + } + else + { + ParsingSymbol* type=FindType(rule->type.Obj(), manager, 0, errors); + if(type) + { + if(type->GetType()!=ParsingSymbol::ClassType) + { + errors.Add(new ParsingError(rule.Obj(), L"\""+GetTypeFullName(type)+L"\" cannot be a type of a rule because this is not a class type.")); + } + manager->AddRuleDefinition(rule->name, type); + } + } + } + } + +/*********************************************************************** +ValidateRuleStructure +***********************************************************************/ + + class ValidateRuleStructureVisitor : public Object, public ParsingDefinitionGrammar::IVisitor + { + public: + Ptr definition; + ParsingSymbolManager* manager; + ParsingDefinitionRuleDefinition* rule; + List>& errors; + vint loopCount; + + ValidateRuleStructureVisitor(Ptr _definition, ParsingSymbolManager* _manager, ParsingDefinitionRuleDefinition* _rule, List>& _errors) + :definition(_definition) + ,manager(_manager) + ,errors(_errors) + ,rule(_rule) + ,loopCount(0) + { + } + + void CheckCreationType(ParsingDefinitionGrammar* node, ParsingSymbol* nodeType) + { + if(nodeType->GetType()==ParsingSymbol::ClassType) + { + ParsingSymbol* ruleType=manager->GetGlobal()->GetSubSymbolByName(rule->name)->GetDescriptorSymbol(); + ParsingSymbol* currentType=nodeType; + while(currentType && currentType!=ruleType) + { + currentType=currentType->GetDescriptorSymbol(); + } + if(!currentType) + { + errors.Add(new ParsingError(node, L"Cannot create type \""+GetTypeFullName(nodeType)+L"\" in a rule of type \""+GetTypeFullName(ruleType)+L"\" because there are no implicit conversions from the created type to the rule type.")); + } + } + else + { + errors.Add(new ParsingError(node, L"\""+GetTypeFullName(nodeType)+L"\" cannot be created because this is not a class type.")); + } + } + + void Visit(ParsingDefinitionPrimitiveGrammar* node)override + { + ParsingSymbol* symbol=manager->GetGlobal()->GetSubSymbolByName(node->name); + if(!symbol) + { + errors.Add(new ParsingError(node, L"Cannot find a token or a rule with name \""+node->name+L"\".")); + } + else switch(symbol->GetType()) + { + case ParsingSymbol::TokenDef: + { + bool discard=false; + FOREACH(Ptr, token, definition->tokens) + { + if(token->name==symbol->GetName()) + { + discard=token->discard; + break; + } + } + if(discard) + { + errors.Add(new ParsingError(node, L"Cannot use discard token \""+node->name+L"\" as input.")); + break; + } + } + case ParsingSymbol::RuleDef: + { + ParsingSymbol* symbolType=symbol->GetDescriptorSymbol(); + manager->CacheSetSymbol(node, symbol); + manager->CacheSetType(node, symbolType); + } + break; + default: + errors.Add(new ParsingError(node, L"\""+node->name+L"\" is not a token definition or rule definition.")); + } + } + + void Visit(ParsingDefinitionTextGrammar* node)override + { + WString regex=regex_internal::EscapeTextForRegex(node->text); + for(vint i=0;iGetGlobal()->GetSubSymbolCount();i++) + { + ParsingSymbol* symbol=manager->GetGlobal()->GetSubSymbol(i); + if(symbol->GetType()==ParsingSymbol::TokenDef) + { + WString normalizedRegex=regex_internal::NormalizeEscapedTextForRegex(symbol->GetDescriptorString()); + if(normalizedRegex==regex) + { + manager->CacheSetSymbol(node, symbol); + manager->CacheSetType(node, manager->GetTokenType()); + return; + } + } + } + errors.Add(new ParsingError(node, L"Cannot find a token whose definition is exactly \""+regex+L"\".")); + } + + void Visit(ParsingDefinitionSequenceGrammar* node)override + { + node->first->Accept(this); + node->second->Accept(this); + } + + void Visit(ParsingDefinitionAlternativeGrammar* node)override + { + node->first->Accept(this); + node->second->Accept(this); + } + + void Visit(ParsingDefinitionLoopGrammar* node)override + { + loopCount++; + node->grammar->Accept(this); + loopCount--; + } + + void Visit(ParsingDefinitionOptionalGrammar* node)override + { + node->grammar->Accept(this); + } + + void Visit(ParsingDefinitionCreateGrammar* node)override + { + if(loopCount>0) + { + errors.Add(new ParsingError(node, L"Parsing tree node creation (the \"as\" operator) is not allowed inside loops.")); + } + if(ParsingSymbol* nodeType=FindType(node->type.Obj(), manager, 0, errors)) + { + CheckCreationType(node, nodeType); + } + node->grammar->Accept(this); + } + + void Visit(ParsingDefinitionAssignGrammar* node)override + { + if(!node->grammar.Cast() && !node->grammar.Cast()) + { + errors.Add(new ParsingError(node, L"Only parsing tree node returned from a rule or a token can be assigned to a class field.")); + } + node->grammar->Accept(this); + } + + void Visit(ParsingDefinitionUseGrammar* node)override + { + if(loopCount>0) + { + errors.Add(new ParsingError(node, L"Parsing tree node reusing (the \"!\" operator) is not allowed inside loops.")); + } + if(!node->grammar.Cast()) + { + errors.Add(new ParsingError(node, L"Only parsing tree node returned from a rule can be reused.")); + } + else if(ParsingSymbol* symbol=manager->CacheGetSymbol(node->grammar.Obj())) + { + if(symbol->GetType()!=ParsingSymbol::RuleDef) + { + errors.Add(new ParsingError(node, L"Only parsing tree node returned from a rule can be reused.")); + } + } + if(ParsingSymbol* nodeType=manager->CacheGetType(node->grammar.Obj())) + { + CheckCreationType(node, nodeType); + } + node->grammar->Accept(this); + } + + void Visit(ParsingDefinitionSetterGrammar* node)override + { + node->grammar->Accept(this); + } + }; + + void ValidateRuleStructure(Ptr definition, Ptr rule, ParsingSymbolManager* manager, collections::List>& errors) + { + FOREACH(Ptr, grammar, rule->grammars) + { + ValidateRuleStructureVisitor visitor(definition, manager, rule.Obj(), errors); + grammar->Accept(&visitor); + } + } + +/*********************************************************************** +ResolveRuleSymbols +***********************************************************************/ + + struct GrammarPathFragment + { + // primitive, text -> transition + // loop, optional, create, use assign, setter -> epsilon + GrammarPathFragment* previousFragment; + ParsingDefinitionGrammar* grammar; + bool epsilon; + ParsingSymbol* createdType; + + GrammarPathFragment() + :previousFragment(0) + ,grammar(0) + ,epsilon(false) + ,createdType(0) + { + } + }; + + struct GrammarPath + { + List> fragments; + ParsingSymbol* pathType; + + GrammarPath() + :pathType(0) + { + } + + WString ToString() + { + WString result; + FOREACH(Ptr, fragment, fragments) + { + if(!fragment->epsilon) + { + if(result!=L"") result+=L" "; + result+=GrammarToString(fragment->grammar); + } + } + return result; + } + }; + + struct GrammarPathContainer + { + List> paths; + }; + + class EnumerateGrammarPathVisitor : public Object, public ParsingDefinitionGrammar::IVisitor + { + public: + ParsingSymbolManager* manager; + ParsingDefinitionRuleDefinition* rule; + + List> createdFragments; + List currentFragmentEnds; + + EnumerateGrammarPathVisitor(ParsingSymbolManager* _manager, ParsingDefinitionRuleDefinition* _rule) + :manager(_manager) + ,rule(_rule) + { + } + + EnumerateGrammarPathVisitor(const EnumerateGrammarPathVisitor& visitor) + :manager(visitor.manager) + ,rule(visitor.rule) + { + CopyFrom(currentFragmentEnds, visitor.currentFragmentEnds); + } + + void Join(const EnumerateGrammarPathVisitor& visitor) + { + CopyFrom(createdFragments, visitor.createdFragments, true); + CopyFrom(currentFragmentEnds, visitor.currentFragmentEnds, true); + } + + void AddFragment(ParsingDefinitionGrammar* node, bool epsilon, ParsingSymbol* createdType) + { + if(currentFragmentEnds.Count()==0) + { + GrammarPathFragment* fragment=new GrammarPathFragment; + fragment->grammar=node; + fragment->epsilon=epsilon; + fragment->createdType=createdType; + createdFragments.Add(fragment); + currentFragmentEnds.Add(fragment); + } + else for(vint i=0;igrammar=node; + fragment->epsilon=epsilon; + fragment->createdType=createdType; + createdFragments.Add(fragment); + fragment->previousFragment=currentFragmentEnds[i]; + currentFragmentEnds[i]=fragment; + } + } + + void BuildPath(List>& paths) + { + FOREACH(GrammarPathFragment*, fragment, currentFragmentEnds) + { + Ptr path=new GrammarPath; + paths.Add(path); + + GrammarPathFragment* current=fragment; + while(current) + { + path->fragments.Insert(0, createdFragments[createdFragments.IndexOf(current)]); + current=current->previousFragment; + } + } + } + + void Visit(ParsingDefinitionPrimitiveGrammar* node)override + { + AddFragment(node, false, 0); + } + + void Visit(ParsingDefinitionTextGrammar* node)override + { + AddFragment(node, false, 0); + } + + void Visit(ParsingDefinitionSequenceGrammar* node)override + { + node->first->Accept(this); + node->second->Accept(this); + } + + void Visit(ParsingDefinitionAlternativeGrammar* node)override + { + EnumerateGrammarPathVisitor visitor(*this); + node->second->Accept(&visitor); + node->first->Accept(this); + Join(visitor); + } + + void Visit(ParsingDefinitionLoopGrammar* node)override + { + EnumerateGrammarPathVisitor visitor(*this); + node->grammar->Accept(&visitor); + AddFragment(node, true, 0); + Join(visitor); + } + + void Visit(ParsingDefinitionOptionalGrammar* node)override + { + EnumerateGrammarPathVisitor visitor(*this); + node->grammar->Accept(&visitor); + AddFragment(node, true, 0); + Join(visitor); + } + + void Visit(ParsingDefinitionCreateGrammar* node)override + { + node->grammar->Accept(this); + AddFragment(node, true, manager->CacheGetType(node->type.Obj(), 0)); + } + + void Visit(ParsingDefinitionAssignGrammar* node)override + { + node->grammar->Accept(this); + AddFragment(node, true, 0); + } + + void Visit(ParsingDefinitionUseGrammar* node)override + { + node->grammar->Accept(this); + AddFragment(node, true, manager->CacheGetSymbol(node->grammar.Obj())->GetDescriptorSymbol()); + } + + void Visit(ParsingDefinitionSetterGrammar* node)override + { + node->grammar->Accept(this); + AddFragment(node, true, 0); + } + }; + + class ResolveAssignerGrammarVisitor : public Object, public ParsingDefinitionGrammar::IVisitor + { + public: + typedef Dictionary> GrammarPathMap; + ParsingSymbolManager* manager; + List>& errors; + GrammarPathMap& grammarPaths; + + ResolveAssignerGrammarVisitor(ParsingSymbolManager* _manager, List>& _errors, GrammarPathMap& _grammarPaths) + :manager(_manager) + ,errors(_errors) + ,grammarPaths(_grammarPaths) + { + } + + ParsingSymbol* GetFieldFromCombined(ParsingDefinitionGrammar* node, const WString& fieldName) + { + Ptr paths=grammarPaths[node]; + ParsingSymbol* pathType=paths->paths[0]->pathType; + for(vint i=1;ipaths.Count();i++) + { + pathType=pathType->SearchCommonBaseClass(paths->paths[i]->pathType); + if(!pathType) break; + } + + WString pathNames; + WString typeNames; + for(int i=0;ipaths.Count();i++) + { + if(i>0) + { + pathNames+=L", "; + typeNames+=L", "; + } + pathNames+=L"{"+paths->paths[i]->ToString()+L"}"; + typeNames+=L"\""+GetTypeFullName(paths->paths[i]->pathType)+L"\""; + } + + if(pathType) + { + ParsingSymbol* field=pathType->SearchClassSubSymbol(fieldName); + if(!field) + { + errors.Add(new ParsingError(node, L"There are multiple grammar paths with different created types get through this operation for class field \""+fieldName+L"\", but the common base type \""+GetTypeFullName(pathType)+L"\" of these types doesn't contains the required class field. Types: "+typeNames+L"; Paths: "+pathNames+L".")); + } + else if(field->GetType()!=ParsingSymbol::ClassField) + { + errors.Add(new ParsingError(node, L"There are multiple grammar paths with different created types get through this operation for class field \""+fieldName+L"\", and the common base type \""+GetTypeFullName(pathType)+L"\" of these types contains a symbol called \""+fieldName+L"\", but this is not a class field. Types: "+typeNames+L"; Paths: "+pathNames+L".")); + } + else + { + return field; + } + } + else + { + errors.Add(new ParsingError(node, L"There are multiple grammar paths with different created types get through this operation for class field \""+fieldName+L"\", but these types don't have a common base type. Types: "+typeNames+L"; Paths: "+pathNames+L".")); + } + return 0; + } + + void Visit(ParsingDefinitionPrimitiveGrammar* node)override + { + } + + void Visit(ParsingDefinitionTextGrammar* node)override + { + } + + void Visit(ParsingDefinitionSequenceGrammar* node)override + { + } + + void Visit(ParsingDefinitionAlternativeGrammar* node)override + { + } + + void Visit(ParsingDefinitionLoopGrammar* node)override + { + } + + void Visit(ParsingDefinitionOptionalGrammar* node)override + { + } + + void Visit(ParsingDefinitionCreateGrammar* node)override + { + } + + void Visit(ParsingDefinitionAssignGrammar* node)override + { + if(ParsingSymbol* field=GetFieldFromCombined(node, node->memberName)) + { + manager->CacheSetSymbol(node, field); + manager->CacheSetType(node, field->GetDescriptorSymbol()); + + ParsingSymbol* fieldType=field->GetDescriptorSymbol(); + ParsingSymbol* valueType=manager->CacheGetType(node->grammar.Obj()); + ParsingSymbol* targetFieldType=fieldType; + if(targetFieldType->GetType()==ParsingSymbol::ArrayType) + { + targetFieldType=targetFieldType->GetDescriptorSymbol(); + } + if(targetFieldType!=valueType && valueType->SearchCommonBaseClass(targetFieldType)!=targetFieldType) + { + errors.Add(new ParsingError(node, L"Cannot assign value from grammar {"+GrammarToString(node->grammar.Obj())+L"} of type \""+GetTypeFullName(valueType)+L"\" to the field \""+node->memberName+L"\" of type \""+GetTypeFullName(fieldType)+L"\".")); + } + } + } + + void Visit(ParsingDefinitionUseGrammar* node)override + { + } + + void Visit(ParsingDefinitionSetterGrammar* node)override + { + if(ParsingSymbol* field=GetFieldFromCombined(node, node->memberName)) + { + manager->CacheSetSymbol(node, field); + manager->CacheSetType(node, field->GetDescriptorSymbol()); + + if(field->GetDescriptorSymbol()->GetType()!=ParsingSymbol::EnumType) + { + errors.Add(new ParsingError(node, L"Setter operation (the \"with\" operator) can only specify the value of a class field of an enum type. But \""+GetTypeFullName(field->GetDescriptorSymbol())+L"\" is not a enum type.")); + } + else + { + ParsingSymbol* enumType=field->GetDescriptorSymbol(); + ParsingSymbol* enumItem=enumType->GetSubSymbolByName(node->value); + if(!enumItem) + { + errors.Add(new ParsingError(node, L"Type \""+GetTypeFullName(enumType)+L"\" from field \""+node->memberName+L"\" does not have an enum item called \""+node->value+L"\".")); + } + else if(enumItem->GetType()!=ParsingSymbol::EnumItem) + { + errors.Add(new ParsingError(node, L"Type \""+GetTypeFullName(enumType)+L"\" from field \""+node->memberName+L"\" has a symbol called \""+node->value+L"\", but this is not an enum item.")); + } + } + } + } + }; + + void ResolveRuleSymbols(Ptr rule, ParsingSymbolManager* manager, collections::List>& errors) + { + ParsingSymbol* ruleType=manager->GetGlobal()->GetSubSymbolByName(rule->name)->GetDescriptorSymbol(); + + FOREACH(Ptr, grammar, rule->grammars) + { + List> paths; + { + EnumerateGrammarPathVisitor visitor(manager, rule.Obj()); + grammar->Accept(&visitor); + visitor.BuildPath(paths); + } + + FOREACH(Ptr, path, paths) + { + path->pathType=ruleType; + vint createdTypeCount=0; + vint transitionCount=0; + FOREACH(Ptr, fragment, path->fragments) + { + if(fragment->createdType) + { + createdTypeCount++; + path->pathType=fragment->createdType; + } + if(!fragment->epsilon) + { + transitionCount++; + } + } + + if(createdTypeCount==0) + { + errors.Add(new ParsingError(grammar.Obj(), L"No parsing tree node is created if the following path is chosen: \""+path->ToString()+L"\" in rule \""+rule->name+L"\".")); + } + else if(createdTypeCount>1) + { + errors.Add(new ParsingError(grammar.Obj(), L"Multiple parsing tree nodes are created if the following path is chosen: \""+path->ToString()+L"\" in rule \""+rule->name+L"\".")); + } + if(transitionCount==0) + { + errors.Add(new ParsingError(grammar.Obj(), L"Rule \""+rule->name+L"\" is not allowed to infer to an empty token sequence.")); + } + } + + ResolveAssignerGrammarVisitor::GrammarPathMap grammarPathMap; + FOREACH(Ptr, path, paths) + { + FOREACH(Ptr, fragment, path->fragments) + { + ParsingDefinitionGrammar* grammar=fragment->grammar; + Ptr container; + vint index=grammarPathMap.Keys().IndexOf(grammar); + if(index==-1) + { + container=new GrammarPathContainer; + grammarPathMap.Add(grammar, container); + } + else + { + container=grammarPathMap.Values().Get(index); + } + container->paths.Add(path); + } + } + + ResolveAssignerGrammarVisitor visitor(manager, errors, grammarPathMap); + FOREACH(ParsingDefinitionGrammar*, grammar, grammarPathMap.Keys()) + { + grammar->Accept(&visitor); + } + } + } + +/*********************************************************************** +ResolveSymbols +***********************************************************************/ + + void ResolveTypeSymbols(Ptr type, ParsingSymbolManager* manager, ParsingSymbol* scope, collections::List>& errors) + { + if(Ptr node=type.Cast()) + { + if(node->ambiguousType) + { + ParsingSymbol* ambigiousType=FindType(node->ambiguousType.Obj(), manager, scope, errors); + WString ambiguousTypeText=TypeToString(node->ambiguousType.Obj()); + if(!ambigiousType) + { + errors.Add(new ParsingError(node.Obj(), L"Ambiguous type \""+ambiguousTypeText+L"\" for type \""+node->name+L"\" does not exist.")); + } + else if(ambigiousType->GetType()!=ParsingSymbol::ClassType) + { + errors.Add(new ParsingError(node.Obj(), L"Ambiguous type \""+ambiguousTypeText+L"\" for type \""+node->name+L"\" is not a type.")); + } + else if(ambigiousType->GetDescriptorSymbol()!=manager->GetGlobal()->GetSubSymbolByName(node->name)) + { + errors.Add(new ParsingError(node.Obj(), L"Ambiguous type \""+ambiguousTypeText+L"\" for type \""+node->name+L"\" does not inherit from \""+node->name+L"\".")); + } + else + { + bool correct=false; + if(ambigiousType->GetSubSymbolCount()==1) + { + ParsingSymbol* field=ambigiousType->GetSubSymbol(0); + if(field->GetName()==L"items" && field->GetType()==ParsingSymbol::ClassField) + { + ParsingSymbol* fieldType=field->GetDescriptorSymbol(); + if(fieldType->GetType()==ParsingSymbol::ArrayType && fieldType->GetDescriptorSymbol()==ambigiousType->GetDescriptorSymbol()) + { + correct=true; + } + } + } + if(!correct) + { + errors.Add(new ParsingError(node.Obj(), L"Ambiguous type \""+ambiguousTypeText+L"\" for type \""+node->name+L"\" can only contains one field called \"item\" which should be an array of \""+node->name+L"\".")); + } + } + } + + ParsingSymbol* classType=manager->CacheGetClassType(node.Obj()); + if(classType) + { + FOREACH(Ptr, subType, node->subTypes) + { + ResolveTypeSymbols(subType, manager, classType, errors); + } + } + } + } + + void ResolveSymbols(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors) + { + FOREACH(Ptr, type, definition->types) + { + ResolveTypeSymbols(type, manager, manager->GetGlobal(), errors); + } + + FOREACH(Ptr, rule, definition->rules) + { + vint errorCount=errors.Count(); + ValidateRuleStructure(definition, rule, manager, errors); + if(errors.Count()==errorCount) + { + ResolveRuleSymbols(rule, manager, errors); + } + } + } + +/*********************************************************************** +ValidateDefinition +***********************************************************************/ + + void ValidateDefinition(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors) + { + PrepareSymbols(definition, manager, errors); + if(errors.Count()>0) return; + ResolveSymbols(definition, manager, errors); + } + } + } +} + +/*********************************************************************** +.\PARSINGAUTOMATON.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + using namespace collections; + using namespace definitions; + + namespace analyzing + { + +/*********************************************************************** +Action +***********************************************************************/ + + Action::Action() + :actionType(Create) + ,actionSource(0) + ,actionTarget(0) + ,creatorRule(0) + ,shiftReduceSource(0) + ,shiftReduceTarget(0) + { + } + + Action::~Action() + { + } + +/*********************************************************************** +Transition +***********************************************************************/ + + Transition::Transition() + :source(0) + ,target(0) + ,transitionType(Epsilon) + ,stackOperationType(None) + ,transitionSymbol(0) + { + } + + Transition::~Transition() + { + } + + bool Transition::IsEquivalent(Transition* t1, Transition* t2, bool careSourceAndTarget) + { + if(careSourceAndTarget) + { + if(t1->source!=t2->source || t1->target!=t2->target) + { + return false; + } + } + if( t1->actions.Count()!=t2->actions.Count() || + t1->transitionType!=t2->transitionType || + t1->transitionSymbol!=t2->transitionSymbol) + { + return false; + } + for(vint j=0;jactions.Count();j++) + { + Ptr a1=t1->actions[j]; + Ptr a2=t2->actions[j]; + if( a1->actionType!=a2->actionType || + a1->actionSource!=a2->actionSource || + a1->actionTarget!=a2->actionTarget || + a1->shiftReduceSource!=a2->shiftReduceSource ) + { + return false; + } + } + return true; + } + +/*********************************************************************** +State +***********************************************************************/ + + State::State() + :ownerRule(0) + ,ownerRuleSymbol(0) + ,grammarNode(0) + ,stateNode(0) + ,statePosition(BeforeNode) + ,endState(false) + { + } + + State::~State() + { + } + +/*********************************************************************** +RuleInfo +***********************************************************************/ + + RuleInfo::RuleInfo() + :rootRuleStartState(0) + ,rootRuleEndState(0) + ,startState(0) + ,stateNameCount(0) + { + } + + RuleInfo::~RuleInfo() + { + } + +/*********************************************************************** +Automaton +***********************************************************************/ + + Automaton::Automaton(ParsingSymbolManager* _symbolManager) + :symbolManager(_symbolManager) + { + } + + Automaton::~Automaton() + { + } + + void Automaton::AddRuleInfo(definitions::ParsingDefinitionRuleDefinition* rule, Ptr ruleInfo) + { + orderedRulesDefs.Add(rule); + ruleInfos.Add(ruleInfo); + ruleDefToInfoMap.Add(rule, ruleInfo); + } + + State* Automaton::RuleStartState(definitions::ParsingDefinitionRuleDefinition* ownerRule) + { + State* state=new State; + states.Add(state); + + state->ownerRule=ownerRule; + state->ownerRuleSymbol=symbolManager->GetGlobal()->GetSubSymbolByName(ownerRule->name); + state->stateName=ownerRule->name+L".Start"; + state->stateExpression=L"@ <"+ownerRule->name+L">"; + return state; + } + + State* Automaton::RootRuleStartState(definitions::ParsingDefinitionRuleDefinition* ownerRule) + { + State* state=new State; + states.Add(state); + + state->ownerRule=ownerRule; + state->ownerRuleSymbol=symbolManager->GetGlobal()->GetSubSymbolByName(ownerRule->name); + state->stateName=ownerRule->name+L".RootStart"; + state->stateExpression=L"@ $<"+ownerRule->name+L">"; + return state; + } + + State* Automaton::RootRuleEndState(definitions::ParsingDefinitionRuleDefinition* ownerRule) + { + State* state=new State; + states.Add(state); + + state->ownerRule=ownerRule; + state->ownerRuleSymbol=symbolManager->GetGlobal()->GetSubSymbolByName(ownerRule->name); + state->stateName=ownerRule->name+L".RootEnd"; + state->stateExpression=L"$<"+ownerRule->name+L"> @"; + return state; + } + + State* Automaton::StartState(definitions::ParsingDefinitionRuleDefinition* ownerRule, definitions::ParsingDefinitionGrammar* grammarNode, definitions::ParsingDefinitionGrammar* stateNode) + { + State* state=new State; + states.Add(state); + + state->ownerRule=ownerRule; + state->ownerRuleSymbol=symbolManager->GetGlobal()->GetSubSymbolByName(ownerRule->name); + state->grammarNode=grammarNode; + state->stateNode=stateNode; + state->statePosition=State::BeforeNode; + state->stateName=ownerRule->name+L"."+itow(++ruleDefToInfoMap[ownerRule]->stateNameCount); + stateNode=FindAppropriateGrammarState(grammarNode, stateNode, true); + state->stateExpression=L"<"+ownerRule->name+L">: "+GrammarStateToString(grammarNode, stateNode, true); + return state; + } + + State* Automaton::EndState(definitions::ParsingDefinitionRuleDefinition* ownerRule, definitions::ParsingDefinitionGrammar* grammarNode, definitions::ParsingDefinitionGrammar* stateNode) + { + State* state=new State; + states.Add(state); + + state->ownerRule=ownerRule; + state->ownerRuleSymbol=symbolManager->GetGlobal()->GetSubSymbolByName(ownerRule->name); + state->grammarNode=grammarNode; + state->stateNode=stateNode; + state->statePosition=State::AfterNode; + state->stateName=ownerRule->name+L"."+itow(++ruleDefToInfoMap[ownerRule]->stateNameCount); + stateNode=FindAppropriateGrammarState(grammarNode, stateNode, false); + state->stateExpression=L"<"+ownerRule->name+L">: "+GrammarStateToString(grammarNode, stateNode, false); + return state; + } + + State* Automaton::CopyState(State* oldState) + { + State* resultState=0; + if(oldState->statePosition==State::BeforeNode) + { + resultState=StartState(oldState->ownerRule, oldState->grammarNode, oldState->stateNode); + } + else + { + resultState=EndState(oldState->ownerRule, oldState->grammarNode, oldState->stateNode); + } + resultState->endState=oldState->endState; + return resultState; + } + + Transition* Automaton::CreateTransition(State* start, State* end) + { + Transition* transition=new Transition; + transitions.Add(transition); + + start->transitions.Add(transition); + end->inputs.Add(transition); + + transition->source=start; + transition->target=end; + return transition; + } + + Transition* Automaton::TokenBegin(State* start, State* end) + { + Transition* transition=CreateTransition(start, end); + transition->transitionType=Transition::TokenBegin; + return transition; + } + + Transition* Automaton::TokenFinish(State* start, State* end) + { + Transition* transition=CreateTransition(start, end); + transition->transitionType=Transition::TokenFinish; + return transition; + } + + Transition* Automaton::NormalReduce(State* start, State* end) + { + Transition* transition=CreateTransition(start, end); + transition->transitionType=Transition::NormalReduce; + return transition; + } + + Transition* Automaton::LeftRecursiveReduce(State* start, State* end) + { + Transition* transition=CreateTransition(start, end); + transition->transitionType=Transition::LeftRecursiveReduce; + return transition; + } + + Transition* Automaton::Epsilon(State* start, State* end) + { + Transition* transition=CreateTransition(start, end); + transition->transitionType=Transition::Epsilon; + return transition; + } + + Transition* Automaton::Symbol(State* start, State* end, ParsingSymbol* transitionSymbol) + { + Transition* transition=CreateTransition(start, end); + transition->transitionType=Transition::Symbol; + transition->transitionSymbol=transitionSymbol; + return transition; + } + + Transition* Automaton::CopyTransition(State* start, State* end, Transition* oldTransition) + { + Transition* transition=CreateTransition(start, end); + transition->transitionType=oldTransition->transitionType; + transition->stackOperationType=oldTransition->stackOperationType; + transition->transitionSymbol=oldTransition->transitionSymbol; + return transition; + } + + void Automaton::DeleteTransition(Transition* transition) + { + transition->source->transitions.Remove(transition); + transition->target->inputs.Remove(transition); + transitions.Remove(transition); + } + + void Automaton::DeleteState(State* state) + { + while(state->inputs.Count()) + { + DeleteTransition(state->inputs[0]); + } + while(state->transitions.Count()) + { + DeleteTransition(state->transitions[0]); + } + states.Remove(state); + } + } + } +} + +/*********************************************************************** +.\PARSINGAUTOMATON_CLOSURE.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + using namespace collections; + using namespace definitions; + + namespace analyzing + { + +/*********************************************************************** +CreateNondeterministicPDAFromEpsilonPDA::closure_searching +***********************************************************************/ + + // closure function for searching reachable states + ClosureItem::SearchResult EpsilonClosure(Transition* transition) + { + return + transition->transitionType!=Transition::Epsilon?ClosureItem::Hit: + //transition->target->endState?ClosureItem::Blocked: + ClosureItem::Continue; + } + + // closure searching function + void SearchClosureInternal(ClosureItem::SearchResult(*closurePredicate)(Transition*), List& transitionPath, Transition* transition, State* state, List& closure) + { + FOREACH(Transition*, singleTransitionPath, transitionPath) + { + if(singleTransitionPath->source==state && closurePredicate(singleTransitionPath)!=ClosureItem::Blocked) + { + Ptr> path=new List; + CopyFrom(*path.Obj(), transitionPath); + closure.Add(ClosureItem(state, path, true)); + return; + } + } + + ClosureItem::SearchResult result=transition?closurePredicate(transition):ClosureItem::Continue; + switch(result) + { + case ClosureItem::Continue: + { + FOREACH(Transition*, newTransition, state->transitions) + { + if(!transitionPath.Contains(newTransition)) + { + transitionPath.Add(newTransition); + SearchClosureInternal(closurePredicate, transitionPath, newTransition, newTransition->target, closure); + transitionPath.RemoveAt(transitionPath.Count()-1); + } + } + } + break; + case ClosureItem::Hit: + { + Ptr> path=new List; + CopyFrom(*path.Obj(), transitionPath); + closure.Add(ClosureItem(state, path, false)); + } + break; + default:; + } + } + + void SearchClosure(ClosureItem::SearchResult(*closurePredicate)(Transition*), State* startState, List& closure) + { + List transitionPath; + SearchClosureInternal(closurePredicate, transitionPath, 0, startState, closure); + } + + // map old state to new state and track all states that are not visited yet + State* GetMappedState(Ptr newAutomaton, State* oldState, List& scanningStates, Dictionary& oldNewStateMap) + { + State* newState=0; + vint mapIndex=oldNewStateMap.Keys().IndexOf(oldState); + if(mapIndex==-1) + { + newState=newAutomaton->CopyState(oldState); + oldNewStateMap.Add(oldState, newState); + } + else + { + newState=oldNewStateMap.Values().Get(mapIndex); + } + if(!scanningStates.Contains(oldState)) + { + scanningStates.Add(oldState); + } + return newState; + } + +/*********************************************************************** +RemoveEpsilonTransitions +***********************************************************************/ + + void RemoveEpsilonTransitions(collections::Dictionary& oldNewStateMap, collections::List& scanningStates, Ptr automaton) + { + vint currentStateIndex=0; + + while(currentStateIndex closure; + SearchClosure(&EpsilonClosure, currentOldState, closure); + FOREACH(ClosureItem, closureItem, closure) + { + Transition* oldTransition=closureItem.transitions->Get(closureItem.transitions->Count()-1); + if(!closureItem.cycle || oldTransition->transitionType!=Transition::Epsilon) + { + // if the oldTransition begins from an end state + if(oldTransition->source->endState && closureItem.transitions->Count()>1) + { + // keep a epsilon transition that without the last "TokenFinish" + State* newEndState=GetMappedState(automaton, oldTransition->source, scanningStates, oldNewStateMap); + Transition* transition=automaton->Epsilon(currentNewState, newEndState); + FOREACH(Transition*, pathTransition, *closureItem.transitions.Obj()) + { + if(pathTransition==oldTransition) break; + CopyFrom(transition->actions, pathTransition->actions, true); + } + } + else + { + // build compacted non-epsilon transition to the target state of the path + State* newEndState=GetMappedState(automaton, oldTransition->target, scanningStates, oldNewStateMap); + Transition* transition=automaton->CopyTransition(currentNewState, newEndState, oldTransition); + FOREACH(Transition*, pathTransition, *closureItem.transitions.Obj()) + { + CopyFrom(transition->actions, pathTransition->actions, true); + } + } + } + } + } + } + } + } +} + +/*********************************************************************** +.\PARSINGAUTOMATON_EPDA.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + using namespace collections; + using namespace definitions; + + namespace analyzing + { + +/*********************************************************************** +CreateEpsilonPDAVisitor +***********************************************************************/ + + class CreateEpsilonPDAVisitor : public Object, public ParsingDefinitionGrammar::IVisitor + { + public: + Ptr automaton; + ParsingDefinitionRuleDefinition* rule; + ParsingDefinitionGrammar* ruleGrammar; + State* startState; + State* endState; + Transition* result; + + CreateEpsilonPDAVisitor(Ptr _automaton, ParsingDefinitionRuleDefinition* _rule, ParsingDefinitionGrammar* _ruleGrammar, State* _startState, State* _endState) + :automaton(_automaton) + ,rule(_rule) + ,ruleGrammar(_ruleGrammar) + ,startState(_startState) + ,endState(_endState) + ,result(0) + { + } + + static Transition* Create(ParsingDefinitionGrammar* grammar, Ptr automaton, ParsingDefinitionRuleDefinition* rule, ParsingDefinitionGrammar* ruleGrammar, State* startState, State* endState) + { + CreateEpsilonPDAVisitor visitor(automaton, rule, ruleGrammar, startState, endState); + grammar->Accept(&visitor); + return visitor.result; + } + + Transition* Create(ParsingDefinitionGrammar* grammar, State* startState, State* endState) + { + return Create(grammar, automaton, rule, ruleGrammar, startState, endState); + } + + void Visit(ParsingDefinitionPrimitiveGrammar* node)override + { + result=automaton->Symbol(startState, endState, automaton->symbolManager->CacheGetSymbol(node)); + } + + void Visit(ParsingDefinitionTextGrammar* node)override + { + result=automaton->Symbol(startState, endState, automaton->symbolManager->CacheGetSymbol(node)); + } + + void Visit(ParsingDefinitionSequenceGrammar* node)override + { + State* middleState=automaton->EndState(startState->ownerRule, ruleGrammar, node->first.Obj()); + Create(node->first.Obj(), startState, middleState); + Create(node->second.Obj(), middleState, endState); + } + + void Visit(ParsingDefinitionAlternativeGrammar* node)override + { + Create(node->first.Obj(), startState, endState); + Create(node->second.Obj(), startState, endState); + } + + void Visit(ParsingDefinitionLoopGrammar* node)override + { + State* loopStart=automaton->StartState(startState->ownerRule, ruleGrammar, node->grammar.Obj()); + automaton->Epsilon(startState, loopStart); + automaton->Epsilon(loopStart, endState); + Create(node->grammar.Obj(), loopStart, loopStart); + } + + void Visit(ParsingDefinitionOptionalGrammar* node)override + { + Create(node->grammar.Obj(), startState, endState); + automaton->Epsilon(startState, endState); + } + + void Visit(ParsingDefinitionCreateGrammar* node)override + { + State* middleState=automaton->EndState(startState->ownerRule, ruleGrammar, node->grammar.Obj()); + Create(node->grammar.Obj(), startState, middleState); + Transition* transition=automaton->Epsilon(middleState, endState); + + Ptr action=new Action; + action->actionType=Action::Create; + action->actionSource=automaton->symbolManager->CacheGetType(node->type.Obj(), 0); + action->creatorRule=rule; + transition->actions.Add(action); + } + + void Visit(ParsingDefinitionAssignGrammar* node)override + { + Transition* transition=Create(node->grammar.Obj(), startState, endState); + + Ptr action=new Action; + action->actionType=Action::Assign; + action->actionSource=automaton->symbolManager->CacheGetSymbol(node); + action->creatorRule=rule; + transition->actions.Add(action); + } + + void Visit(ParsingDefinitionUseGrammar* node)override + { + Transition* transition=Create(node->grammar.Obj(), startState, endState); + + Ptr action=new Action; + action->actionType=Action::Using; + action->creatorRule=rule; + transition->actions.Add(action); + } + + void Visit(ParsingDefinitionSetterGrammar* node)override + { + State* middleState=automaton->EndState(startState->ownerRule, ruleGrammar, node->grammar.Obj()); + Create(node->grammar.Obj(), startState, middleState); + Transition* transition=automaton->Epsilon(middleState, endState); + + Ptr action=new Action; + action->actionType=Action::Setter; + action->actionSource=automaton->symbolManager->CacheGetSymbol(node); + action->actionTarget=action->actionSource->GetDescriptorSymbol()->GetSubSymbolByName(node->value); + action->creatorRule=rule; + transition->actions.Add(action); + } + }; + +/*********************************************************************** +CreateRuleEpsilonPDA +***********************************************************************/ + + void CreateRuleEpsilonPDA(Ptr automaton, Ptr rule, ParsingSymbolManager* manager) + { + Ptr ruleInfo=new RuleInfo; + automaton->AddRuleInfo(rule.Obj(), ruleInfo); + + ruleInfo->rootRuleStartState=automaton->RootRuleStartState(rule.Obj()); + ruleInfo->rootRuleEndState=automaton->RootRuleEndState(rule.Obj()); + ruleInfo->startState=automaton->RuleStartState(rule.Obj()); + automaton->TokenBegin(ruleInfo->rootRuleStartState, ruleInfo->startState); + + FOREACH(Ptr, grammar, rule->grammars) + { + State* grammarStartState=automaton->StartState(rule.Obj(), grammar.Obj(), grammar.Obj()); + State* grammarEndState=automaton->EndState(rule.Obj(), grammar.Obj(), grammar.Obj()); + grammarEndState->stateName+=L".End"; + grammarEndState->endState=true; + automaton->Epsilon(ruleInfo->startState, grammarStartState); + automaton->TokenFinish(grammarEndState, ruleInfo->rootRuleEndState); + ruleInfo->endStates.Add(grammarEndState); + CreateEpsilonPDAVisitor::Create(grammar.Obj(), automaton, rule.Obj(), grammar.Obj(), grammarStartState, grammarEndState); + } + } + +/*********************************************************************** +CreateEpsilonPDA +***********************************************************************/ + + Ptr CreateEpsilonPDA(Ptr definition, ParsingSymbolManager* manager) + { + Ptr automaton=new Automaton(manager); + FOREACH(Ptr, rule, definition->rules) + { + CreateRuleEpsilonPDA(automaton, rule, manager); + } + return automaton; + } + } + } +} + +/*********************************************************************** +.\PARSINGAUTOMATON_GENERATETABLE.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + using namespace collections; + using namespace definitions; + using namespace tabling; + + namespace analyzing + { + +/*********************************************************************** +GetTypeNameForCreateInstruction +***********************************************************************/ + + WString GetTypeNameForCreateInstruction(ParsingSymbol* type) + { + ParsingSymbol* parent=type->GetParentSymbol(); + if(parent->GetType()==ParsingSymbol::ClassType) + { + return GetTypeNameForCreateInstruction(parent)+L"."+type->GetName(); + } + else + { + return type->GetName(); + } + } + +/*********************************************************************** +CreateLookAhead +***********************************************************************/ + + void CopyStableLookAheads(List>& la, List>& sla, const List>& la2) + { + CopyFrom(sla, From(la) + .Where([&](Ptr lai) + { + return From(la2).All([&](Ptr lai2) + { + return ParsingTable::LookAheadInfo::TestPrefix(lai, lai2)==ParsingTable::LookAheadInfo::NotPrefix; + }); + }), + true); + } + + void RemoveStableLookAheads(List>& la, const List>& sla) + { + for(vint i=la.Count()-1;i>=0;i--) + { + if(sla.Contains(la[i].Obj())) + { + la.RemoveAt(i); + } + } + } + + bool WalkLookAheads(Ptr table, List>& la, vint maxTokenCount) + { + vint count=la.Count(); + for(vint i=0;i lai=la[i]; + if(lai->tokens.Count()==maxTokenCount) + { + return false; + } + ParsingTable::LookAheadInfo::Walk(table, lai, lai->state, la); + } + return true; + } + + void CompactLookAheads(Ptr t, List>& sla) + { + CopyFrom(sla, t->lookAheads, true); + CopyFrom(t->lookAheads, From(sla) + .Where([&](Ptr lai) + { + return From(sla).All([&](Ptr lai2) + { + if(lai==lai2) return true; + ParsingTable::LookAheadInfo::PrefixResult result=ParsingTable::LookAheadInfo::TestPrefix(lai, lai2); + switch(result) + { + case ParsingTable::LookAheadInfo::Prefix: + return false; + case ParsingTable::LookAheadInfo::Equal: + return sla.IndexOf(lai.Obj()) < sla.IndexOf(lai2.Obj()); + default: + return true; + } + }); + })); + } + + bool CreateLookAhead(Ptr table, Ptr t1, Ptr t2, vint maxTokenCount) + { + List> la1, la2, sla1, sla2; + + // calculate 1-token look aheads + ParsingTable::LookAheadInfo::Walk(table, 0, t1->targetState, la1); + ParsingTable::LookAheadInfo::Walk(table, 0, t2->targetState, la2); + + do + { + // pick up all stable look aheads and remove them from the look ahead list + // stable look ahead means, when the look ahead is satisfied, then the transition is picked up with full confidence + // non-stable look ahead means, when the look ahead is satisifed, it only increase confidence, needs further tokens for decision + CopyStableLookAheads(la1, sla1, la2); + CopyStableLookAheads(la2, sla2, la1); + RemoveStableLookAheads(la1, sla1); + RemoveStableLookAheads(la2, sla2); + + // check if there are non-stable look aheads in two transitions points to the same state + // in such situation means that the two transition cannot always be determined using look aheads + FOREACH(Ptr, lai1, la1) + { + FOREACH(Ptr, lai2, la2) + { + if (lai1->state == lai2->state) + { + if (ParsingTable::LookAheadInfo::TestPrefix(lai1, lai2) != ParsingTable::LookAheadInfo::NotPrefix) + { + return false; + } + if (ParsingTable::LookAheadInfo::TestPrefix(lai2, lai1) != ParsingTable::LookAheadInfo::NotPrefix) + { + return false; + } + } + } + } + + // use the non-stable look aheads to walk a token further + if(!WalkLookAheads(table, la1, maxTokenCount) || !WalkLookAheads(table, la2, maxTokenCount)) + { + return false; + } + } + while(la1.Count()>0 || la2.Count()>0); + + CompactLookAheads(t1, sla1); + CompactLookAheads(t2, sla2); + return true; + } + +/*********************************************************************** +CollectAttribute +***********************************************************************/ + + void CollectType(ParsingSymbol* symbol, List& types) + { + if(symbol->GetType()==ParsingSymbol::ClassType) + { + types.Add(symbol); + } + vint count=symbol->GetSubSymbolCount(); + for(vint i=0;iGetSubSymbol(i), types); + } + } + + void CollectAttributeInfo(Ptr att, List>& atts) + { + FOREACH(Ptr, datt, atts) + { + Ptr tatt=new ParsingTable::AttributeInfo(datt->name); + CopyFrom(tatt->arguments, datt->arguments); + att->attributes.Add(tatt); + } + } + + Ptr CreateAttributeInfo(List>& atts) + { + Ptr att=new ParsingTable::AttributeInfoList; + CollectAttributeInfo(att, atts); + return att; + } + +/*********************************************************************** +GenerateTable +***********************************************************************/ + + vint LookAheadConflictPriority(vint tableTokenIndex) + { + switch (tableTokenIndex) + { + case ParsingTable::NormalReduce: + return 0; + case ParsingTable::LeftRecursiveReduce: + return 1; + default: + return 2; + } + } + + void GenerateLookAhead(Ptr table, List& stateIds, vint state, vint token, Ptr t1, Ptr t2, bool enableAmbiguity, collections::List>& errors) + { + if(ParsingTable::TransitionItem::CheckOrder(t1, t2, ParsingTable::TransitionItem::UnknownOrder)==ParsingTable::TransitionItem::UnknownOrder) + { + if(enableAmbiguity || !CreateLookAhead(table, t1, t2, 16)) + { + if (LookAheadConflictPriority(t1->token) != LookAheadConflictPriority(t2->token)) + { + return; + } + WString stateName=itow(state)+L"["+table->GetStateInfo(state).stateName+L"]"; + WString tokenName= + token==ParsingTable::TokenBegin?WString(L"$TokenBegin"): + token==ParsingTable::TokenFinish?WString(L"$TokenFinish"): + token==ParsingTable::NormalReduce?WString(L"$NormalReduce"): + token==ParsingTable::LeftRecursiveReduce?WString(L"$LeftRecursiveReduce"): + table->GetTokenInfo(token).name; + switch (t1->token) + { + case ParsingTable::NormalReduce: + errors.Add(new ParsingError(stateIds[state]->ownerRule, L"Conflict happened with normal reduce in transition of \""+tokenName+L"\" of state \""+stateName+L"\".")); + break; + case ParsingTable::LeftRecursiveReduce: + errors.Add(new ParsingError(stateIds[state]->ownerRule, L"Conflict happened with left recursive reduce in transition of \""+tokenName+L"\" of state \""+stateName+L"\".")); + break; + default: + errors.Add(new ParsingError(stateIds[state]->ownerRule, L"Conflict happened in transition of \""+tokenName+L"\" of state \""+stateName+L"\".")); + break; + } + } + } + } + + Ptr GenerateTableFromPDA(Ptr definition, ParsingSymbolManager* manager, Ptr jointPDA, bool enableAmbiguity, collections::List>& errors) + { + List> atts; + + /*********************************************************************** + find all class types + ***********************************************************************/ + List types; + Dictionary typeAtts; + Dictionary, vint> treeFieldAtts; + + // stable class field order + List orderedChildTypeKeys; + Dictionary>> childTypeValues; + + // find all class types + CollectType(manager->GetGlobal(), types); + FOREACH(ParsingSymbol*, type, types) + { + Ptr typeAtt = new ParsingTable::AttributeInfoList; + ParsingSymbol* parent = type; + while (parent) + { + ParsingDefinitionClassDefinition* classDef = manager->CacheGetClassDefinition(parent); + CollectAttributeInfo(typeAtt, classDef->attributes); + + Ptr> children; + vint index = childTypeValues.Keys().IndexOf(parent); + if (index == -1) + { + children = new List; + orderedChildTypeKeys.Add(parent); + childTypeValues.Add(parent, children); + } + else + { + children = childTypeValues.Values().Get(index); + } + + children->Add(type); + parent = parent->GetDescriptorSymbol(); + } + + if (typeAtt->attributes.Count() > 0) + { + typeAtts.Add(GetTypeFullName(type), atts.Count()); + atts.Add(typeAtt); + } + else + { + typeAtts.Add(GetTypeFullName(type), -1); + } + } + + // find all class fields + FOREACH(ParsingSymbol*, type, orderedChildTypeKeys) + { + List& children = *childTypeValues[type].Obj(); + ParsingDefinitionClassDefinition* classDef = manager->CacheGetClassDefinition(type); + List fieldAtts; + + FOREACH_INDEXER(Ptr, field, index, classDef->members) + { + if (field->attributes.Count() > 0) + { + fieldAtts.Add(atts.Count()); + atts.Add(CreateAttributeInfo(field->attributes)); + } + else + { + fieldAtts.Add(-1); + } + } + + FOREACH(ParsingSymbol*, child, children) + { + WString type = GetTypeFullName(child); + FOREACH_INDEXER(Ptr, field, index, classDef->members) + { + treeFieldAtts.Add(Pair(type, field->name), fieldAtts[index]); + } + } + } + + /*********************************************************************** + find all tokens + ***********************************************************************/ + vint tokenCount = 0; + vint discardTokenCount = 0; + Dictionary tokenIds; + List discardTokens; + + Dictionary tokenAtts; + Dictionary ruleAtts; + + FOREACH(Ptr, token, definition->tokens) + { + if (token->attributes.Count() > 0) + { + tokenAtts.Add(token->name, atts.Count()); + atts.Add(CreateAttributeInfo(token->attributes)); + } + else + { + tokenAtts.Add(token->name, -1); + } + + if (token->discard) + { + discardTokens.Add(token->name); + discardTokenCount++; + } + else + { + ParsingSymbol* tokenSymbol = jointPDA->symbolManager->GetGlobal()->GetSubSymbolByName(token->name); + tokenIds.Add(tokenSymbol, tokenIds.Count() + ParsingTable::UserTokenStart); + tokenCount++; + } + } + + /*********************************************************************** + find all rules + ***********************************************************************/ + FOREACH(Ptr, rule, definition->rules) + { + if (rule->attributes.Count() > 0) + { + ruleAtts.Add(rule->name, atts.Count()); + atts.Add(CreateAttributeInfo(rule->attributes)); + } + else + { + ruleAtts.Add(rule->name, -1); + } + } + + /*********************************************************************** + find all available states + ***********************************************************************/ + List stateIds; + vint availableStateCount = 0; + { + vint currentState = 0; + List scanningStates; + FOREACH(Ptr, ruleInfo, jointPDA->ruleInfos) + { + if (!scanningStates.Contains(ruleInfo->rootRuleStartState)) + { + scanningStates.Add(ruleInfo->rootRuleStartState); + } + + while (currentState < scanningStates.Count()) + { + State* state = scanningStates[currentState++]; + stateIds.Add(state); + + FOREACH(Transition*, transition, state->transitions) + { + if (!scanningStates.Contains(transition->target)) + { + scanningStates.Add(transition->target); + } + } + } + } + availableStateCount = scanningStates.Count(); + } + + // there will be some states that is used in shift and reduce but it is not a reachable state + // so the state table will record all state + FOREACH(Ptr, state, jointPDA->states) + { + if (!stateIds.Contains(state.Obj())) + { + stateIds.Add(state.Obj()); + } + } + vint stateCount = stateIds.Count(); + + Ptr table = new ParsingTable(atts.Count(), typeAtts.Count(), treeFieldAtts.Count(), tokenCount, discardTokenCount, stateCount, definition->rules.Count()); + + /*********************************************************************** + fill attribute infos + ***********************************************************************/ + FOREACH_INDEXER(Ptr, att, index, atts) + { + table->SetAttributeInfo(index, att); + } + + /*********************************************************************** + fill tree type infos + ***********************************************************************/ + typedef Pair TreeTypeAttsPair; + FOREACH_INDEXER(TreeTypeAttsPair, type, index, typeAtts) + { + table->SetTreeTypeInfo(index, ParsingTable::TreeTypeInfo(type.key, type.value)); + } + + /*********************************************************************** + fill tree field infos + ***********************************************************************/ + typedef Pair, vint> TreeFieldAttsPair; + FOREACH_INDEXER(TreeFieldAttsPair, field, index, treeFieldAtts) + { + table->SetTreeFieldInfo(index, ParsingTable::TreeFieldInfo(field.key.key, field.key.value, field.value)); + } + + /*********************************************************************** + fill token infos + ***********************************************************************/ + FOREACH(ParsingSymbol*, symbol, tokenIds.Keys()) + { + ParsingTable::TokenInfo info; + info.name = symbol->GetName(); + info.regex = symbol->GetDescriptorString(); + info.attributeIndex = tokenAtts[info.name]; + + vint id = tokenIds[symbol]; + table->SetTokenInfo(id, info); + } + + FOREACH_INDEXER(WString, name, i, discardTokens) + { + ParsingSymbol* symbol = jointPDA->symbolManager->GetGlobal()->GetSubSymbolByName(name); + + ParsingTable::TokenInfo info; + info.name = symbol->GetName(); + info.regex = symbol->GetDescriptorString(); + info.attributeIndex = tokenAtts[info.name]; + table->SetDiscardTokenInfo(i, info); + } + + /*********************************************************************** + fill rule infos + ***********************************************************************/ + FOREACH_INDEXER(ParsingDefinitionRuleDefinition*, rule, i, jointPDA->orderedRulesDefs) + { + Ptr pdaRuleInfo = jointPDA->ruleDefToInfoMap[rule]; + ParsingTable::RuleInfo info; + info.name = rule->name; + info.type = TypeToString(rule->type.Obj()); + info.rootStartState = stateIds.IndexOf(pdaRuleInfo->rootRuleStartState); + info.attributeIndex = ruleAtts[info.name]; + + if (Ptr classType = rule->type.Cast()) + { + ParsingSymbol* ruleSymbol = manager->GetGlobal()->GetSubSymbolByName(rule->name); + ParsingSymbol* ruleType = ruleSymbol->GetDescriptorSymbol(); + ParsingDefinitionClassDefinition* ruleTypeDef = manager->CacheGetClassDefinition(ruleType); + if (ruleTypeDef && ruleTypeDef->ambiguousType) + { + ParsingSymbol* ambiguousType = manager->CacheGetType(ruleTypeDef->ambiguousType.Obj(), ruleType->GetParentSymbol()); + info.ambiguousType = GetTypeFullName(ambiguousType); + } + } + table->SetRuleInfo(i, info); + } + + /*********************************************************************** + fill state infos + ***********************************************************************/ + FOREACH_INDEXER(State*, state, i, stateIds) + { + ParsingTable::StateInfo info; + info.ruleName = state->ownerRule->name; + info.stateName = state->stateName; + info.stateExpression = state->stateExpression; + table->SetStateInfo(i, info); + } + + /*********************************************************************** + fill transition table + ***********************************************************************/ + FOREACH_INDEXER(State*, state, stateIndex, stateIds) + { + // if this state is not necessary, stop building the table + if (stateIndex >= availableStateCount) break; + + FOREACH(Transition*, transition, state->transitions) + { + vint tokenIndex = -1; + switch (transition->transitionType) + { + case Transition::TokenBegin: + tokenIndex = ParsingTable::TokenBegin; + break; + case Transition::TokenFinish: + tokenIndex = ParsingTable::TokenFinish; + break; + case Transition::NormalReduce: + tokenIndex = ParsingTable::NormalReduce; + break; + case Transition::LeftRecursiveReduce: + tokenIndex = ParsingTable::LeftRecursiveReduce; + break; + case Transition::Symbol: + tokenIndex = tokenIds[transition->transitionSymbol]; + break; + default:; + } + + Ptr bag = table->GetTransitionBag(stateIndex, tokenIndex); + if (!bag) + { + bag = new ParsingTable::TransitionBag; + table->SetTransitionBag(stateIndex, tokenIndex, bag); + } + + Ptr item = new ParsingTable::TransitionItem; + item->token = tokenIndex; + item->targetState = stateIds.IndexOf(transition->target); + bag->transitionItems.Add(item); + + FOREACH(Ptr, action, transition->actions) + { + ParsingTable::Instruction ins; + switch (action->actionType) + { + case Action::Create: + { + ins.instructionType = ParsingTable::Instruction::Create; + ins.nameParameter = GetTypeNameForCreateInstruction(action->actionSource); + } + break; + case Action::Using: + { + ins.instructionType = ParsingTable::Instruction::Using; + } + break; + case Action::Assign: + { + if (action->actionSource->GetDescriptorSymbol()->GetType() == ParsingSymbol::ArrayType) + { + ins.instructionType = ParsingTable::Instruction::Item; + } + else + { + ins.instructionType = ParsingTable::Instruction::Assign; + } + ins.nameParameter = action->actionSource->GetName(); + } + break; + case Action::Setter: + { + ins.instructionType = ParsingTable::Instruction::Setter; + ins.nameParameter = action->actionSource->GetName(); + ins.value = action->actionTarget->GetName(); + } + break; + case Action::Shift: + { + ins.instructionType = ParsingTable::Instruction::Shift; + ins.stateParameter = stateIds.IndexOf(action->shiftReduceSource); + } + break; + case Action::Reduce: + { + ins.instructionType = ParsingTable::Instruction::Reduce; + ins.stateParameter = stateIds.IndexOf(action->shiftReduceSource); + item->stackPattern.Add(ins.stateParameter); + } + break; + case Action::LeftRecursiveReduce: + { + ins.instructionType = ParsingTable::Instruction::LeftRecursiveReduce; + ins.stateParameter = stateIds.IndexOf(action->shiftReduceSource); + } + break; + } + ins.creatorRule = action->creatorRule->name; + item->instructions.Add(ins); + } + } + } + + /*********************************************************************** + check conflict and build look ahead table + ***********************************************************************/ + for (vint i = 0; i < table->GetStateCount(); i++) + { + for (vint j = 0; j < table->GetTokenCount(); j++) + { + Ptr bag = table->GetTransitionBag(i, j); + if (bag) + { + CopyFrom( + bag->transitionItems, + From(bag->transitionItems) + .OrderBy([&](Ptr t1, Ptr t2) + { + // stable transition order + vint i1 = bag->transitionItems.IndexOf(t1.Obj()); + vint i2 = bag->transitionItems.IndexOf(t2.Obj()); + auto defaultOrder = + i1 < i2 ? ParsingTable::TransitionItem::CorrectOrder : + i1 > i2 ? ParsingTable::TransitionItem::WrongOrder : + ParsingTable::TransitionItem::SameOrder + ; + return ParsingTable::TransitionItem::Compare(t1, t2, defaultOrder); + }) + ); + + // build look ahead inside a transition + for (vint k1 = 0; k1 < bag->transitionItems.Count() - 1; k1++) + { + for (vint k2 = k1 + 1; k2 < bag->transitionItems.Count(); k2++) + { + Ptr t1 = bag->transitionItems[k1]; + Ptr t2 = bag->transitionItems[k2]; + GenerateLookAhead(table, stateIds, i, j, t1, t2, enableAmbiguity, errors); + } + } + + // build look ahead between this transition and reduce transitions + for (vint t = ParsingTable::NormalReduce; t <= ParsingTable::LeftRecursiveReduce && t < j; t++) + { + if (Ptr reduceBag = table->GetTransitionBag(i, t)) + { + for (vint k1 = 0; k1 < reduceBag->transitionItems.Count(); k1++) + { + for (vint k2 = 0; k2 < bag->transitionItems.Count(); k2++) + { + Ptr t1 = reduceBag->transitionItems[k1]; + Ptr t2 = bag->transitionItems[k2]; + GenerateLookAhead(table, stateIds, i, j, t1, t2, enableAmbiguity, errors); + } + } + } + } + } + } + } + + /*********************************************************************** + initialize table + ***********************************************************************/ + if (errors.Count() > 0) + { + table->SetAmbiguity(true); + } + table->Initialize(); + return table; + } + + Ptr GenerateTable(Ptr definition, bool enableAmbiguity, collections::List>& errors) + { + errors.Clear(); + ParsingSymbolManager symbolManager; + ValidateDefinition(definition, &symbolManager, errors); + if(errors.Count()==0) + { + Ptr epsilonPDA=CreateEpsilonPDA(definition, &symbolManager); + Ptr nondeterministicPDA=CreateNondeterministicPDAFromEpsilonPDA(epsilonPDA); + Ptr jointPDA=CreateJointPDAFromNondeterministicPDA(nondeterministicPDA); + CompactJointPDA(jointPDA); + MarkLeftRecursiveInJointPDA(jointPDA, errors); + if(errors.Count()==0) + { + Ptr table=GenerateTableFromPDA(definition, &symbolManager, jointPDA, enableAmbiguity, errors); + if(enableAmbiguity || errors.Count()==0) + { + return table; + } + } + } + return 0; + } + } + } +} + +/*********************************************************************** +.\PARSINGAUTOMATON_JPDA.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + using namespace collections; + using namespace definitions; + + namespace analyzing + { +/*********************************************************************** +CreateJointPDAFromNondeterministicPDA +***********************************************************************/ + + Ptr CreateJointPDAFromNondeterministicPDA(Ptr nondeterministicPDA) + { + Ptr automaton=new Automaton(nondeterministicPDA->symbolManager); + + // build rule info data + Dictionary ruleMap; + Dictionary oldNewStateMap; + FOREACH(ParsingDefinitionRuleDefinition*, rule, nondeterministicPDA->orderedRulesDefs) + { + // build new rule info + Ptr ruleInfo=nondeterministicPDA->ruleDefToInfoMap[rule]; + Ptr newRuleInfo=new RuleInfo; + automaton->AddRuleInfo(rule, newRuleInfo); + ruleMap.Add(rule->name, rule); + + newRuleInfo->rootRuleStartState=automaton->RootRuleStartState(rule); + newRuleInfo->rootRuleEndState=automaton->RootRuleEndState(rule); + newRuleInfo->startState=automaton->RuleStartState(rule); + + oldNewStateMap.Add(ruleInfo->rootRuleStartState, newRuleInfo->rootRuleStartState); + oldNewStateMap.Add(ruleInfo->rootRuleEndState, newRuleInfo->rootRuleEndState); + oldNewStateMap.Add(ruleInfo->startState, newRuleInfo->startState); + + newRuleInfo->rootRuleStartState->stateExpression=ruleInfo->rootRuleStartState->stateExpression; + newRuleInfo->rootRuleEndState->stateExpression=ruleInfo->rootRuleEndState->stateExpression; + newRuleInfo->startState->stateExpression=ruleInfo->startState->stateExpression; + } + + FOREACH(Ptr, oldState, nondeterministicPDA->states) + { + if((oldState->inputs.Count()>0 || oldState->transitions.Count()>0) && !oldNewStateMap.Keys().Contains(oldState.Obj())) + { + State* newState=automaton->CopyState(oldState.Obj()); + oldNewStateMap.Add(oldState.Obj(), newState); + newState->stateExpression=oldState->stateExpression; + } + } + + // create transitions + FOREACH(ParsingDefinitionRuleDefinition*, rule, nondeterministicPDA->orderedRulesDefs) + { + Ptr ruleInfo=nondeterministicPDA->ruleDefToInfoMap[rule]; + Ptr newRuleInfo=automaton->ruleDefToInfoMap[rule]; + + // complete new rule info + FOREACH(State*, endState, ruleInfo->endStates) + { + newRuleInfo->endStates.Add(oldNewStateMap[endState]); + } + + // create joint transitions according to old automaton + List scanningStates; + vint currentStateIndex=0; + scanningStates.Add(ruleInfo->rootRuleStartState); + + while(currentStateIndextransitions) + { + State* oldSource=oldTransition->source; + State* oldTarget=oldTransition->target; + State* newSource=oldNewStateMap[oldSource]; + State* newTarget=oldNewStateMap[oldTarget]; + + if(!scanningStates.Contains(oldSource)) scanningStates.Add(oldSource); + if(!scanningStates.Contains(oldTarget)) scanningStates.Add(oldTarget); + + if(oldTransition->transitionType==Transition::Symbol && oldTransition->transitionSymbol->GetType()==ParsingSymbol::RuleDef) + { + // if this is a rule transition, create + // source -> ruleStart + // ruleEnd[] -> target + ParsingDefinitionRuleDefinition* rule=ruleMap[oldTransition->transitionSymbol->GetName()]; + Ptr oldRuleInfo=nondeterministicPDA->ruleDefToInfoMap[rule]; + + { + Transition* shiftTransition=automaton->Epsilon(newSource, oldNewStateMap[oldRuleInfo->startState]); + Ptr action=new Action; + action->actionType=Action::Shift; + action->shiftReduceSource=newSource; + action->shiftReduceTarget=newTarget; + action->creatorRule=shiftTransition->source->ownerRule; + shiftTransition->actions.Add(action); + } + + FOREACH(State*, oldEndState, oldRuleInfo->endStates) + { + Transition* reduceTransition=automaton->NormalReduce(oldNewStateMap[oldEndState], newTarget); + Ptr action=new Action; + action->actionType=Action::Reduce; + action->shiftReduceSource=newSource; + action->shiftReduceTarget=newTarget; + action->creatorRule=reduceTransition->source->ownerRule; + reduceTransition->actions.Add(action); + CopyFrom(reduceTransition->actions, oldTransition->actions, true); + } + } + else + { + // if not, just copy + Transition* newTransition=automaton->CopyTransition(newSource, newTarget, oldTransition); + CopyFrom(newTransition->actions, oldTransition->actions); + } + } + } + } + return automaton; + } + +/*********************************************************************** +CompactJointPDA +***********************************************************************/ + + // closure function for searching shift-reduce-compact transition + ClosureItem::SearchResult ShiftReduceCompactClosure(Transition* transition) + { + return + transition->stackOperationType!=Transition::None?ClosureItem::Blocked: + transition->transitionType!=Transition::Epsilon?ClosureItem::Hit: + ClosureItem::Continue; + } + + void CompactJointPDA(Ptr jointPDA) + { + FOREACH(Ptr, state, jointPDA->states) + { + State* currentState=state.Obj(); + + // search for epsilon closure + List closure; + SearchClosure(&ShiftReduceCompactClosure, currentState, closure); + + FOREACH(ClosureItem, closureItem, closure) + { + Transition* lastTransition=closureItem.transitions->Get(closureItem.transitions->Count()-1); + Transition::StackOperationType stackOperationType=Transition::None; + Transition::TransitionType transitionType=lastTransition->transitionType; + + if(closureItem.cycle && lastTransition->transitionType==Transition::Epsilon) + { + bool containsShift=false; + bool containsReduce=false; + FOREACH(Transition*, pathTransition, *closureItem.transitions.Obj()) + { + FOREACH(Ptr, action, pathTransition->actions) + { + if(action->actionType==Action::Shift) containsShift=true; + if(action->actionType==Action::Reduce) containsReduce=true; + } + } + if(containsShift && !containsReduce) + { + // a left recursive compacted shift transition is found + // if the left recursive state is not the current state + // that means this transition path fall into other left recursive state + // e.g. + // Term = Factor | Term (here is a left recursion) * Factor + // Exp = Term (this rule symbol transition will fall into Term's left recursive state) ... + // if such a case happened, this transition path will be simply discarded + if(closureItem.state==currentState) + { + stackOperationType=Transition::LeftRecursive; + } + } + else if(!containsShift && containsReduce) + { + // a right recursive compacted reduce transition is found + // if this state will receive $TokenFinish, then the stack pattern number can be infinite + // e.g. for right recursive expression "a b c" == "(a (b c))" + // when trying to do a transition by $TokenFinish + // "a b" should reduce once + // "a b c" should reduce twice + // because that a reduce is not considered a virtual token, so this is not going to be happened + } + } + else if(closureItem.transitions->Count()>1) + { + // in joint PDA, only shift and reduce transitions are epsilon transition + // if there are more than one transition in a path, then there should be shift or reduce transitions in the path + stackOperationType=Transition::ShiftReduceCompacted; + } + + if(stackOperationType!=Transition::None) + { + // build shift-reduce-compacted transition to the target state of the path + Transition* transition=jointPDA->CopyTransition(currentState, lastTransition->target, lastTransition); + transition->transitionType=transitionType; + transition->stackOperationType=stackOperationType; + + // there will be , or + // but there will not be something like + // so we can append stackPattern safely + FOREACH(Transition*, pathTransition, *closureItem.transitions.Obj()) + { + CopyFrom(transition->actions, pathTransition->actions, true); + } + } + } + } + + // delete unnecessary transactions + for(vint i=jointPDA->transitions.Count()-1;i>=0;i--) + { + Transition* transition=jointPDA->transitions[i].Obj(); + if(transition->stackOperationType==Transition::None && transition->transitionType==Transition::Epsilon) + { + jointPDA->DeleteTransition(transition); + } + } + } + +/*********************************************************************** +MarkLeftRecursiveInJointPDA +***********************************************************************/ + + void MarkLeftRecursiveInJointPDA(Ptr jointPDA, collections::List>& errors) + { + vint errorCount=errors.Count(); + // record all left recursive shifts and delete all left recursive epsilon transition + SortedList> leftRecursiveShifts; + FOREACH(Ptr, state, jointPDA->states) + { + for(vint i=state->transitions.Count()-1;i>=0;i--) + { + Transition* transition=state->transitions[i]; + if(transition->stackOperationType==Transition::LeftRecursive) + { + Ptr shiftAction; + FOREACH(Ptr, action, transition->actions) + { + if(action->actionType==Action::Shift) + { + if(shiftAction) + { + errors.Add(new ParsingError(state->ownerRule, L"Indirect left recursive transition in rule \""+state->ownerRule->name+L"\" is not allowed.")); + goto FOUND_INDIRECT_LEFT_RECURSIVE_TRANSITION; + } + else + { + shiftAction=action; + } + } + } + if(shiftAction) + { + leftRecursiveShifts.Add(Pair(shiftAction->shiftReduceSource, shiftAction->shiftReduceTarget)); + } + FOUND_INDIRECT_LEFT_RECURSIVE_TRANSITION: + jointPDA->DeleteTransition(transition); + } + } + } + if(errorCount!=errors.Count()) + { + return; + } + + // change all reduce actions whose (shiftReduceSource, shiftReduceTarget) is recorded in leftRecursiveShifts to left-recursive-reduce + // when a reduce is converted to a left-recursive-reduce, the corresponding state in stackPattern should be removed + // so this will keep count(Reduce) == count(stackPattern) + FOREACH(Ptr, state, jointPDA->states) + { + FOREACH(Transition*, transition, state->transitions) + { + for(vint i=transition->actions.Count()-1;i>=0;i--) + { + Ptr action=transition->actions[i]; + if(action->actionType==Action::Reduce) + { + Pair shift(action->shiftReduceSource, action->shiftReduceTarget); + if(leftRecursiveShifts.Contains(shift)) + { + // check if this is a normal reduce transition, and change it to a left recursive reduce transition. + if (transition->transitionType == Transition::NormalReduce) + { + transition->transitionType = Transition::LeftRecursiveReduce; + // need to create a new action because in the previous phrases, these action object are shared and treated as read only + Ptr newAction=new Action; + newAction->actionType=Action::LeftRecursiveReduce; + newAction->actionSource=action->actionSource; + newAction->actionTarget=action->actionTarget; + newAction->creatorRule=action->creatorRule; + newAction->shiftReduceSource=action->shiftReduceSource; + newAction->shiftReduceTarget=action->shiftReduceTarget; + newAction->creatorRule=shift.key->ownerRule; + transition->actions[i]=newAction; + } + else + { + errors.Add(new ParsingError(state->ownerRule, L"Left recursive reduce action in non-normal-reduce found in rule \""+state->ownerRule->name+L"\" is not allowed.")); + } + } + } + } + } + } + + // delete complicated transitions + FOREACH(Ptr, state, jointPDA->states) + { + while(true) + { + bool deleted=false; + FOREACH(Transition*, t1, state->transitions) + FOREACH(Transition*, t2, state->transitions) + if(t1!=t2) + { + if(Transition::IsEquivalent(t1, t2, true)) + { + jointPDA->DeleteTransition(t2); + deleted=true; + goto TRANSITION_DELETED; + } + } + TRANSITION_DELETED: + if(!deleted) break; + } + } + } + } + } +} + +/*********************************************************************** +.\PARSINGAUTOMATON_MERGESTATES.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + using namespace collections; + using namespace definitions; + + namespace analyzing + { + +/*********************************************************************** +DeleteUnnecessaryStates +***********************************************************************/ + + void DeleteUnnecessaryStates(Ptr automaton, Ptr ruleInfo, List& newStates) + { + // delete all states that are not reachable to the end state + while(true) + { + // find a non-end state without out transitions + vint deleteCount=0; + for(vint i=newStates.Count()-1;i>=0;i--) + { + State* newState=newStates[i]; + if(newState->transitions.Count()==0) + { + if(newState!=ruleInfo->rootRuleEndState && !newState->endState) + { + automaton->DeleteState(newState); + newStates.RemoveAt(i); + } + } + } + if(deleteCount==0) + { + break; + } + } + } + +/*********************************************************************** +IsMergableCandidate +***********************************************************************/ + + bool IsMergableCandidate(State* state, Ptr ruleInfo) + { + if(state==ruleInfo->rootRuleStartState || state==ruleInfo->rootRuleEndState || state==ruleInfo->startState) + { + return false; + } + return true; + } + +/*********************************************************************** +RearrangeState +***********************************************************************/ + +#define COMPARE_SYMBOL(S1, S2)\ + if (S1 && S2)\ + {\ + if (S1->GetType() < S2->GetType()) return -1;\ + if (S1->GetType() > S2->GetType()) return 1;\ + if (S1->GetName() < S2->GetName()) return -1;\ + if (S1->GetName() > S2->GetName()) return 1;\ + }\ + else if (S1)\ + {\ + return 1;\ + }\ + else if (S2)\ + {\ + return -1;\ + }\ + + vint CompareTransitionForRearranging(Transition* t1, Transition* t2) + { + if (t1->transitionType < t2->transitionType) return -1; + if (t1->transitionType > t2->transitionType) return 1; + COMPARE_SYMBOL(t1->transitionSymbol, t2->transitionSymbol); + return 0; + } + + vint CompareActionForRearranging(Ptr a1, Ptr a2) + { + if(a1->actionTypeactionType) return -1; + if(a1->actionType>a2->actionType) return 1; + COMPARE_SYMBOL(a1->actionSource, a2->actionSource); + COMPARE_SYMBOL(a1->actionTarget, a2->actionTarget); + return 0; + } + +#undef COMPARE_SYMBOL + + void RearrangeState(State* state, SortedList& stateContentSorted) + { + if(!stateContentSorted.Contains(state)) + { + FOREACH(Transition*, transition, state->transitions) + { + CopyFrom(transition->actions, From(transition->actions).OrderBy(&CompareActionForRearranging)); + } + CopyFrom(state->transitions, From(state->transitions).OrderBy(&CompareTransitionForRearranging)); + stateContentSorted.Add(state); + } + } + +/*********************************************************************** +MoveActionsForMergingState +***********************************************************************/ + + void MoveActionsForMergingState(Transition* transition) + { + // collect all movable actions + List> movableActions; + for(vint i=transition->actions.Count()-1;i>=0;i--) + { + switch(transition->actions[i]->actionType) + { + // Using and Assign actions are not movable + case Action::Using: + case Action::Assign: + break; + default: + movableActions.Add(transition->actions[i]); + transition->actions.RemoveAt(i); + } + } + + // copy all movable actions + FOREACH(Transition*, t, transition->source->inputs) + { + CopyFrom(t->actions, movableActions, true); + } + } + +/*********************************************************************** +IsMergableBecause(Transitions|Input) +***********************************************************************/ + + bool IsMergableBecauseTransitions(State* state1, State* state2) + { + if(state1->transitions.Count()!=state2->transitions.Count()) return false; + if(state1->transitions.Count()==1 && state2->transitions.Count()==1) + { + Transition* t1=state1->transitions[0]; + Transition* t2=state2->transitions[0]; + if(CompareTransitionForRearranging(t1, t2)==0 && !Transition::IsEquivalent(t1, t2, false) && t1->target==t2->target) + { + MoveActionsForMergingState(t1); + MoveActionsForMergingState(t2); + } + } + for(vint i=0;itransitions.Count();i++) + { + Transition* t1=state1->transitions[i]; + Transition* t2=state2->transitions[i]; + if(!Transition::IsEquivalent(t1, t2, false) || t1->target!=t2->target) + { + return false; + } + } + return true; + } + + bool IsMergableBecauseInputs(State* state1, State* state2) + { + if(state1->inputs.Count()!=state2->inputs.Count()) return false; + for(vint i=0;iinputs.Count();i++) + { + Transition* t1=state1->inputs[i]; + Transition* t2=state2->inputs[i]; + if(!Transition::IsEquivalent(t1, t2, false) || t1->source!=t2->source) + { + return false; + } + } + return true; + } + +/*********************************************************************** +MergeState2ToState1Because(Transitions|Input) +***********************************************************************/ + + void MergeState2ToState1BecauseTransitions(Ptr automaton, State* state1, State* state2) + { + // modify state1's expression + state1->stateExpression+=L"\r\n"+state2->stateExpression; + + // retarget state2's input to state1 + for(vint i=state2->inputs.Count()-1;i>=0;i--) + { + Transition* t2=state2->inputs[i]; + bool add=true; + FOREACH(Transition*, t1, state1->inputs) + { + if(Transition::IsEquivalent(t1, t2, false) && t1->source==t2->source) + { + add=false; + break; + } + } + if(add) + { + state1->inputs.Add(t2); + t2->target=state1; + state2->inputs.RemoveAt(i); + } + } + + automaton->DeleteState(state2); + } + + void MergeState2ToState1BecauseInputs(Ptr automaton, State* state1, State* state2) + { + // modify state1's expression + state1->stateExpression+=L"\r\n"+state2->stateExpression; + + // retarget state2's input to state1 + for(vint i=state2->transitions.Count()-1;i>=0;i--) + { + Transition* t2=state2->transitions[i]; + bool add=true; + FOREACH(Transition*, t1, state1->transitions) + { + if(Transition::IsEquivalent(t1, t2, false) && t1->target==t2->target) + { + add=false; + break; + } + } + if(add) + { + state1->transitions.Add(t2); + t2->source=state1; + state2->transitions.RemoveAt(i); + } + } + + automaton->DeleteState(state2); + } + +/*********************************************************************** +MergeStates +***********************************************************************/ + + void MergeStates(Ptr automaton, Ptr ruleInfo, List& newStates) + { + SortedList stateContentSorted; + while(true) + { + for(vint i=0;i CreateNondeterministicPDAFromEpsilonPDA(Ptr epsilonPDA) + { + Ptr automaton=new Automaton(epsilonPDA->symbolManager); + FOREACH(ParsingDefinitionRuleDefinition*, rule, epsilonPDA->orderedRulesDefs) + { + // build new rule info + Ptr ruleInfo=epsilonPDA->ruleDefToInfoMap[rule]; + Ptr newRuleInfo=new RuleInfo; + automaton->AddRuleInfo(rule, newRuleInfo); + + newRuleInfo->rootRuleStartState=automaton->RootRuleStartState(rule); + newRuleInfo->rootRuleEndState=automaton->RootRuleEndState(rule); + newRuleInfo->startState=automaton->RuleStartState(rule); + + // build state mapping and state visiting tracking + Dictionary oldNewStateMap; + List scanningStates; + vint currentStateIndex=0; + oldNewStateMap.Add(ruleInfo->rootRuleStartState, newRuleInfo->rootRuleStartState); + oldNewStateMap.Add(ruleInfo->rootRuleEndState, newRuleInfo->rootRuleEndState); + oldNewStateMap.Add(ruleInfo->startState, newRuleInfo->startState); + // begin with a root rule state state + scanningStates.Add(ruleInfo->rootRuleStartState); + // remove epsilon transitions + RemoveEpsilonTransitions(oldNewStateMap, scanningStates, automaton); + + // stable state orders + List newStates; + CopyFrom( + newStates, + From(epsilonPDA->states) + .Where([&](Ptr s) {return oldNewStateMap.Keys().Contains(s.Obj()); }) + .Select([&](Ptr s) { return oldNewStateMap[s.Obj()]; }) + ); + DeleteUnnecessaryStates(automaton, newRuleInfo, newStates); + MergeStates(automaton, newRuleInfo, newStates); + + // there should be at east one and only one transition that is TokenBegin from rootRuleStartState + // update the startState because the startState may be deleted + newRuleInfo->startState=newRuleInfo->rootRuleStartState->transitions[0]->target; + + // record end states + FOREACH(State*, state, newStates) + { + if(state->endState) + { + newRuleInfo->endStates.Add(state); + } + } + } + return automaton; + } + } + } +} + +/*********************************************************************** +.\PARSINGDEFINITIONS.CPP +***********************************************************************/ + +namespace vl +{ + using namespace collections; + + namespace parsing + { + namespace definitions + { + +/*********************************************************************** +ParsingDefinitionType(Visitor) +***********************************************************************/ + + void ParsingDefinitionPrimitiveType::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionTokenType::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionSubType::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionArrayType::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + +/*********************************************************************** +ParsingDefinitionTypeDefinition(Visitor) +***********************************************************************/ + + void ParsingDefinitionClassMemberDefinition::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionClassDefinition::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionEnumMemberDefinition::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionEnumDefinition::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + +/*********************************************************************** +ParsingDefinitionGrammar(Visitor) +***********************************************************************/ + + void ParsingDefinitionPrimitiveGrammar::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionTextGrammar::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionSequenceGrammar::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionAlternativeGrammar::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionLoopGrammar::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionOptionalGrammar::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionCreateGrammar::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionAssignGrammar::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionUseGrammar::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + void ParsingDefinitionSetterGrammar::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + +/*********************************************************************** +ParsingDefinitionTypeWriter +***********************************************************************/ + + ParsingDefinitionAttributeWriter::ParsingDefinitionAttributeWriter(const WString& name) + { + attribute=new ParsingDefinitionAttribute; + attribute->name=name; + } + + ParsingDefinitionAttributeWriter::ParsingDefinitionAttributeWriter(const ParsingDefinitionAttributeWriter& attributeWriter) + { + attribute=attributeWriter.attribute; + } + + ParsingDefinitionAttributeWriter& ParsingDefinitionAttributeWriter::Argument(const WString& argument) + { + attribute->arguments.Add(argument); + return *this; + } + + Ptr ParsingDefinitionAttributeWriter::Attribute()const + { + return attribute; + } + + ParsingDefinitionAttributeWriter Attribute(const WString& name) + { + return ParsingDefinitionAttributeWriter(name); + } + +/*********************************************************************** +ParsingDefinitionTypeWriter +***********************************************************************/ + + ParsingDefinitionTypeWriter::ParsingDefinitionTypeWriter(Ptr internalType) + { + type=internalType; + } + + ParsingDefinitionTypeWriter::ParsingDefinitionTypeWriter(const ParsingDefinitionTypeWriter& typeWriter) + { + type=typeWriter.type; + } + + ParsingDefinitionTypeWriter::ParsingDefinitionTypeWriter(const WString& name) + { + Ptr primitiveType=new ParsingDefinitionPrimitiveType; + primitiveType->name=name; + type=primitiveType; + } + + ParsingDefinitionTypeWriter ParsingDefinitionTypeWriter::Sub(const WString& subTypeName)const + { + Ptr subType=new ParsingDefinitionSubType; + subType->parentType=type; + subType->subTypeName=subTypeName; + return ParsingDefinitionTypeWriter(subType); + } + + ParsingDefinitionTypeWriter ParsingDefinitionTypeWriter::Array()const + { + Ptr arrayType=new ParsingDefinitionArrayType; + arrayType->elementType=type; + return ParsingDefinitionTypeWriter(arrayType); + } + + Ptr ParsingDefinitionTypeWriter::Type()const + { + return type; + } + + ParsingDefinitionTypeWriter Type(const WString& name) + { + return ParsingDefinitionTypeWriter(name); + } + + ParsingDefinitionTypeWriter TokenType() + { + Ptr type=new ParsingDefinitionTokenType; + return ParsingDefinitionTypeWriter(type); + } + +/*********************************************************************** +ParsingDefinitionClassDefinitionWriter +***********************************************************************/ + + ParsingDefinitionClassDefinitionWriter::ParsingDefinitionClassDefinitionWriter(const WString& name) + { + definition=new ParsingDefinitionClassDefinition; + definition->name=name; + currentDefinition=definition; + } + + ParsingDefinitionClassDefinitionWriter::ParsingDefinitionClassDefinitionWriter(const WString& name, const ParsingDefinitionTypeWriter& parentType) + { + definition=new ParsingDefinitionClassDefinition; + definition->name=name; + definition->parentType=parentType.Type(); + currentDefinition=definition; + } + + ParsingDefinitionClassDefinitionWriter& ParsingDefinitionClassDefinitionWriter::AmbiguousType(const ParsingDefinitionTypeWriter& ambiguousType) + { + definition->ambiguousType=ambiguousType.Type(); + return *this; + } + + ParsingDefinitionClassDefinitionWriter& ParsingDefinitionClassDefinitionWriter::Member(const WString& name, const ParsingDefinitionTypeWriter& type, const WString& unescapingFunction) + { + Ptr member=new ParsingDefinitionClassMemberDefinition; + member->name=name; + member->type=type.Type(); + member->unescapingFunction=unescapingFunction; + definition->members.Add(member); + currentDefinition=member; + return *this; + } + + ParsingDefinitionClassDefinitionWriter& ParsingDefinitionClassDefinitionWriter::SubType(const ParsingDefinitionTypeDefinitionWriter& type) + { + definition->subTypes.Add(type.Definition()); + return *this; + } + + ParsingDefinitionClassDefinitionWriter& ParsingDefinitionClassDefinitionWriter::Attribute(const ParsingDefinitionAttributeWriter& attribute) + { + currentDefinition->attributes.Add(attribute.Attribute()); + return *this; + } + + Ptr ParsingDefinitionClassDefinitionWriter::Definition()const + { + return definition; + } + + ParsingDefinitionClassDefinitionWriter Class(const WString& name) + { + return ParsingDefinitionClassDefinitionWriter(name); + } + + ParsingDefinitionClassDefinitionWriter Class(const WString& name, const ParsingDefinitionTypeWriter& parentType) + { + return ParsingDefinitionClassDefinitionWriter(name, parentType); + } + +/*********************************************************************** +ParsingDefinitionEnumDefinitionWriter +***********************************************************************/ + + ParsingDefinitionEnumDefinitionWriter::ParsingDefinitionEnumDefinitionWriter(const WString& name) + { + definition=new ParsingDefinitionEnumDefinition; + definition->name=name; + currentDefinition=definition; + } + + ParsingDefinitionEnumDefinitionWriter& ParsingDefinitionEnumDefinitionWriter::Member(const WString& name) + { + Ptr member=new ParsingDefinitionEnumMemberDefinition; + member->name=name; + definition->members.Add(member); + currentDefinition=member; + return *this; + } + + ParsingDefinitionEnumDefinitionWriter& ParsingDefinitionEnumDefinitionWriter::Attribute(const ParsingDefinitionAttributeWriter& attribute) + { + currentDefinition->attributes.Add(attribute.Attribute()); + return *this; + } + + Ptr ParsingDefinitionEnumDefinitionWriter::Definition()const + { + return definition; + } + + ParsingDefinitionEnumDefinitionWriter Enum(const WString& name) + { + return ParsingDefinitionEnumDefinitionWriter(name); + } + +/*********************************************************************** +ParsingDefinitionGrammarWriter +***********************************************************************/ + + ParsingDefinitionGrammarWriter::ParsingDefinitionGrammarWriter(Ptr internalGrammar) + { + grammar=internalGrammar; + } + + ParsingDefinitionGrammarWriter::ParsingDefinitionGrammarWriter(const ParsingDefinitionGrammarWriter& grammarWriter) + { + grammar=grammarWriter.grammar; + } + + ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::operator+(const ParsingDefinitionGrammarWriter& next)const + { + Ptr sequence=new ParsingDefinitionSequenceGrammar; + sequence->first=grammar; + sequence->second=next.Grammar(); + return ParsingDefinitionGrammarWriter(sequence); + } + + ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::operator|(const ParsingDefinitionGrammarWriter& next)const + { + Ptr alternative=new ParsingDefinitionAlternativeGrammar; + alternative->first=grammar; + alternative->second=next.Grammar(); + return ParsingDefinitionGrammarWriter(alternative); + } + + ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::operator*()const + { + Ptr loop=new ParsingDefinitionLoopGrammar; + loop->grammar=grammar; + return ParsingDefinitionGrammarWriter(loop); + } + + ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::As(const ParsingDefinitionTypeWriter& type)const + { + Ptr create=new ParsingDefinitionCreateGrammar; + create->grammar=grammar; + create->type=type.Type(); + return ParsingDefinitionGrammarWriter(create); + } + + ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::operator[](const WString& memberName)const + { + Ptr assign=new ParsingDefinitionAssignGrammar; + assign->grammar=grammar; + assign->memberName=memberName; + return ParsingDefinitionGrammarWriter(assign); + } + + ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::operator!()const + { + Ptr use=new ParsingDefinitionUseGrammar; + use->grammar=grammar; + return ParsingDefinitionGrammarWriter(use); + } + + ParsingDefinitionGrammarWriter ParsingDefinitionGrammarWriter::Set(const WString& memberName, const WString& value)const + { + Ptr setter=new ParsingDefinitionSetterGrammar; + setter->grammar=grammar; + setter->memberName=memberName; + setter->value=value; + return ParsingDefinitionGrammarWriter(setter); + } + + Ptr ParsingDefinitionGrammarWriter::Grammar()const + { + return grammar; + } + + ParsingDefinitionGrammarWriter Rule(const WString& name) + { + Ptr grammar=new ParsingDefinitionPrimitiveGrammar; + grammar->name=name; + return ParsingDefinitionGrammarWriter(grammar); + } + + ParsingDefinitionGrammarWriter Text(const WString& text) + { + Ptr grammar=new ParsingDefinitionTextGrammar; + grammar->text=text; + return ParsingDefinitionGrammarWriter(grammar); + } + + ParsingDefinitionGrammarWriter Opt(const ParsingDefinitionGrammarWriter& writer) + { + Ptr grammar=new ParsingDefinitionOptionalGrammar; + grammar->grammar=writer.Grammar(); + return ParsingDefinitionGrammarWriter(grammar); + } + +/*********************************************************************** +ParsingDefinitionTokenDefinitionWriter +***********************************************************************/ + + ParsingDefinitionTokenDefinitionWriter::ParsingDefinitionTokenDefinitionWriter(ParsingDefinitionWriter& _owner, Ptr _token) + :owner(_owner) + ,token(_token) + { + } + + ParsingDefinitionTokenDefinitionWriter& ParsingDefinitionTokenDefinitionWriter::Attribute(const ParsingDefinitionAttributeWriter& attribute) + { + token->attributes.Add(attribute.Attribute()); + return *this; + } + + ParsingDefinitionWriter& ParsingDefinitionTokenDefinitionWriter::EndToken() + { + return owner; + } + +/*********************************************************************** +ParsingDefinitionRuleDefinitionWriter +***********************************************************************/ + + ParsingDefinitionRuleDefinitionWriter::ParsingDefinitionRuleDefinitionWriter(ParsingDefinitionWriter& _owner, Ptr _rule) + :owner(_owner) + ,rule(_rule) + { + } + + ParsingDefinitionRuleDefinitionWriter& ParsingDefinitionRuleDefinitionWriter::Imply(const ParsingDefinitionGrammarWriter& grammar) + { + rule->grammars.Add(grammar.Grammar()); + return *this; + } + + ParsingDefinitionRuleDefinitionWriter& ParsingDefinitionRuleDefinitionWriter::Attribute(const ParsingDefinitionAttributeWriter& attribute) + { + rule->attributes.Add(attribute.Attribute()); + return *this; + } + + ParsingDefinitionWriter& ParsingDefinitionRuleDefinitionWriter::EndRule() + { + return owner; + } + +/*********************************************************************** +ParsingDefinitionWriter +***********************************************************************/ + + ParsingDefinitionWriter::ParsingDefinitionWriter() + { + definition=new ParsingDefinition; + } + + ParsingDefinitionWriter& ParsingDefinitionWriter::Type(const ParsingDefinitionTypeDefinitionWriter& type) + { + definition->types.Add(type.Definition()); + return *this; + } + + ParsingDefinitionWriter& ParsingDefinitionWriter::Token(const WString& name, const WString& regex) + { + return TokenAtt(name, regex).EndToken(); + } + + ParsingDefinitionTokenDefinitionWriter ParsingDefinitionWriter::TokenAtt(const WString& name, const WString& regex) + { + Ptr token=new ParsingDefinitionTokenDefinition; + token->name=name; + token->regex=regex; + token->discard=false; + definition->tokens.Add(token); + return ParsingDefinitionTokenDefinitionWriter(*this, token); + } + + ParsingDefinitionWriter& ParsingDefinitionWriter::Discard(const WString& name, const WString& regex) + { + Ptr token=new ParsingDefinitionTokenDefinition; + token->name=name; + token->regex=regex; + token->discard=true; + definition->tokens.Add(token); + return *this; + } + + ParsingDefinitionRuleDefinitionWriter ParsingDefinitionWriter::Rule(const WString& name, const ParsingDefinitionTypeWriter& type) + { + Ptr rule=new ParsingDefinitionRuleDefinition; + rule->name=name; + rule->type=type.Type(); + definition->rules.Add(rule); + return ParsingDefinitionRuleDefinitionWriter(*this, rule); + } + + Ptr ParsingDefinitionWriter::Definition()const + { + return definition; + } + } + } +} + + +/*********************************************************************** +.\PARSINGDEFINITIONS_CREATEPARSERDEFINITION.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + namespace definitions + { + using namespace collections; + +/*********************************************************************** +Bootstrap +***********************************************************************/ + + Ptr CreateParserDefinition() + { + ParsingDefinitionWriter definitionWriter; + + definitionWriter + .Type( + Class(L"AttributeDef") + .Member(L"name", TokenType()) + .Attribute(Attribute(L"Semantic").Argument(L"Attribute")) + .Member(L"arguments", TokenType().Array()) + ) + .Type( + Class(L"DefBase") + .Member(L"attributes", Type(L"AttributeDef").Array()) + ) + //------------------------------------- + .Type( + Class(L"TypeObj") + ) + + .Type( + Class(L"PrimitiveTypeObj", Type(L"TypeObj")) + .Member(L"name", TokenType()) + .Attribute(Attribute(L"Semantic").Argument(L"Type")) + ) + + .Type( + Class(L"TokenTypeObj", Type(L"TypeObj")) + ) + + .Type( + Class(L"SubTypeObj", Type(L"TypeObj")) + .Member(L"parentType", Type(L"TypeObj")) + .Member(L"name", TokenType()) + .Attribute(Attribute(L"Semantic").Argument(L"Type")) + ) + + .Type( + Class(L"ArrayTypeObj", Type(L"TypeObj")) + .Member(L"elementType", Type(L"TypeObj")) + ) + //------------------------------------- + .Type( + Class(L"TypeDef", Type(L"DefBase")) + .Member(L"name", TokenType()) + .Attribute(Attribute(L"Color").Argument(L"Type")) + ) + + .Type( + Class(L"ClassMemberDef", Type(L"DefBase")) + .Member(L"type", Type(L"TypeObj")) + .Member(L"name", TokenType()) + .Member(L"unescapingFunction", TokenType()) + ) + + .Type( + Class(L"ClassTypeDef", Type(L"TypeDef")) + .Member(L"ambiguousType", Type(L"TypeObj")) + .Member(L"parentType", Type(L"TypeObj")) + .Member(L"members", Type(L"ClassMemberDef").Array()) + .Member(L"subTypes", Type(L"TypeDef").Array()) + ) + + .Type( + Class(L"EnumMemberDef", Type(L"DefBase")) + .Member(L"name", TokenType()) + ) + + .Type( + Class(L"EnumTypeDef", Type(L"TypeDef")) + .Member(L"members", Type(L"EnumMemberDef").Array()) + ) + //------------------------------------- + .Type( + Class(L"GrammarDef") + ) + + .Type( + Class(L"PrimitiveGrammarDef", Type(L"GrammarDef")) + .Member(L"name", TokenType()) + .Attribute(Attribute(L"Semantic").Argument(L"Token").Argument(L"Rule")) + ) + + .Type( + Class(L"TextGrammarDef", Type(L"GrammarDef")) + .Member(L"text", TokenType()) + .Attribute(Attribute(L"Semantic").Argument(L"Literal")) + ) + + .Type( + Class(L"SequenceGrammarDef", Type(L"GrammarDef")) + .Member(L"first", Type(L"GrammarDef")) + .Member(L"second", Type(L"GrammarDef")) + ) + + .Type( + Class(L"AlternativeGrammarDef", Type(L"GrammarDef")) + .Member(L"first", Type(L"GrammarDef")) + .Member(L"second", Type(L"GrammarDef")) + ) + + .Type( + Class(L"LoopGrammarDef", Type(L"GrammarDef")) + .Member(L"grammar", Type(L"GrammarDef")) + ) + + .Type( + Class(L"OptionalGrammarDef", Type(L"GrammarDef")) + .Member(L"grammar", Type(L"GrammarDef")) + ) + + .Type( + Class(L"CreateGrammarDef", Type(L"GrammarDef")) + .Member(L"grammar", Type(L"GrammarDef")) + .Member(L"type", Type(L"TypeObj")) + ) + + .Type( + Class(L"AssignGrammarDef", Type(L"GrammarDef")) + .Member(L"grammar", Type(L"GrammarDef")) + .Member(L"memberName", TokenType()) + .Attribute(Attribute(L"Semantic").Argument(L"Field")) + ) + + .Type( + Class(L"UseGrammarDef", Type(L"GrammarDef")) + .Member(L"grammar", Type(L"GrammarDef")) + ) + + .Type( + Class(L"SetterGrammarDef", Type(L"GrammarDef")) + .Member(L"grammar", Type(L"GrammarDef")) + .Member(L"memberName", TokenType()) + .Attribute(Attribute(L"Semantic").Argument(L"Field")) + .Member(L"value", TokenType()) + .Attribute(Attribute(L"Semantic").Argument(L"EnumValue")) + ) + //------------------------------------- + .Type( + Class(L"TokenDef", Type(L"DefBase")) + .SubType( + Enum(L"DiscardOption") + .Member(L"DiscardToken") + .Member(L"KeepToken") + ) + .Member(L"name", TokenType()) + .Attribute(Attribute(L"Color").Argument(L"Token")) + .Member(L"regex", TokenType()) + .Member(L"discard", Type(L"DiscardOption")) + ) + + .Type( + Class(L"RuleDef", Type(L"DefBase")) + .Member(L"name", TokenType()) + .Attribute(Attribute(L"Color").Argument(L"Rule")) + .Member(L"type", Type(L"TypeObj")) + .Member(L"grammars", Type(L"GrammarDef").Array()) + ) + + .Type( + Class(L"ParserDef") + .Member(L"definitions", Type(L"DefBase").Array()) + ) + //------------------------------------- + .TokenAtt(L"CLASS", L"class") + .Attribute(Attribute(L"Color").Argument(L"Keyword")) + .Attribute(Attribute(L"Candidate")) + .EndToken() + .TokenAtt(L"AMBIGUOUS", L"ambiguous") + .Attribute(Attribute(L"Color").Argument(L"Keyword")) + .Attribute(Attribute(L"Candidate")) + .EndToken() + .TokenAtt(L"ENUM", L"enum") + .Attribute(Attribute(L"Color").Argument(L"Keyword")) + .Attribute(Attribute(L"Candidate")) + .EndToken() + .TokenAtt(L"TOKEN", L"token") + .Attribute(Attribute(L"Color").Argument(L"Keyword")) + .Attribute(Attribute(L"Candidate")) + .EndToken() + .TokenAtt(L"DISCARDTOKEN", L"discardtoken") + .Attribute(Attribute(L"Color").Argument(L"Keyword")) + .Attribute(Attribute(L"Candidate")) + .EndToken() + .TokenAtt(L"RULE", L"rule") + .Attribute(Attribute(L"Color").Argument(L"Keyword")) + .Attribute(Attribute(L"Candidate")) + .EndToken() + .TokenAtt(L"AS", L"as") + .Attribute(Attribute(L"Color").Argument(L"Keyword")) + .Attribute(Attribute(L"Candidate")) + .EndToken() + .TokenAtt(L"WITH", L"with") + .Attribute(Attribute(L"Color").Argument(L"Keyword")) + .Attribute(Attribute(L"Candidate")) + .EndToken() + + .Token(L"OPEN", L"/{") + .Token(L"CLOSE", L"/}") + .Token(L"SEMICOLON", L";") + .Token(L"COLON", L":") + .Token(L"COMMA", L",") + .Token(L"DOT", L".") + .Token(L"ASSIGN", L"/=") + .Token(L"USING", L"/!") + .Token(L"OR", L"/|") + .Token(L"OPTOPEN", L"/[") + .Token(L"OPTCLOSE", L"/]") + .Token(L"PREOPEN", L"/(") + .Token(L"PRECLOSE", L"/)") + .TokenAtt(L"ATT", L"@") + .Attribute(Attribute(L"Color").Argument(L"Attribute")) + .EndToken() + + .TokenAtt(L"NAME", L"[a-zA-Z_]/w*") + .Attribute(Attribute(L"Color").Argument(L"Default")) + .Attribute(Attribute(L"ContextColor")) + .Attribute(Attribute(L"AutoComplete")) + .EndToken() + .TokenAtt(L"STRING", L"\"([^\"]|\"\")*\"") + .Attribute(Attribute(L"Color").Argument(L"String")) + .Attribute(Attribute(L"AutoComplete")) + .EndToken() + .Discard(L"SPACE", L"/s+") + .Discard(L"COMMENT", L"////[^\\r\\n]*") + //------------------------------------- + .Rule(L"Attribute", Type(L"AttributeDef")) + .Imply( + (Text(L"@") + Rule(L"NAME")[L"name"] + Text(L"(") + Opt(Rule(L"STRING")[L"arguments"] + *(Text(L",") + Rule(L"STRING")[L"arguments"])) + Text(L")")) + .As(Type(L"AttributeDef")) + ) + .EndRule() + //------------------------------------- + .Rule(L"Type", Type(L"TypeObj")) + .Imply( + (Rule(L"NAME")[L"name"]) + .As(Type(L"PrimitiveTypeObj")) + ) + .Imply( + Text(L"token") + .As(Type(L"TokenTypeObj")) + ) + .Imply( + (Rule(L"Type")[L"parentType"] + Text(L".") + Rule(L"NAME")[L"name"]) + .As(Type(L"SubTypeObj")) + ) + .Imply( + (Rule(L"Type")[L"elementType"] + Text(L"[") + Text(L"]")) + .As(Type(L"ArrayTypeObj")) + ) + .EndRule() + //------------------------------------- + .Rule(L"EnumMember", Type(L"EnumMemberDef")) + .Imply( + ( + Rule(L"NAME")[L"name"] + + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) + + Text(L",") + ) + .As(Type(L"EnumMemberDef")) + ) + .EndRule() + .Rule(L"Enum", Type(L"EnumTypeDef")) + .Imply( + ( + Text(L"enum") + Rule(L"NAME")[L"name"] + + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) + + Text(L"{") + + *(Rule(L"EnumMember")[L"members"]) + + Text(L"}") + ) + .As(Type(L"EnumTypeDef")) + ) + .EndRule() + .Rule(L"ClassMember", Type(L"ClassMemberDef")) + .Imply( + ( + Rule(L"Type")[L"type"] + Rule(L"NAME")[L"name"] + + Opt(Text(L"(") + Rule(L"NAME")[L"unescapingFunction"] + Text(L")")) + + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) + + Text(L";") + ) + .As(Type(L"ClassMemberDef")) + ) + .EndRule() + .Rule(L"Class", Type(L"ClassTypeDef")) + .Imply( + ( + Text(L"class") + Rule(L"NAME")[L"name"] + + Opt(Text(L"ambiguous") + Text(L"(") + Rule(L"Type")[L"ambiguousType"] + Text(L")")) + + Opt(Text(L":") + Rule(L"Type")[L"parentType"]) + + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) + + Text(L"{") + + *(Rule(L"ClassMember")[L"members"] | Rule(L"TypeDecl")[L"subTypes"]) + + Text(L"}") + ) + .As(Type(L"ClassTypeDef")) + ) + .EndRule() + .Rule(L"TypeDecl", Type(L"TypeDef")) + .Imply(!Rule(L"Enum") | !Rule(L"Class")) + .EndRule() + //------------------------------------ + .Rule(L"PrimitiveGrammar", Type(L"GrammarDef")) + .Imply( + (Rule(L"NAME")[L"name"]) + .As(Type(L"PrimitiveGrammarDef")) + ) + .Imply( + (Rule(L"STRING")[L"text"]) + .As(Type(L"TextGrammarDef")) + ) + .Imply( + (Rule(L"PrimitiveGrammar")[L"grammar"] + Text(L":") + Rule(L"NAME")[L"memberName"]) + .As(Type(L"AssignGrammarDef")) + ) + .Imply( + (Text(L"!") + Rule(L"PrimitiveGrammar")[L"grammar"]) + .As(Type(L"UseGrammarDef")) + ) + .Imply( + (Text(L"[") + Rule(L"Grammar")[L"grammar"] + Text(L"]")) + .As(Type(L"OptionalGrammarDef")) + ) + .Imply( + (Text(L"{") + Rule(L"Grammar")[L"grammar"] + Text(L"}")) + .As(Type(L"LoopGrammarDef")) + ) + .Imply( + (Text(L"(") + !Rule(L"Grammar") + Text(L")")) + ) + .EndRule() + + .Rule(L"SequenceGrammar", Type(L"GrammarDef")) + .Imply( + !Rule(L"PrimitiveGrammar") + ) + .Imply( + (Rule(L"SequenceGrammar")[L"first"] + Rule(L"PrimitiveGrammar")[L"second"]) + .As(Type(L"SequenceGrammarDef")) + ) + .EndRule() + + .Rule(L"AlternativeGrammar", Type(L"GrammarDef")) + .Imply( + !Rule(L"SequenceGrammar") + ) + .Imply( + (Rule(L"AlternativeGrammar")[L"first"] + Text(L"|") + Rule(L"SequenceGrammar")[L"second"]) + .As(Type(L"AlternativeGrammarDef")) + ) + .EndRule() + + .Rule(L"Grammar", Type(L"GrammarDef")) + .Imply( + !Rule(L"AlternativeGrammar") + ) + .Imply( + (Rule(L"Grammar")[L"grammar"] + Text(L"as") + Rule(L"Type")[L"type"]) + .As(Type(L"CreateGrammarDef")) + ) + .Imply( + (Rule(L"Grammar")[L"grammar"] + Text(L"with") + Text(L"{") + Rule(L"NAME")[L"memberName"] + Text(L"=") + Rule(L"STRING")[L"value"] + Text(L"}")) + .As(Type(L"SetterGrammarDef")) + ) + .EndRule() + //------------------------------------ + .Rule(L"TokenDecl", Type(L"TokenDef")) + .Imply( + ( + Text(L"token") + Rule(L"NAME")[L"name"] + + Text(L"=") + Rule(L"STRING")[L"regex"] + + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) + + Text(L";") + ) + .As(Type(L"TokenDef")) + .Set(L"discard", L"KeepToken") + ) + .Imply( + (Text(L"discardtoken") + Rule(L"NAME")[L"name"] + Text(L"=") + Rule(L"STRING")[L"regex"] + Text(L";")) + .As(Type(L"TokenDef")) + .Set(L"discard", L"DiscardToken") + ) + .EndRule() + + .Rule(L"RuleDecl", Type(L"RuleDef")) + .Imply( + ( + Text(L"rule") + Rule(L"Type")[L"type"] + Rule(L"NAME")[L"name"] + + Opt(Rule(L"Attribute")[L"attributes"] + *(Text(L",") + Rule(L"Attribute")[L"attributes"])) + + *(Text(L"=") + Rule(L"Grammar")[L"grammars"]) + + Text(L";") + ) + .As(Type(L"RuleDef")) + ) + .EndRule() + //------------------------------------ + .Rule(L"ParserDecl", Type(L"ParserDef")) + .Imply( + ( + *( + Rule(L"TypeDecl")[L"definitions"] | + Rule(L"TokenDecl")[L"definitions"] | + Rule(L"RuleDecl")[L"definitions"] + ) + +( + Rule(L"TypeDecl")[L"definitions"] | + Rule(L"TokenDecl")[L"definitions"] | + Rule(L"RuleDecl")[L"definitions"] + ) + ) + .As(Type(L"ParserDef")) + ) + .EndRule() + ; + + return definitionWriter.Definition(); + } + + WString DeserializeString(const WString& value) + { + if(value.Length()>=2 && value[0]==L'"' && value[value.Length()-1]==L'"') + { + Array chars(value.Length()); + memset(&chars[0], 0, chars.Count()*sizeof(wchar_t)); + const wchar_t* reading=value.Buffer()+1; + wchar_t* writing=&chars[0]; + while(*reading) + { + if(*reading!=L'"') + { + *writing++=*reading++; + } + else if(reading[1]!=L'"') + { + break; + } + else + { + *writing++=L'"'; + reading+=2; + } + } + return &chars[0]; + } + return L""; + } + + WString DeserializeString(Ptr token) + { + const WString& value=token->GetValue(); + return DeserializeString(value); + } + + void SetName(WString& target, Ptr node) + { + Ptr token=node.Cast(); + if(token) + { + target=token->GetValue(); + } + } + + void SetText(WString& target, Ptr node) + { + Ptr token=node.Cast(); + if(token) + { + target=DeserializeString(token); + } + } + + extern Ptr Deserialize(Ptr node); + + template + void SetArray(List>& target, Ptr node) + { + Ptr source=node.Cast(); + if(source) + { + for(vint i=0;iCount();i++) + { + target.Add(Deserialize(source->GetItem(i).Cast()).Cast()); + } + } + } + + void SetArray(List& target, Ptr node) + { + Ptr source=node.Cast(); + if(source) + { + for(vint i=0;iCount();i++) + { + WString name; + SetName(name, source->GetItem(i)); + target.Add(name); + } + } + } + + template + void SetMember(Ptr& target, Ptr node) + { + Ptr source=node.Cast(); + if(source) + { + target=Deserialize(source).Cast(); + } + } + + Ptr Deserialize(Ptr node) + { + if(!node) + { + return 0; + } + else if(node->GetType()==L"AttributeDef") + { + Ptr target=new ParsingDefinitionAttribute; + SetName(target->name, node->GetMember(L"name")); + SetArray(target->arguments, node->GetMember(L"arguments")); + for(vint i=0;iarguments.Count();i++) + { + target->arguments[i]=DeserializeString(target->arguments[i]); + } + return target; + } + else if(node->GetType()==L"PrimitiveTypeObj") + { + Ptr target=new ParsingDefinitionPrimitiveType; + SetName(target->name, node->GetMember(L"name")); + return target; + } + else if(node->GetType()==L"TokenTypeObj") + { + Ptr target=new ParsingDefinitionTokenType; + return target; + } + else if(node->GetType()==L"SubTypeObj") + { + Ptr target=new ParsingDefinitionSubType; + SetMember(target->parentType, node->GetMember(L"parentType")); + SetName(target->subTypeName, node->GetMember(L"name")); + return target; + } + else if(node->GetType()==L"ArrayTypeObj") + { + Ptr target=new ParsingDefinitionArrayType; + SetMember(target->elementType, node->GetMember(L"elementType")); + return target; + } + else if(node->GetType()==L"ClassMemberDef") + { + Ptr target=new ParsingDefinitionClassMemberDefinition; + SetArray(target->attributes, node->GetMember(L"attributes")); + SetMember(target->type, node->GetMember(L"type")); + SetName(target->name, node->GetMember(L"name")); + SetName(target->unescapingFunction, node->GetMember(L"unescapingFunction")); + return target; + } + else if(node->GetType()==L"ClassTypeDef") + { + Ptr target=new ParsingDefinitionClassDefinition; + SetArray(target->attributes, node->GetMember(L"attributes")); + SetMember(target->ambiguousType, node->GetMember(L"ambiguousType")); + SetMember(target->parentType, node->GetMember(L"parentType")); + SetName(target->name, node->GetMember(L"name")); + SetArray(target->members, node->GetMember(L"members")); + SetArray(target->subTypes, node->GetMember(L"subTypes")); + return target; + } + else if(node->GetType()==L"EnumMemberDef") + { + Ptr target=new ParsingDefinitionEnumMemberDefinition; + SetArray(target->attributes, node->GetMember(L"attributes")); + SetName(target->name, node->GetMember(L"name")); + return target; + } + else if(node->GetType()==L"EnumTypeDef") + { + Ptr target=new ParsingDefinitionEnumDefinition; + SetArray(target->attributes, node->GetMember(L"attributes")); + SetName(target->name, node->GetMember(L"name")); + SetArray(target->members, node->GetMember(L"members")); + return target; + } + else if(node->GetType()==L"PrimitiveGrammarDef") + { + Ptr target=new ParsingDefinitionPrimitiveGrammar; + SetName(target->name, node->GetMember(L"name")); + return target; + } + else if(node->GetType()==L"TextGrammarDef") + { + Ptr target=new ParsingDefinitionTextGrammar; + SetText(target->text, node->GetMember(L"text")); + return target; + } + else if(node->GetType()==L"SequenceGrammarDef") + { + Ptr target=new ParsingDefinitionSequenceGrammar; + SetMember(target->first, node->GetMember(L"first")); + SetMember(target->second, node->GetMember(L"second")); + return target; + } + else if(node->GetType()==L"AlternativeGrammarDef") + { + Ptr target=new ParsingDefinitionAlternativeGrammar; + SetMember(target->first, node->GetMember(L"first")); + SetMember(target->second, node->GetMember(L"second")); + return target; + } + else if(node->GetType()==L"LoopGrammarDef") + { + Ptr target=new ParsingDefinitionLoopGrammar; + SetMember(target->grammar, node->GetMember(L"grammar")); + return target; + } + else if(node->GetType()==L"OptionalGrammarDef") + { + Ptr target=new ParsingDefinitionOptionalGrammar; + SetMember(target->grammar, node->GetMember(L"grammar")); + return target; + } + else if(node->GetType()==L"CreateGrammarDef") + { + Ptr target=new ParsingDefinitionCreateGrammar; + SetMember(target->grammar, node->GetMember(L"grammar")); + SetMember(target->type, node->GetMember(L"type")); + return target; + } + else if(node->GetType()==L"AssignGrammarDef") + { + Ptr target=new ParsingDefinitionAssignGrammar; + SetMember(target->grammar, node->GetMember(L"grammar")); + SetName(target->memberName, node->GetMember(L"memberName")); + return target; + } + else if(node->GetType()==L"UseGrammarDef") + { + Ptr target=new ParsingDefinitionUseGrammar; + SetMember(target->grammar, node->GetMember(L"grammar")); + return target; + } + else if(node->GetType()==L"SetterGrammarDef") + { + Ptr target=new ParsingDefinitionSetterGrammar; + SetMember(target->grammar, node->GetMember(L"grammar")); + SetName(target->memberName, node->GetMember(L"memberName")); + SetText(target->value, node->GetMember(L"value")); + return target; + } + else if(node->GetType()==L"TokenDef") + { + Ptr target=new ParsingDefinitionTokenDefinition; + SetArray(target->attributes, node->GetMember(L"attributes")); + SetName(target->name, node->GetMember(L"name")); + SetText(target->regex, node->GetMember(L"regex")); + + Ptr token=node->GetMember(L"discard").Cast(); + target->discard=(token && token->GetValue()==L"DiscardToken"); + return target; + } + else if(node->GetType()==L"RuleDef") + { + Ptr target=new ParsingDefinitionRuleDefinition; + SetArray(target->attributes, node->GetMember(L"attributes")); + SetName(target->name, node->GetMember(L"name")); + SetMember(target->type, node->GetMember(L"type")); + SetArray(target->grammars, node->GetMember(L"grammars")); + return target; + } + else if(node->GetType()==L"ParserDef") + { + Ptr target=new ParsingDefinition; + Ptr defs=node->GetMember(L"definitions").Cast(); + if(defs) + { + vint count=defs->Count(); + for(vint i=0;i def=defs->GetItem(i).Cast(); + Ptr defObject=Deserialize(def); + if(Ptr defType=defObject.Cast()) + { + target->types.Add(defType); + } + else if(Ptr defToken=defObject.Cast()) + { + target->tokens.Add(defToken); + } + else if(Ptr defRule=defObject.Cast()) + { + target->rules.Add(defRule); + } + } + } + return target; + } + else + { + return 0; + } + } + + Ptr DeserializeDefinition(Ptr node) + { + return Deserialize(node.Cast()).Cast(); + } + } + } +} + + +/*********************************************************************** +.\PARSINGLOGGING.CPP +***********************************************************************/ + +namespace vl +{ + using namespace stream; + using namespace collections; + + namespace parsing + { + namespace definitions + { + void LogString(const WString& input, TextWriter& writer) + { + writer.WriteChar(L'\"'); + for(int i=0;iattributes.Count();i++) + { + ParsingDefinitionAttribute* att=definition->attributes[i].Obj(); + if(i>0) writer.WriteChar(L','); + writer.WriteString(L" @"); + writer.WriteString(att->name); + writer.WriteChar(L'('); + for(vint j=0;jarguments.Count();j++) + { + if(j>0) writer.WriteString(L", "); + LogString(att->arguments[j], writer); + } + writer.WriteChar(L')'); + } + } + +/*********************************************************************** +Logger (ParsingDefinitionType) +***********************************************************************/ + + class ParsingDefinitionTypeLogger : public Object, public ParsingDefinitionType::IVisitor + { + public: + TextWriter& writer; + + ParsingDefinitionTypeLogger(TextWriter& _writer) + :writer(_writer) + { + } + + static void LogInternal(ParsingDefinitionType* type, TextWriter& writer) + { + ParsingDefinitionTypeLogger visitor(writer); + type->Accept(&visitor); + } + + void Visit(ParsingDefinitionPrimitiveType* node)override + { + writer.WriteString(node->name); + } + + void Visit(ParsingDefinitionTokenType* node)override + { + writer.WriteString(L"token"); + } + + void Visit(ParsingDefinitionSubType* node)override + { + LogInternal(node->parentType.Obj(), writer); + writer.WriteString(L"."); + writer.WriteString(node->subTypeName); + } + + void Visit(ParsingDefinitionArrayType* node)override + { + LogInternal(node->elementType.Obj(), writer); + writer.WriteString(L"[]"); + } + }; + + void Log(ParsingDefinitionType* type, TextWriter& writer) + { + ParsingDefinitionTypeLogger::LogInternal(type, writer); + } + +/*********************************************************************** +Logger (ParsingDefinitionTypeDefinition) +***********************************************************************/ + + class ParsingDefinitionTypeDefinitionLogger : public Object, public ParsingDefinitionTypeDefinition::IVisitor + { + public: + WString prefix; + TextWriter& writer; + + static void LogInternal(ParsingDefinitionTypeDefinition* definition, const WString& prefix, TextWriter& writer) + { + ParsingDefinitionTypeDefinitionLogger visitor(prefix, writer); + definition->Accept(&visitor); + } + + ParsingDefinitionTypeDefinitionLogger(const WString& _prefix, TextWriter& _writer) + :prefix(_prefix) + ,writer(_writer) + { + } + + void Visit(ParsingDefinitionClassMemberDefinition* node)override + { + writer.WriteString(prefix); + Log(node->type.Obj(), writer); + writer.WriteString(L" "); + writer.WriteString(node->name); + if(node->unescapingFunction!=L"") + { + writer.WriteString(L" ("); + writer.WriteString(node->unescapingFunction); + writer.WriteString(L")"); + } + LogAttributeList(node, writer); + writer.WriteLine(L";"); + } + + void Visit(ParsingDefinitionClassDefinition* node)override + { + writer.WriteString(prefix); + writer.WriteString(L"class "); + writer.WriteString(node->name); + if(node->ambiguousType) + { + writer.WriteString(L" ambiguous("); + Log(node->ambiguousType.Obj(), writer); + writer.WriteString(L")"); + } + if(node->parentType) + { + writer.WriteString(L" : "); + Log(node->parentType.Obj(), writer); + } + LogAttributeList(node, writer); + writer.WriteLine(L""); + + writer.WriteString(prefix); + writer.WriteLine(L"{"); + + for(int i=0;isubTypes.Count();i++) + { + LogInternal(node->subTypes[i].Obj(), prefix+L" ", writer); + writer.WriteLine(L""); + } + + for(int i=0;imembers.Count();i++) + { + LogInternal(node->members[i].Obj(), prefix+L" ", writer); + } + + writer.WriteString(prefix); + writer.WriteLine(L"}"); + } + + void Visit(ParsingDefinitionEnumMemberDefinition* node)override + { + writer.WriteString(prefix); + writer.WriteString(node->name); + LogAttributeList(node, writer); + writer.WriteLine(L","); + } + + void Visit(ParsingDefinitionEnumDefinition* node)override + { + writer.WriteString(prefix); + writer.WriteString(L"enum "); + writer.WriteString(node->name); + LogAttributeList(node, writer); + writer.WriteLine(L""); + + writer.WriteString(prefix); + writer.WriteLine(L"{"); + + for(int i=0;imembers.Count();i++) + { + LogInternal(node->members[i].Obj(), prefix+L" ", writer); + } + + writer.WriteString(prefix); + writer.WriteLine(L"}"); + } + }; + + void Log(ParsingDefinitionTypeDefinition* definition, const WString& prefix, TextWriter& writer) + { + ParsingDefinitionTypeDefinitionLogger::LogInternal(definition, prefix, writer); + } + +/*********************************************************************** +Logger (ParsingDefinitionGrammar) +***********************************************************************/ + +#define PRIORITY_NONE 0 +#define PRIORITY_CREATE 1 +#define PRIORITY_SET 1 +#define PRIORITY_ALTERNATIVE 2 +#define PRIORITY_SEQUENCE 3 +#define PRIORITY_USE 4 +#define PRIORITY_ASSIGN 4 + + class ParsingDefinitionGrammarLogger : public Object, public ParsingDefinitionGrammar::IVisitor + { + public: + TextWriter& writer; + int parentPriority; + ParsingDefinitionGrammar* stateNode; + bool beforeNode; + + ParsingDefinitionGrammarLogger(TextWriter& _writer, int _parentPriority, ParsingDefinitionGrammar* _stateNode, bool _beforeNode) + :writer(_writer) + ,parentPriority(_parentPriority) + ,stateNode(_stateNode) + ,beforeNode(_beforeNode) + { + } + + static void LogInternal(ParsingDefinitionGrammar* grammar, int parentPriority, ParsingDefinitionGrammar* stateNode, bool beforeNode, TextWriter& writer) + { + if(grammar==stateNode && beforeNode) + { + writer.WriteString(L"@"); + } + ParsingDefinitionGrammarLogger visitor(writer, parentPriority, stateNode, beforeNode); + grammar->Accept(&visitor); + if(grammar==stateNode && !beforeNode) + { + writer.WriteString(L"@"); + } + } + + void LogInternal(ParsingDefinitionGrammar* grammar, int parentPriority, TextWriter& writer) + { + LogInternal(grammar, parentPriority, stateNode, beforeNode, writer); + } + + void Visit(ParsingDefinitionPrimitiveGrammar* node)override + { + writer.WriteString(node->name); + } + + void Visit(ParsingDefinitionTextGrammar* node)override + { + LogString(node->text, writer); + } + + void Visit(ParsingDefinitionSequenceGrammar* node)override + { + int priority=PRIORITY_SEQUENCE; + if(parentPriority>priority) + { + writer.WriteString(L"( "); + } + LogInternal(node->first.Obj(), priority, writer); + writer.WriteString(L" "); + LogInternal(node->second.Obj(), priority, writer); + if(parentPriority>priority) + { + writer.WriteString(L" )"); + } + } + + void Visit(ParsingDefinitionAlternativeGrammar* node)override + { + int priority=PRIORITY_ALTERNATIVE; + if(parentPriority>priority) + { + writer.WriteString(L"( "); + } + LogInternal(node->first.Obj(), priority, writer); + writer.WriteString(L" | "); + LogInternal(node->second.Obj(), priority, writer); + if(parentPriority>priority) + { + writer.WriteString(L" )"); + } + } + + void Visit(ParsingDefinitionLoopGrammar* node)override + { + writer.WriteString(L"{ "); + LogInternal(node->grammar.Obj(), PRIORITY_NONE, writer); + writer.WriteString(L" }"); + } + + void Visit(ParsingDefinitionOptionalGrammar* node)override + { + writer.WriteString(L"[ "); + LogInternal(node->grammar.Obj(), PRIORITY_NONE, writer); + writer.WriteString(L" ]"); + } + + void Visit(ParsingDefinitionCreateGrammar* node)override + { + int priority=PRIORITY_CREATE; + if(parentPriority>priority) + { + writer.WriteString(L"( "); + } + LogInternal(node->grammar.Obj(), priority, writer); + writer.WriteString(L" as "); + Log(node->type.Obj(), writer); + if(parentPriority>priority) + { + writer.WriteString(L" )"); + } + } + + void Visit(ParsingDefinitionAssignGrammar* node)override + { + int priority=PRIORITY_ASSIGN; + if(parentPriority>priority) + { + writer.WriteString(L"( "); + } + LogInternal(node->grammar.Obj(), priority, writer); + writer.WriteString(L" : "); + writer.WriteString(node->memberName); + if(parentPriority>priority) + { + writer.WriteString(L" )"); + } + } + + void Visit(ParsingDefinitionUseGrammar* node)override + { + int priority=PRIORITY_USE; + if(parentPriority>priority) + { + writer.WriteString(L"( "); + } + writer.WriteString(L"!"); + LogInternal(node->grammar.Obj(), priority, writer); + if(parentPriority>priority) + { + writer.WriteString(L" )"); + } + } + + void Visit(ParsingDefinitionSetterGrammar* node)override + { + int priority=PRIORITY_SET; + if(parentPriority>priority) + { + writer.WriteString(L"( "); + } + LogInternal(node->grammar.Obj(), priority, writer); + writer.WriteString(L" with { "); + writer.WriteString(node->memberName); + writer.WriteString(L" = "); + LogString(node->value, writer); + writer.WriteString(L" }"); + if(parentPriority>priority) + { + writer.WriteString(L" )"); + } + } + }; + + void Log(ParsingDefinitionGrammar* grammar, TextWriter& writer) + { + ParsingDefinitionGrammarLogger::LogInternal(grammar, PRIORITY_NONE, 0, true, writer); + } + + void Log(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode, TextWriter& writer) + { + ParsingDefinitionGrammarLogger::LogInternal(grammar, PRIORITY_NONE, stateNode, beforeNode, writer); + } + +#undef PRIORITY_NONE +#undef PRIORITY_CREATE +#undef PRIORITY_SET +#undef PRIORITY_ALTERNATIVE +#undef PRIORITY_SEQUENCE +#undef PRIORITY_USE +#undef PRIORITY_ASSIGN + +/*********************************************************************** +FindAppropriateGrammarState +***********************************************************************/ + + class FindAppropriateGrammarStateVisitor : public Object, public ParsingDefinitionGrammar::IVisitor + { + public: + ParsingDefinitionGrammar* stateNode; + bool beforeNode; + ParsingDefinitionGrammar* beforeReference; + ParsingDefinitionGrammar* afterReference; + ParsingDefinitionGrammar* result; + + FindAppropriateGrammarStateVisitor(ParsingDefinitionGrammar* _stateNode, bool _beforeNode, ParsingDefinitionGrammar* _beforeReference, ParsingDefinitionGrammar* _afterReference) + :stateNode(_stateNode) + ,beforeNode(_beforeNode) + ,beforeReference(_beforeReference) + ,afterReference(_afterReference) + ,result(0) + { + } + + static ParsingDefinitionGrammar* Find(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode, ParsingDefinitionGrammar* beforeReference, ParsingDefinitionGrammar* afterReference) + { + if(grammar==stateNode) + { + return + beforeNode + ?(beforeReference?beforeReference:stateNode) + :(afterReference?afterReference:stateNode) + ; + } + else + { + FindAppropriateGrammarStateVisitor visitor(stateNode, beforeNode, beforeReference, afterReference); + grammar->Accept(&visitor); + return visitor.result; + } + } + + void Visit(ParsingDefinitionPrimitiveGrammar* node)override + { + } + + void Visit(ParsingDefinitionTextGrammar* node)override + { + } + + void Visit(ParsingDefinitionSequenceGrammar* node)override + { + result=Find(node->first.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), 0); + if(!result) + { + result=Find(node->second.Obj(), stateNode, beforeNode, 0, (afterReference?afterReference:node)); + } + } + + void Visit(ParsingDefinitionAlternativeGrammar* node)override + { + result=Find(node->first.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); + if(!result) + { + result=Find(node->second.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); + } + } + + void Visit(ParsingDefinitionLoopGrammar* node)override + { + result=Find(node->grammar.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); + } + + void Visit(ParsingDefinitionOptionalGrammar* node)override + { + result=Find(node->grammar.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); + } + + void Visit(ParsingDefinitionCreateGrammar* node)override + { + result=Find(node->grammar.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); + } + + void Visit(ParsingDefinitionAssignGrammar* node)override + { + result=Find(node->grammar.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); + } + + void Visit(ParsingDefinitionUseGrammar* node)override + { + result=Find(node->grammar.Obj(), stateNode, beforeNode, (beforeReference?beforeReference:node), (afterReference?afterReference:node)); + } + + void Visit(ParsingDefinitionSetterGrammar* node)override + { + result=Find(node->grammar.Obj(), stateNode, beforeNode, beforeReference, afterReference); + } + }; + +/*********************************************************************** +Logger (ParsingDefinitionGrammar) +***********************************************************************/ + + WString TypeToString(ParsingDefinitionType* type) + { + return GenerateToStream([&](StreamWriter& writer) + { + Log(type, writer); + }, 64); + } + + WString GrammarToString(ParsingDefinitionGrammar* grammar) + { + return GrammarStateToString(grammar, 0, true); + } + + WString GrammarStateToString(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode) + { + return GenerateToStream([&](StreamWriter& writer) + { + Log(grammar, stateNode, beforeNode, writer); + }, 64); + } + + ParsingDefinitionGrammar* FindAppropriateGrammarState(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode) + { + return FindAppropriateGrammarStateVisitor::Find(grammar, stateNode, beforeNode, 0, 0); + } + + void Log(Ptr definition, TextWriter& writer) + { + FOREACH(Ptr, type, definition->types) + { + Log(type.Obj(), L"", writer); + writer.WriteLine(L""); + } + + FOREACH(Ptr, token, definition->tokens) + { + if(token->discard) + { + writer.WriteString(L"discardtoken "); + } + else + { + writer.WriteString(L"token "); + } + writer.WriteString(token->name); + writer.WriteString(L" = "); + LogString(token->regex, writer); + LogAttributeList(token.Obj(), writer); + writer.WriteLine(L";"); + } + writer.WriteLine(L""); + + FOREACH(Ptr, rule, definition->rules) + { + writer.WriteString(L"rule "); + Log(rule->type.Obj(), writer); + writer.WriteString(L" "); + writer.WriteString(rule->name); + LogAttributeList(rule.Obj(), writer); + writer.WriteLine(L""); + + FOREACH(Ptr, grammar, rule->grammars) + { + writer.WriteString(L" = "); + Log(grammar.Obj(), writer); + writer.WriteLine(L""); + } + writer.WriteLine(L" ;"); + } + } + } + + namespace analyzing + { +/*********************************************************************** +Logger (Automaton) +***********************************************************************/ + + void LogTransitionSymbol(ParsingSymbol* symbol, stream::TextWriter& writer) + { + if(symbol->GetType()==ParsingSymbol::TokenDef) + { + writer.WriteString(L"["); + writer.WriteString(symbol->GetName()); + + WString regex=symbol->GetDescriptorString(); + if(regex_internal::IsRegexEscapedLiteralString(regex)) + { + writer.WriteString(L" "); + definitions::LogString(regex_internal::UnescapeTextForRegex(regex), writer); + } + writer.WriteString(L"]"); + } + else + { + writer.WriteString(L"<"); + writer.WriteString(symbol->GetName()); + writer.WriteString(L">"); + } + } + + void Log(Ptr automaton, stream::TextWriter& writer) + { + FOREACH(Ptr, ruleInfo, automaton->ruleInfos) + { + writer.WriteString(L"Root Rule Start: "); + writer.WriteLine(ruleInfo->rootRuleStartState->stateName); + + writer.WriteString(L"Root Rule End: "); + writer.WriteLine(ruleInfo->rootRuleEndState->stateName); + + writer.WriteString(L"Rule Start: "); + writer.WriteLine(ruleInfo->startState->stateName); + + FOREACH(State*, endState, ruleInfo->endStates) + { + writer.WriteString(L"Rule End: "); + writer.WriteLine(endState->stateName); + } + + writer.WriteLine(L""); + } + + List states; + FOREACH(Ptr, ruleInfo, automaton->ruleInfos) + { + vint currentState=states.Count(); + states.Add(ruleInfo->rootRuleStartState); + + while(currentStatestateExpression); + if(state->endState) + { + writer.WriteString(L"END STATE "); + } + else + { + writer.WriteString(L"STATE "); + } + writer.WriteLine(state->stateName); + + FOREACH(Transition*, transition, state->transitions) + { + if(!states.Contains(transition->target)) + { + states.Add(transition->target); + } + switch(transition->transitionType) + { + case Transition::Epsilon: + writer.WriteString(L" EPSILON"); + break; + case Transition::TokenBegin: + writer.WriteString(L" TOKEN-BEGIN"); + break; + case Transition::TokenFinish: + writer.WriteString(L" TOKEN-FINISH"); + break; + case Transition::NormalReduce: + writer.WriteString(L" NORMAL-REDUCE"); + break; + case Transition::LeftRecursiveReduce: + writer.WriteString(L" LREC-REDUCE"); + break; + case Transition::Symbol: + { + writer.WriteString(L" "); + if(transition->transitionSymbol) + { + LogTransitionSymbol(transition->transitionSymbol, writer); + } + } + break; + } + switch(transition->stackOperationType) + { + case Transition::None: + writer.WriteString(L" => "); + break; + case Transition::ShiftReduceCompacted: + writer.WriteString(L" [SHIFT-REDUCE-COMPACTED] => "); + break; + case Transition::LeftRecursive: + writer.WriteString(L" [LEFT-RECURSIVE] => "); + break; + } + writer.WriteLine(transition->target->stateName); + + FOREACH(Ptr, action, transition->actions) + { + switch(action->actionType) + { + case Action::Create: + writer.WriteString(L" CREATE "); + break; + case Action::Assign: + writer.WriteString(L" ASSIGN "); + break; + case Action::Using: + writer.WriteString(L" USING "); + break; + case Action::Setter: + writer.WriteString(L" SET "); + break; + case Action::Shift: + writer.WriteString(L" SHIFT "); + break; + case Action::Reduce: + writer.WriteString(L" REDUCE "); + break; + case Action::LeftRecursiveReduce: + writer.WriteString(L" LR-REDUCE "); + break; + } + + if(action->shiftReduceSource && action->shiftReduceTarget) + { + writer.WriteString(L"["); + writer.WriteString(action->shiftReduceSource->stateName); + writer.WriteString(L" => "); + writer.WriteString(action->shiftReduceTarget->stateName); + writer.WriteString(L"] "); + } + + if(action->actionSource) + { + writer.WriteString(action->actionSource->GetName()); + } + if(action->actionTarget) + { + writer.WriteString(L" => "); + writer.WriteString(action->actionTarget->GetName()); + } + writer.WriteLine(L""); + } + } + writer.WriteLine(L""); + } + writer.WriteLine(L"--------------------------------"); + } + } + } + + namespace tabling + { +/*********************************************************************** +Logger (ParsingTable) +***********************************************************************/ + + void LogAttributeList(Ptr table, vint attributeIndex, const WString& prefix, stream::TextWriter& writer) + { + if(attributeIndex!=-1) + { + Ptr atts=table->GetAttributeInfo(attributeIndex); + FOREACH(Ptr, att, atts->attributes) + { + writer.WriteString(prefix); + writer.WriteString(L"@"); + writer.WriteString(att->name); + writer.WriteString(L"("); + for(vint i=0;iarguments.Count();i++) + { + if(i>0) writer.WriteString(L", "); + definitions::LogString(att->arguments[i], writer); + } + writer.WriteLine(L")"); + } + } + } + + void Log(Ptr table, stream::TextWriter& writer) + { + vint rows=table->GetStateCount()+1; + vint columns=table->GetTokenCount()+1; + Array stringTable(rows*columns); + + stringTable[0]=L""; + + for(vint row=0; rowGetStateCount();row++) + { + stringTable[(row+1)*columns]=itow(row)+L": "+table->GetStateInfo(row).stateName; + } + + for(vint column=0;columnGetTokenCount();column++) + { + WString content= + column==ParsingTable::TokenBegin?L"0: $TokenBegin": + column==ParsingTable::TokenFinish?L"1: $TokenFinish": + column==ParsingTable::NormalReduce?L"2: $NormalReduce": + column==ParsingTable::LeftRecursiveReduce?L"3: $LeftRecursiveReduce": + itow(column)+L": "+table->GetTokenInfo(column).name+L"\r\n "+table->GetTokenInfo(column).regex; + stringTable[column+1]=content; + } + + for(vint row=0; rowGetStateCount();row++) + { + for(vint column=0;columnGetTokenCount();column++) + { + Ptr bag=table->GetTransitionBag(row, column); + if(bag) + { + WString content; + FOREACH(Ptr, item, bag->transitionItems) + { + if(content!=L"") content+=L"\r\n"; + content+=itow(item->targetState); + FOREACH_INDEXER(vint, state, index, item->stackPattern) + { + content+=(index==0?L" : ":L", "); + content+=itow(state); + } + content+=L"\r\n"; + + FOREACH(Ptr, lookAhead, item->lookAheads) + { + content+=L" "; + FOREACH_INDEXER(vint, token, index, lookAhead->tokens) + { + content+=(index==0?L"> ":L", "); + content+=itow(token); + } + content+=L"\r\n"; + } + + content+=L" "; + FOREACH(ParsingTable::Instruction, ins, item->instructions) + { + switch(ins.instructionType) + { + case ParsingTable::Instruction::Create: + content+=L"C"; + break; + case ParsingTable::Instruction::Using: + content+=L"U"; + break; + case ParsingTable::Instruction::Assign: + content+=L"A"; + break; + case ParsingTable::Instruction::Item: + content+=L"I"; + break; + case ParsingTable::Instruction::Setter: + content+=L"S"; + break; + case ParsingTable::Instruction::Shift: + content+=L"[+"+itow(ins.stateParameter)+L"]"; + break; + case ParsingTable::Instruction::Reduce: + content+=L"[-"+itow(ins.stateParameter)+L"]"; + break; + case ParsingTable::Instruction::LeftRecursiveReduce: + content+=L"[!"+itow(ins.stateParameter)+L"]"; + break; + } + } + } + stringTable[(row+1)*columns+(column+1)]=content; + } + } + } + + writer.WriteLine(L"Target-State : Stack-Pattern ..."); + writer.WriteLine(L"> Look-Ahead ..."); + writer.WriteLine(L"C: Create"); + writer.WriteLine(L"U: Using"); + writer.WriteLine(L"A: Assign"); + writer.WriteLine(L"I: Item"); + writer.WriteLine(L"S: Setter"); + writer.WriteLine(L"[+s]: Shift[push s]"); + writer.WriteLine(L"[-s]: Reduce[pop s]"); + writer.WriteLine(L"[!s]: Left-Recursive-Reduce[fake s]"); + writer.WriteLine(L""); + + for(vint i=0;iGetRuleCount();i++) + { + const ParsingTable::RuleInfo& ruleInfo=table->GetRuleInfo(i); + writer.WriteString(ruleInfo.name); + writer.WriteChar(L'<'); + writer.WriteString(ruleInfo.type); + if(ruleInfo.ambiguousType!=L"") + { + writer.WriteString(L", "); + writer.WriteString(ruleInfo.ambiguousType); + } + writer.WriteString(L">: "); + writer.WriteString(itow(ruleInfo.rootStartState)); + writer.WriteChar(L'['); + writer.WriteString(table->GetStateInfo(ruleInfo.rootStartState).stateName); + writer.WriteChar(L']'); + writer.WriteLine(L""); + } + + writer.WriteMonospacedEnglishTable(stringTable, rows, columns); + writer.WriteLine(L""); + + writer.WriteLine(L"Metadata(Tokens):"); + for(vint i=0;iGetTokenCount();i++) + { + const ParsingTable::TokenInfo& info=table->GetTokenInfo(i); + writer.WriteString(L" "); + writer.WriteString(info.name); + writer.WriteString(L"="); + writer.WriteLine(info.regex); + LogAttributeList(table, info.attributeIndex, L" ", writer); + } + writer.WriteLine(L""); + + writer.WriteLine(L"Metadata(Rules):"); + for(vint i=0;iGetRuleCount();i++) + { + const ParsingTable::RuleInfo& info=table->GetRuleInfo(i); + writer.WriteString(L" "); + writer.WriteLine(info.name); + LogAttributeList(table, info.attributeIndex, L" ", writer); + } + writer.WriteLine(L""); + + writer.WriteLine(L"Metadata(Classes):"); + for(vint i=0;iGetTreeTypeInfoCount();i++) + { + const ParsingTable::TreeTypeInfo& info=table->GetTreeTypeInfo(i); + writer.WriteString(L" "); + writer.WriteLine(info.type); + LogAttributeList(table, info.attributeIndex, L" ", writer); + } + writer.WriteLine(L""); + + writer.WriteLine(L"Metadata(Class Members):"); + for(vint i=0;iGetTreeFieldInfoCount();i++) + { + const ParsingTable::TreeFieldInfo& info=table->GetTreeFieldInfo(i); + writer.WriteString(L" "); + writer.WriteString(info.type); + writer.WriteString(L"."); + writer.WriteLine(info.field); + LogAttributeList(table, info.attributeIndex, L" ", writer); + } + writer.WriteLine(L""); + } + } + +/*********************************************************************** +Logger (ParsingTreeNode) +***********************************************************************/ + + class LogParsingTreeNodeVisitor : public Object, public ParsingTreeNode::IVisitor + { + protected: + TextWriter& writer; + WString prefix; + WString originalInput; + public: + LogParsingTreeNodeVisitor(TextWriter& _writer, const WString& _originalInput, const WString& _prefix) + :writer(_writer) + ,prefix(_prefix) + ,originalInput(_originalInput) + { + } + + void Write(ParsingTreeNode* node) + { + if(node) + { + node->Accept(this); + } + else + { + writer.WriteString(L"null"); + } + } + + void WriteInput(ParsingTreeNode* node) + { + if(originalInput!=L"") + { + ParsingTextRange range=node->GetCodeRange(); + if(range.start.index!=ParsingTextPos::UnknownValue && range.end.index!=ParsingTextPos::UnknownValue) + { + vint start=range.start.index; + vint length=range.end.index-start+1; + if(length>0) + { + writer.WriteString(L" // ["); + writer.WriteString(originalInput.Sub(start, length)); + writer.WriteString(L"]"); + } + } + } + } + + void Visit(ParsingTreeToken* node) + { + writer.WriteChar(L'['); + writer.WriteString(node->GetValue()); + writer.WriteChar(L']'); + WriteInput(node); + } + + void Visit(ParsingTreeObject* node) + { + WString oldPrefix=prefix; + writer.WriteString(node->GetType()); + writer.WriteString(L" <"); + for(vint i=0;iGetCreatorRules().Count();i++) + { + if(i!=0) writer.WriteString(L", "); + writer.WriteString(node->GetCreatorRules()[i]); + } + writer.WriteString(L"> {"); + WriteInput(node); + writer.WriteLine(L""); + prefix+=L" "; + for(vint i=0;iGetMembers().Count();i++) + { + writer.WriteString(prefix); + writer.WriteString(node->GetMembers().Keys().Get(i)); + writer.WriteString(L" = "); + Write(node->GetMembers().Values().Get(i).Obj()); + writer.WriteLine(L""); + } + prefix=oldPrefix; + writer.WriteString(prefix); + writer.WriteString(L"}"); + } + + void Visit(ParsingTreeArray* node) + { + WString oldPrefix=prefix; + writer.WriteString(node->GetElementType()); + writer.WriteString(L"[] {"); + WriteInput(node); + writer.WriteLine(L""); + prefix+=L" "; + for(vint i=0;iCount();i++) + { + writer.WriteString(prefix); + Write(node->GetItem(i).Obj()); + writer.WriteLine(L","); + } + prefix=oldPrefix; + writer.WriteString(prefix); + writer.WriteString(L"}"); + } + }; + + void Log(ParsingTreeNode* node, const WString& originalInput, stream::TextWriter& writer, const WString& prefix) + { + writer.WriteString(prefix); + LogParsingTreeNodeVisitor visitor(writer, originalInput, prefix); + node->Accept(&visitor); + } + } +} + +/*********************************************************************** +.\PARSINGSTATE.CPP +***********************************************************************/ + +#if defined(VCZH_GCC) && defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnull-dereference" +#endif + +namespace vl +{ + namespace parsing + { + namespace tabling + { + using namespace collections; + using namespace regex; + +/*********************************************************************** +ParsingTokenWalker::LookAheadEnumerator +***********************************************************************/ + + ParsingTokenWalker::LookAheadEnumerator::LookAheadEnumerator(const ParsingTokenWalker* _walker, vint _currentToken) + :walker(_walker) + ,firstToken(_currentToken) + ,currentToken(_currentToken) + ,currentValue(-1) + ,index(-1) + { + } + + ParsingTokenWalker::LookAheadEnumerator::LookAheadEnumerator(const LookAheadEnumerator& _enumerator) + :walker(_enumerator.walker) + ,firstToken(_enumerator.firstToken) + ,currentToken(_enumerator.currentToken) + ,currentValue(_enumerator.currentValue) + ,index(_enumerator.index) + { + } + + IEnumerator* ParsingTokenWalker::LookAheadEnumerator::Clone()const + { + return new LookAheadEnumerator(*this); + } + + const vint& ParsingTokenWalker::LookAheadEnumerator::Current()const + { + return currentValue; + } + + vint ParsingTokenWalker::LookAheadEnumerator::Index()const + { + return index; + } + + bool ParsingTokenWalker::LookAheadEnumerator::Next() + { + vint newToken=walker->GetNextIndex(currentToken); + if(newToken==-3) return false; + currentToken=newToken; + index++; + currentValue=walker->GetTableTokenIndex(currentToken); + return true; + } + + void ParsingTokenWalker::LookAheadEnumerator::Reset() + { + currentToken=firstToken; + currentValue=-1; + index=-1; + } + +/*********************************************************************** +ParsingTokenWalker::TokenLookAhead +***********************************************************************/ + + ParsingTokenWalker::TokenLookAhead::TokenLookAhead(const ParsingTokenWalker* _walker) + :walker(_walker) + { + } + + collections::IEnumerator* ParsingTokenWalker::TokenLookAhead::CreateEnumerator()const + { + return new LookAheadEnumerator(walker, walker->currentToken); + } + +/*********************************************************************** +ParsingTokenWalker::ReduceLookAhead +***********************************************************************/ + + ParsingTokenWalker::ReduceLookAhead::ReduceLookAhead(const ParsingTokenWalker* _walker) + :walker(_walker) + { + } + + collections::IEnumerator* ParsingTokenWalker::ReduceLookAhead::CreateEnumerator()const + { + return new LookAheadEnumerator(walker, walker->currentToken - 1); + } + +/*********************************************************************** +ParsingTokenWalker +***********************************************************************/ + + vint ParsingTokenWalker::GetNextIndex(vint index)const + { + if(index==-2) + { + return -1; + } + else if(-1<=index && indexIsInputToken(tokens[index].token)) + { + break; + } + else + { + index++; + } + } + return index; + } + else + { + return -3; + } + } + + vint ParsingTokenWalker::GetTableTokenIndex(vint index)const + { + if(index==-1) + { + return ParsingTable::TokenBegin; + } + else if(index==tokens.Count()) + { + return ParsingTable::TokenFinish; + } + else if(0<=index && indexGetTableTokenIndex(tokens[index].token); + } + else + { + return -1; + } + } + + ParsingTokenWalker::ParsingTokenWalker(collections::List& _tokens, Ptr _table) + :tokens(_tokens) + ,table(_table) + ,currentToken(-2) + , tokenLookAhead(this) + , reduceLookAhead(this) + { + } + + ParsingTokenWalker::~ParsingTokenWalker() + { + } + + const collections::IEnumerable& ParsingTokenWalker::GetTokenLookahead()const + { + return tokenLookAhead; + } + + const collections::IEnumerable& ParsingTokenWalker::GetReduceLookahead()const + { + return reduceLookAhead; + } + + void ParsingTokenWalker::Reset() + { + currentToken=-2; + } + + bool ParsingTokenWalker::Move() + { + currentToken=GetNextIndex(currentToken); + return currentToken!=-3; + } + + vint ParsingTokenWalker::GetTableTokenIndex()const + { + return GetTableTokenIndex(currentToken); + } + + regex::RegexToken* ParsingTokenWalker::GetRegexToken()const + { + vint index=GetTokenIndexInStream(); + return index==-1?0:&tokens[index]; + } + + vint ParsingTokenWalker::GetTokenIndexInStream()const + { + if(0<=currentToken && currentToken _table, vint codeIndex) + :input(_input.Buffer()) + ,table(_table) + ,parsingRuleStartState(-1) + { + CopyFrom(tokens, table->GetLexer().Parse(input, codeIndex)); + walker=new ParsingTokenWalker(tokens, table); + } + + ParsingState::~ParsingState() + { + } + + const WString& ParsingState::GetInput() + { + return input; + } + + Ptr ParsingState::GetTable() + { + return table; + } + + const collections::List& ParsingState::GetTokens() + { + return tokens; + } + + regex::RegexToken* ParsingState::GetToken(vint index) + { + if(index<=0) + { + index=0; + } + else if(index>tokens.Count()) + { + index=tokens.Count(); + } + + return index==tokens.Count()?0:&tokens[index]; + } + + vint ParsingState::Reset(const WString& rule) + { + const ParsingTable::RuleInfo& info=table->GetRuleInfo(rule); + auto infoExists = &info; + if(infoExists) + { + walker->Reset(); + walker->Move(); + stateGroup=new StateGroup(info); + parsingRule=rule; + parsingRuleStartState=info.rootStartState; + return stateGroup->currentState; + } + return -1; + } + + WString ParsingState::GetParsingRule() + { + return parsingRule; + } + + vint ParsingState::GetParsingRuleStartState() + { + return parsingRuleStartState; + } + + vint ParsingState::GetCurrentToken() + { + return walker->GetTableTokenIndex()==ParsingTable::TokenFinish + ?tokens.Count() + :walker->GetTokenIndexInStream(); + } + + vint ParsingState::GetCurrentTableTokenIndex() + { + return walker->GetTableTokenIndex(); + } + + const collections::List& ParsingState::GetStateStack() + { + return stateGroup->stateStack; + } + + vint ParsingState::GetCurrentState() + { + return stateGroup->currentState; + } + + void ParsingState::SkipCurrentToken() + { + walker->Move(); + } + + bool ParsingState::TestTransitionItemInFuture(vint tableTokenIndex, Future* future, ParsingTable::TransitionItem* item, const collections::IEnumerable* lookAheadTokens) + { + bool passLookAheadTest=true; + if(item->lookAheads.Count()>0 && lookAheadTokens) + { + passLookAheadTest=false; + FOREACH(Ptr, info, item->lookAheads) + { + vint index=0; + FOREACH(vint, token, *lookAheadTokens) + { + if(info->tokens[index]!=token) + { + break; + } + index++; + if(index>=info->tokens.Count()) + { + break; + } + } + if(index==info->tokens.Count()) + { + passLookAheadTest=true; + break; + } + } + } + if(!passLookAheadTest) + { + return false; + } + + vint availableStackDepth=stateGroup->stateStack.Count()-future->reduceStateCount; + vint totalStackDepth=stateGroup->stateStack.Count()-future->reduceStateCount+future->shiftStates.Count(); + if(item->stackPattern.Count()<=totalStackDepth) + { + if(tableTokenIndex!=ParsingTable::TokenFinish || item->stackPattern.Count()==totalStackDepth) + { + bool match=true; + for(vint j=0;jstackPattern.Count();j++) + { + vint state= + jshiftStates.Count() + ?future->shiftStates[future->shiftStates.Count()-1-j] + :stateGroup->stateStack[availableStackDepth-1-(j-future->shiftStates.Count())] + ; + if(item->stackPattern[j]!=state) + { + match=false; + } + } + if(match) + { + return true; + } + } + } + return false; + } + + ParsingTable::TransitionItem* ParsingState::MatchTokenInFuture(vint tableTokenIndex, Future* future, const collections::IEnumerable* lookAheadTokens) + { + ParsingTable::TransitionBag* bag=table->GetTransitionBag(future->currentState, tableTokenIndex).Obj(); + if(bag) + { + for(vint i=0;itransitionItems.Count();i++) + { + ParsingTable::TransitionItem* item=bag->transitionItems[i].Obj(); + if(TestTransitionItemInFuture(tableTokenIndex, future, item, lookAheadTokens)) + { + return item; + } + } + } + return 0; + } + + ParsingTable::TransitionItem* ParsingState::MatchToken(vint tableTokenIndex, const collections::IEnumerable* lookAheadTokens) + { + Future future; + future.currentState=stateGroup->currentState; + return MatchTokenInFuture(tableTokenIndex, &future, lookAheadTokens); + } + + void ParsingState::RunTransitionInFuture(ParsingTable::TransitionItem* transition, Future* previous, Future* now) + { + if(previous) + { + now->reduceStateCount=previous->reduceStateCount; + CopyFrom(now->shiftStates, previous->shiftStates); + } + else + { + now->reduceStateCount=0; + now->shiftStates.Clear(); + } + now->currentState=transition->targetState; + now->selectedToken=transition->token; + now->selectedItem=transition; + now->previous=previous; + now->next=0; + + for(vint j=0;jinstructions.Count();j++) + { + ParsingTable::Instruction& ins=transition->instructions[j]; + switch(ins.instructionType) + { + case ParsingTable::Instruction::Shift: + { + now->shiftStates.Add(ins.stateParameter); + } + break; + case ParsingTable::Instruction::Reduce: + { + if(now->shiftStates.Count()==0) + { + now->reduceStateCount++; + } + else + { + now->shiftStates.RemoveAt(now->shiftStates.Count()-1); + } + } + break; + default:; + } + } + } + + ParsingState::TransitionResult ParsingState::RunTransition(ParsingTable::TransitionItem* transition, regex::RegexToken* regexToken, vint instructionBegin, vint instructionCount, bool lastPart) + { + if(regexToken) + { + if(!stateGroup->shiftToken) + { + stateGroup->shiftToken=regexToken; + stateGroup->reduceToken=regexToken; + } + } + if(transition->token>=ParsingTable::UserTokenStart) + { + if(stateGroup->tokenSequenceIndex==0) + { + stateGroup->shiftTokenStack.Add(stateGroup->shiftToken); + } + stateGroup->tokenSequenceIndex++; + } + + TransitionResult result; + result.tableTokenIndex=transition->token; + result.token=regexToken; + result.tokenIndexInStream=regexToken?walker->GetTokenIndexInStream():-1; + result.tableStateSource=stateGroup->currentState; + result.tableStateTarget=transition->targetState; + result.transition=transition; + result.instructionBegin=instructionBegin; + result.instructionCount=instructionCount; + + for(vint j=instructionBegin;jinstructions[j]; + switch(ins.instructionType) + { + case ParsingTable::Instruction::Shift: + { + stateGroup->stateStack.Add(ins.stateParameter); + + stateGroup->shiftTokenStack.Add(stateGroup->shiftToken); + stateGroup->shiftToken=regexToken; + stateGroup->reduceToken=regexToken; + } + break; + case ParsingTable::Instruction::Reduce: + { + stateGroup->stateStack.RemoveAt(stateGroup->stateStack.Count()-1); + + result.AddShiftReduceRange(stateGroup->shiftToken, stateGroup->reduceToken); + stateGroup->shiftToken=stateGroup->shiftTokenStack[stateGroup->shiftTokenStack.Count()-1]; + stateGroup->shiftTokenStack.RemoveAt(stateGroup->shiftTokenStack.Count()-1); + } + break; + case ParsingTable::Instruction::LeftRecursiveReduce: + { + result.AddShiftReduceRange(stateGroup->shiftToken, stateGroup->reduceToken); + if(regexToken) + { + stateGroup->reduceToken=regexToken; + } + } + break; + default:; + } + } + + if(regexToken) + { + stateGroup->reduceToken=regexToken; + } + + if(transition->token==ParsingTable::TokenFinish && lastPart) + { + stateGroup->shiftToken=stateGroup->shiftTokenStack[stateGroup->shiftTokenStack.Count()-1]; + stateGroup->shiftTokenStack.RemoveAt(stateGroup->shiftTokenStack.Count()-1); + result.AddShiftReduceRange(stateGroup->shiftToken, stateGroup->reduceToken); + } + + stateGroup->currentState=transition->targetState; + return result; + } + + ParsingState::TransitionResult ParsingState::RunTransition(ParsingTable::TransitionItem* transition, regex::RegexToken* regexToken) + { + return RunTransition(transition, regexToken, 0, transition->instructions.Count(), true); + } + + bool ParsingState::ReadTokenInFuture(vint tableTokenIndex, Future* previous, Future* now, const collections::IEnumerable* lookAheadTokens) + { + ParsingTable::TransitionItem* selectedItem=0; + if(previous) + { + selectedItem=MatchTokenInFuture(tableTokenIndex, previous, lookAheadTokens); + } + else + { + selectedItem=MatchToken(tableTokenIndex, lookAheadTokens); + } + + if(!selectedItem) + { + return false; + } + RunTransitionInFuture(selectedItem, previous, now); + return true; + } + + ParsingState::TransitionResult ParsingState::ReadToken(vint tableTokenIndex, regex::RegexToken* regexToken, const collections::IEnumerable* lookAheadTokens) + { + ParsingTable::TransitionItem* item=MatchToken(tableTokenIndex, lookAheadTokens); + if(item) + { + return RunTransition(item, regexToken); + } + return TransitionResult(); + } + + ParsingState::TransitionResult ParsingState::ReadToken() + { + if(walker->GetTableTokenIndex()==-1) + { + return TransitionResult(); + } + vint token=walker->GetTableTokenIndex(); + RegexToken* regexToken=walker->GetRegexToken(); + + bool tryReduce=false; + TransitionResult result=ReadToken(token, regexToken, &walker->GetTokenLookahead()); + if(!result) + { + result=ReadToken(ParsingTable::LeftRecursiveReduce, 0, &walker->GetReduceLookahead()); + tryReduce=true; + } + if(!result) + { + result=ReadToken(ParsingTable::NormalReduce, 0, &walker->GetReduceLookahead()); + tryReduce=true; + } + + if(result && !tryReduce) + { + walker->Move(); + } + return result; + } + + bool ParsingState::TestExplore(vint tableTokenIndex, Future* previous) + { + Future fakePrevious; + fakePrevious.currentState=stateGroup->currentState; + Future* realPrevious=previous?previous:&fakePrevious; + + ParsingTable::TransitionBag* bag=table->GetTransitionBag(realPrevious->currentState, tableTokenIndex).Obj(); + if(bag) + { + for(vint i=0;itransitionItems.Count();i++) + { + ParsingTable::TransitionItem* item=bag->transitionItems[i].Obj(); + if(TestTransitionItemInFuture(tableTokenIndex, realPrevious, item, 0)) + { + return true; + } + } + } + return false; + } + + bool ParsingState::Explore(vint tableTokenIndex, Future* previous, collections::List& possibilities) + { + Future fakePrevious; + fakePrevious.currentState=stateGroup->currentState; + Future* realPrevious=previous?previous:&fakePrevious; + + ParsingTable::TransitionBag* bag=table->GetTransitionBag(realPrevious->currentState, tableTokenIndex).Obj(); + bool successful = false; + if(bag) + { + for(vint i=0;itransitionItems.Count();i++) + { + ParsingTable::TransitionItem* item=bag->transitionItems[i].Obj(); + if(TestTransitionItemInFuture(tableTokenIndex, realPrevious, item, 0)) + { + Future* now=new Future; + RunTransitionInFuture(item, previous, now); + possibilities.Add(now); + successful = true; + } + } + } + return successful; + } + + bool ParsingState::ExploreStep(collections::List& previousFutures, vint start, vint count, collections::List& possibilities) + { + if(walker->GetTableTokenIndex()==-1) + { + return false; + } + vint token = walker->GetTableTokenIndex(); + RegexToken* regexToken = walker->GetRegexToken(); + vint oldPossibilitiesCount = possibilities.Count(); + for (vint i = 0; iselectedRegexToken = regexToken; + } + return true; + } + + bool ParsingState::ExploreNormalReduce(collections::List& previousFutures, vint start, vint count, collections::List& possibilities) + { + if(walker->GetTableTokenIndex()==-1) + { + return false; + } + vint oldPossibilitiesCount = possibilities.Count(); + for(vint i=0;i oldPossibilitiesCount; + } + + bool ParsingState::ExploreLeftRecursiveReduce(collections::List& previousFutures, vint start, vint count, collections::List& possibilities) + { + if(walker->GetTableTokenIndex()==-1) + { + return false; + } + vint oldPossibilitiesCount = possibilities.Count(); + for(vint i=0;i oldPossibilitiesCount; + } + + ParsingState::Future* ParsingState::ExploreCreateRootFuture() + { + Future* future=new Future; + future->currentState=stateGroup->currentState; + return future; + } + + Ptr ParsingState::TakeSnapshot() + { + return new StateGroup(*stateGroup.Obj()); + } + + void ParsingState::RestoreSnapshot(Ptr group) + { + stateGroup=new StateGroup(*group.Obj()); + } + +/*********************************************************************** +ParsingTreeBuilder +***********************************************************************/ + + ParsingTreeBuilder::ParsingTreeBuilder() + :processingAmbiguityBranch(false) + ,ambiguityBranchSharedNodeCount(0) + { + } + + ParsingTreeBuilder::~ParsingTreeBuilder() + { + } + + void ParsingTreeBuilder::Reset() + { + createdObject=0; + operationTarget=new ParsingTreeObject(); + nodeStack.Clear(); + + processingAmbiguityBranch=false; + ambiguityBranchCreatedObject=0; + ambiguityBranchOperationTarget=0; + ambiguityBranchSharedNodeCount=0; + ambiguityBranchNodeStack.Clear(); + ambiguityNodes.Clear(); + } + + bool ParsingTreeBuilder::Run(const ParsingState::TransitionResult& result) + { + if(!operationTarget) + { + return false; + } + + switch(result.transitionType) + { + case ParsingState::TransitionResult::AmbiguityBegin: + { + if(processingAmbiguityBranch) return false; + processingAmbiguityBranch=true; + if(createdObject) + { + ambiguityBranchCreatedObject=createdObject->Clone(); + } + else + { + ambiguityBranchCreatedObject=0; + } + ambiguityBranchOperationTarget=operationTarget->Clone().Cast(); + ambiguityBranchNodeStack.Clear(); + ambiguityBranchSharedNodeCount=nodeStack.Count()-result.ambiguityAffectedStackNodeCount+1; + for(vint i=ambiguityBranchSharedNodeCount;iClone().Cast()); + } + ambiguityNodes.Clear(); + } + break; + case ParsingState::TransitionResult::AmbiguityBranch: + { + if(!processingAmbiguityBranch) return false; + if(nodeStack.Count()!=ambiguityBranchSharedNodeCount) return false; + ambiguityNodes.Add(operationTarget); + if(ambiguityBranchCreatedObject) + { + createdObject=ambiguityBranchCreatedObject->Clone(); + } + else + { + createdObject=0; + } + operationTarget=ambiguityBranchOperationTarget->Clone().Cast(); + for(vint i=0;iClone().Cast()); + } + } + break; + case ParsingState::TransitionResult::AmbiguityEnd: + { + if(!processingAmbiguityBranch) return false; + if(nodeStack.Count()!=ambiguityBranchSharedNodeCount) return false; + ambiguityNodes.Add(operationTarget); + + processingAmbiguityBranch=false; + createdObject=0; + ambiguityBranchCreatedObject=0; + ambiguityBranchOperationTarget=0; + ambiguityBranchSharedNodeCount=0; + ambiguityBranchNodeStack.Clear(); + + { + Ptr ambiguousNode=new ParsingTreeObject(result.ambiguityNodeType, operationTarget->GetCodeRange()); + Ptr items=new ParsingTreeArray(L"", operationTarget->GetCodeRange()); + FOREACH(Ptr, node, ambiguityNodes) + { + items->AddItem(node); + } + ambiguousNode->SetMember(L"items", items); + operationTarget=ambiguousNode; + } + ambiguityNodes.Clear(); + } + break; + case ParsingState::TransitionResult::ExecuteInstructions: + { + vint shiftReduceRangeIndex=0; + for(vint j=result.instructionBegin;jinstructions[j]; + switch(ins.instructionType) + { + case ParsingTable::Instruction::Create: + { + if(operationTarget->GetType()!=L"") + { + return false; + } + operationTarget->SetType(ins.nameParameter); + operationTarget->GetCreatorRules().Add(ins.creatorRule); + } + break; + case ParsingTable::Instruction::Using: + { + if(operationTarget->GetType()!=L"" || !createdObject) + { + return false; + } + Ptr obj=createdObject.Cast(); + if(!obj) + { + return false; + } + for(vint i=0;iGetMembers().Count();i++) + { + WString name=operationTarget->GetMembers().Keys().Get(i); + Ptr value=operationTarget->GetMembers().Values().Get(i); + obj->SetMember(name, value); + } + operationTarget=obj; + operationTarget->GetCreatorRules().Add(ins.creatorRule); + createdObject=0; + } + break; + case ParsingTable::Instruction::Assign: + { + if(!createdObject) + { + Ptr value; + if(result.token==0) + { + value=new ParsingTreeToken(L"", result.tokenIndexInStream); + } + else + { + value=new ParsingTreeToken(WString(result.token->reading, result.token->length), result.tokenIndexInStream); + value->SetCodeRange(ParsingTextRange(result.token, result.token)); + } + operationTarget->SetMember(ins.nameParameter, value); + } + else + { + operationTarget->SetMember(ins.nameParameter, createdObject); + createdObject=0; + } + } + break; + case ParsingTable::Instruction::Item: + { + Ptr arr=operationTarget->GetMember(ins.nameParameter).Cast();; + if(!arr) + { + arr=new ParsingTreeArray(); + operationTarget->SetMember(ins.nameParameter, arr); + } + ParsingTextRange arrRange=arr->GetCodeRange(); + ParsingTextRange itemRange; + if(!createdObject) + { + Ptr value; + if(result.token==0) + { + value=new ParsingTreeToken(L"", result.tokenIndexInStream); + } + else + { + value=new ParsingTreeToken(WString(result.token->reading, result.token->length), result.tokenIndexInStream); + value->SetCodeRange(ParsingTextRange(result.token, result.token)); + itemRange=value->GetCodeRange(); + } + arr->AddItem(value); + } + else + { + arr->AddItem(createdObject); + itemRange=createdObject->GetCodeRange(); + createdObject=0; + } + + if(arrRange.start.index==ParsingTextPos::UnknownValue || itemRange.startarrRange.end) + { + arrRange.end=itemRange.end; + } + arr->SetCodeRange(arrRange); + } + break; + case ParsingTable::Instruction::Setter: + { + Ptr value=new ParsingTreeToken(ins.value, -1); + operationTarget->SetMember(ins.nameParameter, value); + } + break; + case ParsingTable::Instruction::Shift: + { + nodeStack.Add(operationTarget); + operationTarget=new ParsingTreeObject(); + createdObject=0; + } + break; + case ParsingTable::Instruction::Reduce: + { + if(nodeStack.Count()==0) + { + return false; + } + createdObject=operationTarget; + operationTarget=nodeStack[nodeStack.Count()-1]; + nodeStack.RemoveAt(nodeStack.Count()-1); + + if(result.shiftReduceRanges) + { + ParsingState::ShiftReduceRange tokenRange=result.shiftReduceRanges->Get(shiftReduceRangeIndex++); + if(tokenRange.shiftToken && tokenRange.reduceToken) + { + ParsingTextRange codeRange(tokenRange.shiftToken, tokenRange.reduceToken); + createdObject->SetCodeRange(codeRange); + } + } + } + break; + case ParsingTable::Instruction::LeftRecursiveReduce: + { + createdObject=operationTarget; + operationTarget=new ParsingTreeObject(); + + if(result.shiftReduceRanges) + { + ParsingState::ShiftReduceRange tokenRange=result.shiftReduceRanges->Get(shiftReduceRangeIndex++); + if(tokenRange.shiftToken && tokenRange.reduceToken) + { + ParsingTextRange codeRange(tokenRange.shiftToken, tokenRange.reduceToken); + createdObject->SetCodeRange(codeRange); + } + } + } + break; + default: + return false; + } + } + + if(result.tableTokenIndex==ParsingTable::TokenFinish && !processingAmbiguityBranch) + { + if(result.shiftReduceRanges) + { + ParsingState::ShiftReduceRange tokenRange=result.shiftReduceRanges->Get(shiftReduceRangeIndex++); + if(tokenRange.shiftToken && tokenRange.reduceToken) + { + ParsingTextRange codeRange(tokenRange.shiftToken, tokenRange.reduceToken); + operationTarget->SetCodeRange(codeRange); + } + } + } + } + break; + default: + return false; + } + + return true; + } + + bool ParsingTreeBuilder::GetProcessingAmbiguityBranch() + { + return processingAmbiguityBranch; + } + + Ptr ParsingTreeBuilder::GetNode()const + { + if(nodeStack.Count()==0) + { + return operationTarget; + } + else + { + return 0; + } + } + +/*********************************************************************** +ParsingTransitionCollector +***********************************************************************/ + + ParsingTransitionCollector::ParsingTransitionCollector() + :ambiguityBegin(-1) + { + } + + ParsingTransitionCollector::~ParsingTransitionCollector() + { + } + + void ParsingTransitionCollector::Reset() + { + ambiguityBegin=-1; + transitions.Clear(); + ambiguityBeginToEnds.Clear(); + ambiguityBeginToBranches.Clear(); + ambiguityBranchToBegins.Clear(); + } + + bool ParsingTransitionCollector::Run(const ParsingState::TransitionResult& result) + { + vint index=transitions.Count(); + switch(result.transitionType) + { + case ParsingState::TransitionResult::AmbiguityBegin: + if(ambiguityBegin!=-1) return false; + ambiguityBegin=index; + break; + case ParsingState::TransitionResult::AmbiguityBranch: + { + if(ambiguityBegin==-1) return false; + ambiguityBeginToBranches.Add(ambiguityBegin, index); + ambiguityBranchToBegins.Add(index, ambiguityBegin); + } + break; + case ParsingState::TransitionResult::AmbiguityEnd: + { + if(ambiguityBegin==-1) return false; + ambiguityBeginToEnds.Add(ambiguityBegin, index); + ambiguityBegin=-1; + } + break; + case ParsingState::TransitionResult::ExecuteInstructions: + break; + default: + return false; + } + + transitions.Add(result); + return true; + } + + bool ParsingTransitionCollector::GetProcessingAmbiguityBranch() + { + return ambiguityBegin!=-1; + } + + const ParsingTransitionCollector::TransitionResultList& ParsingTransitionCollector::GetTransitions()const + { + return transitions; + } + + vint ParsingTransitionCollector::GetAmbiguityEndFromBegin(vint transitionIndex)const + { + vint index=ambiguityBeginToEnds.Keys().IndexOf(transitionIndex); + return index==-1?-1:ambiguityBeginToEnds.Values()[index]; + } + + const collections::List& ParsingTransitionCollector::GetAmbiguityBranchesFromBegin(vint transitionIndex)const + { + vint index=ambiguityBeginToBranches.Keys().IndexOf(transitionIndex); + return index==-1?*(collections::List*)0:ambiguityBeginToBranches.GetByIndex(index); + } + + vint ParsingTransitionCollector::GetAmbiguityBeginFromBranch(vint transitionIndex)const + { + vint index=ambiguityBranchToBegins.Keys().IndexOf(transitionIndex); + return index==-1?-1:ambiguityBranchToBegins.Values()[index]; + } + } + } +} + +#if defined(VCZH_GCC) && defined(__clang__) +#pragma clang diagnostic pop +#endif + + +/*********************************************************************** +.\PARSINGTABLE.CPP +***********************************************************************/ + +namespace vl +{ + namespace stream + { + namespace internal + { + using namespace vl::parsing::tabling; + +/*********************************************************************** +ParsingTable (Serialization) +***********************************************************************/ + + BEGIN_SERIALIZATION(ParsingTable::AttributeInfo) + SERIALIZE(name) + SERIALIZE(arguments) + END_SERIALIZATION + + BEGIN_SERIALIZATION(ParsingTable::AttributeInfoList) + SERIALIZE(attributes) + END_SERIALIZATION + + BEGIN_SERIALIZATION(ParsingTable::TreeTypeInfo) + SERIALIZE(type) + SERIALIZE(attributeIndex) + END_SERIALIZATION + + BEGIN_SERIALIZATION(ParsingTable::TreeFieldInfo) + SERIALIZE(type) + SERIALIZE(field) + SERIALIZE(attributeIndex) + END_SERIALIZATION + + BEGIN_SERIALIZATION(ParsingTable::TokenInfo) + SERIALIZE(name) + SERIALIZE(regex) + SERIALIZE(regexTokenIndex) + SERIALIZE(attributeIndex) + END_SERIALIZATION + + BEGIN_SERIALIZATION(ParsingTable::StateInfo) + SERIALIZE(ruleName) + SERIALIZE(stateName) + SERIALIZE(stateExpression) + END_SERIALIZATION + + BEGIN_SERIALIZATION(ParsingTable::RuleInfo) + SERIALIZE(name) + SERIALIZE(type) + SERIALIZE(ambiguousType) + SERIALIZE(rootStartState) + SERIALIZE(attributeIndex) + END_SERIALIZATION + + BEGIN_SERIALIZATION(ParsingTable::Instruction) + SERIALIZE(instructionType) + SERIALIZE(stateParameter) + SERIALIZE(nameParameter) + SERIALIZE(value) + SERIALIZE(creatorRule) + END_SERIALIZATION + + SERIALIZE_ENUM(ParsingTable::Instruction::InstructionType) + + BEGIN_SERIALIZATION(ParsingTable::LookAheadInfo) + SERIALIZE(tokens) + SERIALIZE(state) + END_SERIALIZATION + + BEGIN_SERIALIZATION(ParsingTable::TransitionItem) + SERIALIZE(token) + SERIALIZE(targetState) + SERIALIZE(lookAheads) + SERIALIZE(stackPattern) + SERIALIZE(instructions) + END_SERIALIZATION + + BEGIN_SERIALIZATION(ParsingTable::TransitionBag) + SERIALIZE(transitionItems) + END_SERIALIZATION + } + } + + namespace parsing + { + namespace tabling + { + using namespace collections; + using namespace regex; + +#ifdef VCZH_GCC + const vint ParsingTable::TokenBegin; + const vint ParsingTable::TokenFinish; + const vint ParsingTable::NormalReduce; + const vint ParsingTable::LeftRecursiveReduce; + const vint ParsingTable::UserTokenStart; +#endif + +/*********************************************************************** +ParsingTable::AttributeInfoList +***********************************************************************/ + + Ptr ParsingTable::AttributeInfoList::FindFirst(const WString& name) + { + for(vint i=0;iname==name) + { + return attributes[i]; + } + } + return 0; + } + +/*********************************************************************** +ParsingTable::LookAheadInfo +***********************************************************************/ + + ParsingTable::LookAheadInfo::PrefixResult ParsingTable::LookAheadInfo::TestPrefix(Ptr a, Ptr b) + { + if(a->tokens.Count()>b->tokens.Count()) + { + return ParsingTable::LookAheadInfo::NotPrefix; + } + for(vint i=0;itokens.Count();i++) + { + if(a->tokens[i]!=b->tokens[i]) + { + return ParsingTable::LookAheadInfo::NotPrefix; + } + } + return a->tokens.Count()tokens.Count()?ParsingTable::LookAheadInfo::Prefix:ParsingTable::LookAheadInfo::Equal; + } + + void ParsingTable::LookAheadInfo::WalkInternal(Ptr table, Ptr previous, vint state, collections::SortedList& walkedStates, collections::List>& newInfos) + { + if (walkedStates.Contains(state)) return; + walkedStates.Add(state); + + for (vint i = 0; i < table->GetTokenCount(); i++) + { + if(Ptr bag=table->GetTransitionBag(state, i)) + { + FOREACH(Ptr, item, bag->transitionItems) + { + if (i == ParsingTable::NormalReduce || i == ParsingTable::LeftRecursiveReduce) + { + WalkInternal(table, previous, item->targetState, walkedStates, newInfos); + } + else + { + Ptr info=new LookAheadInfo; + info->state=item->targetState; + if(previous) + { + CopyFrom(info->tokens, previous->tokens); + } + info->tokens.Add(i); + newInfos.Add(info); + } + } + } + } + + walkedStates.Remove(state); + } + + void ParsingTable::LookAheadInfo::Walk(Ptr table, Ptr previous, vint state, collections::List>& newInfos) + { + SortedList walkedStates; + WalkInternal(table, previous, state, walkedStates, newInfos); + } + +/*********************************************************************** +ParsingTable::TransitionItem +***********************************************************************/ + + enum TransitionLevel + { + ReduceTransition, + LeftRecursiveReduceTransition, + NormalTransition, + }; + + TransitionLevel GetTransitionLevel(Ptr t) + { + bool hasReduce=false; + bool hasLrReduce=false; + FOREACH(ParsingTable::Instruction, ins, t->instructions) + { + switch(ins.instructionType) + { + case ParsingTable::Instruction::Reduce: + hasReduce=true; + break; + case ParsingTable::Instruction::LeftRecursiveReduce: + hasLrReduce=true; + break; + default:; + } + } + + return + hasLrReduce?LeftRecursiveReduceTransition: + hasReduce?ReduceTransition: + NormalTransition; + } + + ParsingTable::TransitionItem::OrderResult ParsingTable::TransitionItem::CheckOrder(Ptr t1, Ptr t2, OrderResult defaultResult) + { + if(t1->token!=t2->token) return UnknownOrder; + if (defaultResult != UnknownOrder) + { + TransitionLevel level1 = GetTransitionLevel(t1); + TransitionLevel level2 = GetTransitionLevel(t2); + if (level1 > level2) return CorrectOrder; + if (level1 < level2) return WrongOrder; + } + + vint ic1=t1->stackPattern.Count(); + vint ic2=t2->stackPattern.Count(); + vint ic=ic1stackPattern[i]; + vint s2=t2->stackPattern[i]; + + if(s1>s2) + { + return CorrectOrder; + } + else if(s1token==TokenFinish) + { + if(ic1>ic2) + { + return CorrectOrder; + } + else if(ic1 t1, Ptr t2, OrderResult defaultResult) + { + OrderResult order=CheckOrder(t1, t2, defaultResult); + switch(order) + { + case CorrectOrder: return -1; + case WrongOrder: return 1; + default: return 0; + } + } + + template + void ParsingTable::IO(TIO& io) + { + io + << ambiguity + << attributeInfos + << treeTypeInfos + << treeFieldInfos + << tokenCount + << stateCount + << tokenInfos + << discardTokenInfos + << stateInfos + << ruleInfos + << transitionBags + ; + } + + ParsingTable::ParsingTable(stream::IStream& input) + { + stream::internal::ContextFreeReader reader(input); + IO(reader); + } + + void ParsingTable::Serialize(stream::IStream& output) + { + stream::internal::ContextFreeWriter writer(output); + IO(writer); + } + +/*********************************************************************** +ParsingTable +***********************************************************************/ + +#if defined(VCZH_GCC) && defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnull-dereference" +#endif + + ParsingTable::ParsingTable(vint _attributeInfoCount, vint _treeTypeInfoCount, vint _treeFieldInfoCount, vint _tokenCount, vint discardTokenCount, vint _stateCount, vint _ruleCount) + :ambiguity(false) + ,tokenCount(_tokenCount+UserTokenStart) + ,stateCount(_stateCount) + ,attributeInfos(_attributeInfoCount) + ,treeTypeInfos(_treeTypeInfoCount) + ,treeFieldInfos(_treeFieldInfoCount) + ,tokenInfos(_tokenCount+UserTokenStart) + ,discardTokenInfos(discardTokenCount) + ,stateInfos(_stateCount) + ,ruleInfos(_ruleCount) + ,transitionBags((_tokenCount+UserTokenStart)*_stateCount) + { + } + + ParsingTable::~ParsingTable() + { + } + + bool ParsingTable::GetAmbiguity() + { + return ambiguity; + } + + void ParsingTable::SetAmbiguity(bool value) + { + ambiguity=value; + } + + vint ParsingTable::GetAttributeInfoCount() + { + return attributeInfos.Count(); + } + + Ptr ParsingTable::GetAttributeInfo(vint index) + { + return attributeInfos[index]; + } + + void ParsingTable::SetAttributeInfo(vint index, Ptr info) + { + attributeInfos[index]=info; + } + + vint ParsingTable::GetTreeTypeInfoCount() + { + return treeTypeInfos.Count(); + } + + const ParsingTable::TreeTypeInfo& ParsingTable::GetTreeTypeInfo(vint index) + { + return treeTypeInfos[index]; + } + + const ParsingTable::TreeTypeInfo& ParsingTable::GetTreeTypeInfo(const WString& type) + { + vint index=treeTypeInfoMap.Keys().IndexOf(type); + if(index==-1) return *(const TreeTypeInfo*)0; + return treeTypeInfos[treeTypeInfoMap.Values().Get(index)]; + } + + void ParsingTable::SetTreeTypeInfo(vint index, const TreeTypeInfo& info) + { + treeTypeInfos[index]=info; + } + + vint ParsingTable::GetTreeFieldInfoCount() + { + return treeFieldInfos.Count(); + } + + const ParsingTable::TreeFieldInfo& ParsingTable::GetTreeFieldInfo(vint index) + { + return treeFieldInfos[index]; + } + + const ParsingTable::TreeFieldInfo& ParsingTable::GetTreeFieldInfo(const WString& type, const WString& field) + { + Pair key(type, field); + vint index=treeFieldInfoMap.Keys().IndexOf(key); + if(index==-1) return *(const TreeFieldInfo*)0; + return treeFieldInfos[treeFieldInfoMap.Values().Get(index)]; + } + + void ParsingTable::SetTreeFieldInfo(vint index, const TreeFieldInfo& info) + { + treeFieldInfos[index]=info; + } + + vint ParsingTable::GetTokenCount() + { + return tokenCount; + } + + const ParsingTable::TokenInfo& ParsingTable::GetTokenInfo(vint token) + { + return tokenInfos[token]; + } + + void ParsingTable::SetTokenInfo(vint token, const TokenInfo& info) + { + tokenInfos[token]=info; + } + + vint ParsingTable::GetDiscardTokenCount() + { + return discardTokenInfos.Count(); + } + + const ParsingTable::TokenInfo& ParsingTable::GetDiscardTokenInfo(vint token) + { + return discardTokenInfos[token]; + } + + void ParsingTable::SetDiscardTokenInfo(vint token, const TokenInfo& info) + { + discardTokenInfos[token]=info; + } + + vint ParsingTable::GetStateCount() + { + return stateCount; + } + + const ParsingTable::StateInfo& ParsingTable::GetStateInfo(vint state) + { + return stateInfos[state]; + } + + void ParsingTable::SetStateInfo(vint state, const StateInfo& info) + { + stateInfos[state]=info; + } + + vint ParsingTable::GetRuleCount() + { + return ruleInfos.Count(); + } + + const ParsingTable::RuleInfo& ParsingTable::GetRuleInfo(const WString& ruleName) + { + vint index=ruleMap.Keys().IndexOf(ruleName); + if(index==-1) return *(const RuleInfo*)0; + return ruleInfos[ruleMap.Values().Get(index)]; + } + + const ParsingTable::RuleInfo& ParsingTable::GetRuleInfo(vint rule) + { + return ruleInfos[rule]; + } + + void ParsingTable::SetRuleInfo(vint rule, const RuleInfo& info) + { + ruleInfos[rule]=info; + } + + const regex::RegexLexer& ParsingTable::GetLexer() + { + return *lexer.Obj(); + } + + Ptr ParsingTable::GetTransitionBag(vint state, vint token) + { + return transitionBags[state*tokenCount+token]; + } + + void ParsingTable::SetTransitionBag(vint state, vint token, Ptr bag) + { + transitionBags[state*tokenCount+token]=bag; + } + + void ParsingTable::Initialize() + { + List tokens; + FOREACH(TokenInfo, info, From(tokenInfos).Skip(UserTokenStart)) + { + tokens.Add(info.regex); + } + FOREACH(TokenInfo, info, discardTokenInfos) + { + tokens.Add(info.regex); + } + + vint regexTokenIndex = 0; + for (vint i = UserTokenStart; i < tokenInfos.Count(); i++) + { + tokenInfos[i].regexTokenIndex = regexTokenIndex++; + } + for (vint i = 0; i < discardTokenInfos.Count(); i++) + { + discardTokenInfos[i].regexTokenIndex = regexTokenIndex++; + } + lexer = new RegexLexer(tokens, {}); + + ruleMap.Clear(); + FOREACH_INDEXER(RuleInfo, rule, index, ruleInfos) + { + ruleMap.Add(rule.name, index); + } + for (vint i = 0; i < stateInfos.Count(); i++) + { + StateInfo& info = stateInfos[i]; + info.ruleAmbiguousType = ruleInfos[ruleMap[info.ruleName]].ambiguousType; + } + + treeTypeInfoMap.Clear(); + FOREACH_INDEXER(TreeTypeInfo, info, index, treeTypeInfos) + { + treeTypeInfoMap.Add(info.type, index); + } + + treeFieldInfoMap.Clear(); + FOREACH_INDEXER(TreeFieldInfo, info, index, treeFieldInfos) + { + Pair key(info.type, info.field); + treeFieldInfoMap.Add(key, index); + } + } + + bool ParsingTable::IsInputToken(vint regexTokenIndex) + { + return regexTokenIndex>=0 && regexTokenIndex=tokenCount-UserTokenStart?regexTokenIndex-(tokenCount-UserTokenStart):-1; + } + +#if defined(VCZH_GCC) && defined(__clang__) +#pragma clang diagnostic pop +#endif + } + } +} + + +/*********************************************************************** +.\PARSINGTREE.CPP +***********************************************************************/ + +#if defined(VCZH_GCC) && defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnull-dereference" +#endif + +namespace vl +{ + using namespace collections; + + namespace parsing + { + vint CompareTextRange(Ptr r1, Ptr r2) + { + return ParsingTextPos::Compare(r1->GetCodeRange().start, r2->GetCodeRange().start); + } + +/*********************************************************************** +ParsingTreeNode::TraversalVisitor +***********************************************************************/ + + ParsingTreeNode::TraversalVisitor::TraversalVisitor(TraverseDirection _direction) + :direction(_direction) + { + } + + void ParsingTreeNode::TraversalVisitor::BeforeVisit(ParsingTreeToken* node) + { + } + + void ParsingTreeNode::TraversalVisitor::AfterVisit(ParsingTreeToken* node) + { + } + + void ParsingTreeNode::TraversalVisitor::BeforeVisit(ParsingTreeObject* node) + { + } + + void ParsingTreeNode::TraversalVisitor::AfterVisit(ParsingTreeObject* node) + { + } + + void ParsingTreeNode::TraversalVisitor::BeforeVisit(ParsingTreeArray* node) + { + } + + void ParsingTreeNode::TraversalVisitor::AfterVisit(ParsingTreeArray* node) + { + } + + void ParsingTreeNode::TraversalVisitor::Visit(ParsingTreeToken* node) + { + BeforeVisit(node); + AfterVisit(node); + } + + void ParsingTreeNode::TraversalVisitor::Visit(ParsingTreeObject* node) + { + BeforeVisit(node); + switch(direction) + { + case TraverseDirection::ByTextPosition: + { + FOREACH(Ptr, node, node->GetSubNodes()) + { + node->Accept(this); + } + } + break; + case TraverseDirection::ByStorePosition: + { + FOREACH(Ptr, node, node->GetMembers().Values()) + { + node->Accept(this); + } + } + break; + } + AfterVisit(node); + } + + void ParsingTreeNode::TraversalVisitor::Visit(ParsingTreeArray* node) + { + BeforeVisit(node); + switch(direction) + { + case TraverseDirection::ByTextPosition: + { + FOREACH(Ptr, node, node->GetSubNodes()) + { + node->Accept(this); + } + } + break; + case TraverseDirection::ByStorePosition: + { + FOREACH(Ptr, node, node->GetItems()) + { + node->Accept(this); + } + } + break; + } + AfterVisit(node); + } + +/*********************************************************************** +ParsingTreeNode +***********************************************************************/ + + bool ParsingTreeNode::BeforeAddChild(Ptr node) + { + return node->parent==0; + } + + void ParsingTreeNode::AfterAddChild(Ptr node) + { + node->parent=this; + ClearQueryCache(); + } + + bool ParsingTreeNode::BeforeRemoveChild(Ptr node) + { + return node->parent!=0; + } + + void ParsingTreeNode::AfterRemoveChild(Ptr node) + { + node->parent=0; + ClearQueryCache(); + } + + ParsingTreeNode::ParsingTreeNode(const ParsingTextRange& _codeRange) + :codeRange(_codeRange) + ,parent(0) + { + } + + ParsingTreeNode::~ParsingTreeNode() + { + } + + ParsingTextRange ParsingTreeNode::GetCodeRange() + { + return codeRange; + } + + void ParsingTreeNode::SetCodeRange(const ParsingTextRange& range) + { + codeRange=range; + } + + void ParsingTreeNode::InitializeQueryCache() + { + const NodeList& subNodes=GetSubNodesInternal(); + ClearQueryCache(); + auto subNodesExists = &subNodes; + if(subNodesExists) + { + FOREACH(Ptr, node, subNodes) + { + node->InitializeQueryCache(); + } + + //if (codeRange.start.IsInvalid() || codeRange.start.IsInvalid()) + { + FOREACH(Ptr, subNode, subNodes) + { + const auto& subRange = subNode->codeRange; + const auto& min = !subRange.start.IsInvalid() ? subRange.start : subRange.end; + const auto& max = !subRange.end.IsInvalid() ? subRange.end : subRange.start; + + if (codeRange.start.IsInvalid() || (!min.IsInvalid() && codeRange.start > min)) + { + codeRange.start = min; + } + if (codeRange.end.IsInvalid() || (!max.IsInvalid() && codeRange.end < max)) + { + codeRange.end = max; + } + } + } + + CopyFrom( + cachedOrderedSubNodes, + From(subNodes) + .Where([=](Ptr node) + { + const auto& range = node->GetCodeRange(); + return !range.start.IsInvalid() && !range.end.IsInvalid(); + }) + .OrderBy(&CompareTextRange) + ); + } + } + + void ParsingTreeNode::ClearQueryCache() + { + cachedOrderedSubNodes.Clear(); + } + + ParsingTreeNode* ParsingTreeNode::GetParent() + { + return parent; + } + + const ParsingTreeNode::NodeList& ParsingTreeNode::GetSubNodes() + { + return cachedOrderedSubNodes; + } + + ParsingTreeNode* ParsingTreeNode::FindSubNode(const ParsingTextPos& position) + { + return FindSubNode(ParsingTextRange(position, position)); + } + + ParsingTreeNode* ParsingTreeNode::FindSubNode(const ParsingTextRange& range) + { + if (codeRange.start <= range.start && range.end <= codeRange.end) + { + vint start = 0; + vint end = cachedOrderedSubNodes.Count() - 1; + while (start <= end) + { + vint selected = (start + end) / 2; + ParsingTreeNode* selectedNode = cachedOrderedSubNodes[selected].Obj(); + const ParsingTextRange& selectedRange = selectedNode->codeRange; + if (range.endselectedRange.end) + { + start = selected + 1; + } + else if (selectedRange.start <= range.start && range.end <= selectedRange.end) + { + return selectedNode; + } + else + { + return this; + } + } + } + return this; + } + + ParsingTreeNode* ParsingTreeNode::FindDeepestNode(const ParsingTextPos& position) + { + return FindDeepestNode(ParsingTextRange(position, position)); + } + + ParsingTreeNode* ParsingTreeNode::FindDeepestNode(const ParsingTextRange& range) + { + ParsingTreeNode* result=0; + ParsingTreeNode* node=this; + do + { + result=node; + node=node->FindSubNode(range); + }while(result!=node); + return result; + } + +/*********************************************************************** +ParsingTreeToken +***********************************************************************/ + + const ParsingTreeToken::NodeList& ParsingTreeToken::GetSubNodesInternal() + { + return *(NodeList*)0; + } + + ParsingTreeToken::ParsingTreeToken(const WString& _value, vint _tokenIndex, const ParsingTextRange& _codeRange) + :ParsingTreeNode(_codeRange) + ,value(_value) + ,tokenIndex(_tokenIndex) + { + } + + ParsingTreeToken::~ParsingTreeToken() + { + } + + void ParsingTreeToken::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + Ptr ParsingTreeToken::Clone() + { + Ptr clone=new ParsingTreeToken(value, tokenIndex, codeRange); + return clone; + } + + vint ParsingTreeToken::GetTokenIndex() + { + return tokenIndex; + } + + void ParsingTreeToken::SetTokenIndex(vint _tokenIndex) + { + tokenIndex=_tokenIndex; + } + + const WString& ParsingTreeToken::GetValue() + { + return value; + } + + void ParsingTreeToken::SetValue(const WString& _value) + { + value=_value; + } + +/*********************************************************************** +ParsingTreeObject +***********************************************************************/ + + const ParsingTreeObject::NodeList& ParsingTreeObject::GetSubNodesInternal() + { + return members.Values(); + } + + ParsingTreeObject::ParsingTreeObject(const WString& _type, const ParsingTextRange& _codeRange) + :ParsingTreeNode(_codeRange) + ,type(_type) + { + } + + ParsingTreeObject::~ParsingTreeObject() + { + } + + void ParsingTreeObject::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + Ptr ParsingTreeObject::Clone() + { + Ptr clone=new ParsingTreeObject(type, codeRange); + CopyFrom(clone->rules, rules); + for(vint i=0;i node=members.Values().Get(i)->Clone(); + clone->SetMember(name, node); + } + return clone; + } + + const WString& ParsingTreeObject::GetType() + { + return type; + } + + void ParsingTreeObject::SetType(const WString& _type) + { + type=_type; + } + + ParsingTreeObject::NodeMap& ParsingTreeObject::GetMembers() + { + return members; + } + + Ptr ParsingTreeObject::GetMember(const WString& name) + { + vint index=members.Keys().IndexOf(name); + if(index==-1) return 0; + return members.Values().Get(index); + } + + bool ParsingTreeObject::SetMember(const WString& name, Ptr node) + { + vint index=members.Keys().IndexOf(name); + if(index!=-1) + { + Ptr previous=members.Values().Get(index); + if(previous==node) return true; + if(!BeforeRemoveChild(previous) || !BeforeAddChild(node)) return false; + members.Remove(name); + AfterRemoveChild(previous); + } + members.Add(name, node); + AfterAddChild(node); + return true; + } + + bool ParsingTreeObject::RemoveMember(const WString& name) + { + vint index=members.Keys().IndexOf(name); + if(index!=-1) + { + Ptr previous=members.Values().Get(index); + if(BeforeRemoveChild(previous)) + { + members.Remove(name); + AfterRemoveChild(previous); + return true; + } + } + return false; + } + + const ParsingTreeObject::NameList& ParsingTreeObject::GetMemberNames() + { + return members.Keys(); + } + + ParsingTreeObject::RuleList& ParsingTreeObject::GetCreatorRules() + { + return rules; + } + +/*********************************************************************** +ParsingTreeArray +***********************************************************************/ + + const ParsingTreeArray::NodeList& ParsingTreeArray::GetSubNodesInternal() + { + return items; + } + + ParsingTreeArray::ParsingTreeArray(const WString& _elementType, const ParsingTextRange& _codeRange) + :ParsingTreeNode(_codeRange) + ,elementType(_elementType) + { + } + + ParsingTreeArray::~ParsingTreeArray() + { + } + + void ParsingTreeArray::Accept(IVisitor* visitor) + { + visitor->Visit(this); + } + + Ptr ParsingTreeArray::Clone() + { + Ptr clone=new ParsingTreeArray(elementType, codeRange); + for(vint i=0;i node=items.Get(i)->Clone(); + clone->AddItem(node); + } + return clone; + } + + const WString& ParsingTreeArray::GetElementType() + { + return elementType; + } + + void ParsingTreeArray::SetElementType(const WString& _elementType) + { + elementType=_elementType; + } + + ParsingTreeArray::NodeArray& ParsingTreeArray::GetItems() + { + return items; + } + + Ptr ParsingTreeArray::GetItem(vint index) + { + if(0<=index && index node) + { + if(0<=index && index node) + { + return InsertItem(items.Count(), node); + } + + bool ParsingTreeArray::InsertItem(vint index, Ptr node) + { + if(0<=index && index<=items.Count()) + { + if(BeforeAddChild(node)) + { + items.Insert(index, node); + AfterAddChild(node); + return true; + } + } + return false; + } + + bool ParsingTreeArray::RemoveItem(vint index) + { + if(0<=index && index previous=items[index]; + if(BeforeRemoveChild(previous)) + { + items.RemoveAt(index); + AfterRemoveChild(previous); + return true; + } + } + return false; + } + + bool ParsingTreeArray::RemoveItem(ParsingTreeNode* node) + { + return RemoveItem(items.IndexOf(node)); + } + + vint ParsingTreeArray::IndexOfItem(ParsingTreeNode* node) + { + return items.IndexOf(node); + } + + bool ParsingTreeArray::ContainsItem(ParsingTreeNode* node) + { + return items.Contains(node); + } + + vint ParsingTreeArray::Count() + { + return items.Count(); + } + + bool ParsingTreeArray::Clear() + { + FOREACH(Ptr, node, items) + { + if(!BeforeRemoveChild(node)) return false; + } + FOREACH(Ptr, node, items) + { + AfterRemoveChild(node); + } + items.Clear(); + return true; + } + +/*********************************************************************** +ParsingError +***********************************************************************/ + + ParsingError::ParsingError() + :token(0) + ,parsingTree(0) + { + } + + ParsingError::ParsingError(const WString& _errorMessage) + :token(0) + ,parsingTree(0) + ,errorMessage(_errorMessage) + { + } + + ParsingError::ParsingError(const regex::RegexToken* _token, const WString& _errorMessage) + :token(_token) + ,parsingTree(0) + ,errorMessage(_errorMessage) + { + if(token) + { + codeRange.start.row=_token->rowStart; + codeRange.start.column=_token->columnStart; + codeRange.start.index=_token->start; + codeRange.end.row=_token->rowEnd; + codeRange.end.column=_token->columnEnd; + codeRange.end.index=_token->start+_token->length-1; + codeRange.codeIndex = _token->codeIndex; + } + } + + ParsingError::ParsingError(ParsingTreeCustomBase* _parsingTree, const WString& _errorMessage) + :codeRange(_parsingTree->codeRange) + ,token(0) + ,parsingTree(_parsingTree) + ,errorMessage(_errorMessage) + { + } + + ParsingError::~ParsingError() + { + } + +/*********************************************************************** +ParsingEmptyPrintNodeRecorder +***********************************************************************/ + + ParsingEmptyPrintNodeRecorder::ParsingEmptyPrintNodeRecorder() + { + } + + ParsingEmptyPrintNodeRecorder::~ParsingEmptyPrintNodeRecorder() + { + } + + void ParsingEmptyPrintNodeRecorder::Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) + { + } + +/*********************************************************************** +ParsingMultiplePrintNodeRecorder +***********************************************************************/ + + ParsingMultiplePrintNodeRecorder::ParsingMultiplePrintNodeRecorder() + { + } + + ParsingMultiplePrintNodeRecorder::~ParsingMultiplePrintNodeRecorder() + { + } + + void ParsingMultiplePrintNodeRecorder::AddRecorder(Ptr recorder) + { + recorders.Add(recorder); + } + + void ParsingMultiplePrintNodeRecorder::Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) + { + FOREACH(Ptr, recorder, recorders) + { + recorder->Record(node, range); + } + } + +/*********************************************************************** +ParsingOriginalLocationRecorder +***********************************************************************/ + + ParsingOriginalLocationRecorder::ParsingOriginalLocationRecorder(Ptr _recorder) + :recorder(_recorder) + { + } + + ParsingOriginalLocationRecorder::~ParsingOriginalLocationRecorder() + { + } + + void ParsingOriginalLocationRecorder::Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) + { + auto codeRange = node->codeRange; + codeRange.codeIndex = range.codeIndex; + recorder->Record(node, codeRange); + } + +/*********************************************************************** +ParsingGeneratedLocationRecorder +***********************************************************************/ + + ParsingGeneratedLocationRecorder::ParsingGeneratedLocationRecorder(RangeMap& _rangeMap) + :rangeMap(_rangeMap) + { + } + + ParsingGeneratedLocationRecorder::~ParsingGeneratedLocationRecorder() + { + } + + void ParsingGeneratedLocationRecorder::Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) + { + rangeMap.Add(node, range); + } + +/*********************************************************************** +ParsingUpdateLocationRecorder +***********************************************************************/ + + ParsingUpdateLocationRecorder::ParsingUpdateLocationRecorder() + { + } + + ParsingUpdateLocationRecorder::~ParsingUpdateLocationRecorder() + { + } + + void ParsingUpdateLocationRecorder::Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) + { + node->codeRange = range; + } + +/*********************************************************************** +ParsingWriter +***********************************************************************/ + + void ParsingWriter::HandleChar(wchar_t c) + { + lastPos = currentPos; + switch (c) + { + case L'\n': + currentPos.index++; + currentPos.row++; + currentPos.column = 0; + break; + default: + currentPos.index++; + currentPos.column++; + } + } + + ParsingWriter::ParsingWriter(stream::TextWriter& _writer, Ptr _recorder, vint _codeIndex) + :writer(_writer) + , recorder(_recorder) + , codeIndex(_codeIndex) + , lastPos(-1, 0, -1) + , currentPos(0, 0, 0) + { + } + + ParsingWriter::~ParsingWriter() + { + } + + void ParsingWriter::WriteChar(wchar_t c) + { + writer.WriteChar(c); + if (!recorder) return; + HandleChar(c); + } + + void ParsingWriter::WriteString(const wchar_t* string, vint charCount) + { + writer.WriteString(string, charCount); + if (!recorder) return; + for (vint i = 0; i < charCount; i++) + { + HandleChar(string[i]); + } + } + + void ParsingWriter::BeforePrint(ParsingTreeCustomBase* node) + { + if (!recorder) return; + nodePositions.Add(NodePosPair(node, currentPos)); + } + + void ParsingWriter::AfterPrint(ParsingTreeCustomBase* node) + { + if (!recorder) return; + + auto pair = nodePositions[nodePositions.Count() - 1]; + nodePositions.RemoveAt(nodePositions.Count() - 1); + CHECK_ERROR(pair.key == node, L"vl::parsing::ParsingWriter::AfterPrint(ParsingTreeNode*)#BeforePrint and AfterPrint should be call in pairs."); + + ParsingTextRange range(pair.value, lastPos, codeIndex); + recorder->Record(node, range); + } + } +} + +#if defined(VCZH_GCC) && defined(__clang__) +#pragma clang diagnostic pop +#endif + + +/*********************************************************************** +.\JSON\PARSINGJSON.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + namespace json + { + using namespace stream; + using namespace collections; + +/*********************************************************************** +Unescaping Function Foward Declarations +***********************************************************************/ + + void JsonUnescapingString(vl::parsing::ParsingToken& value, const vl::collections::List& tokens) + { + value.value = GenerateToStream([&](StreamWriter& writer) + { + JsonUnescapeString(value.value.Sub(1, value.value.Length() - 2), writer); + }); + } + +/*********************************************************************** +JsonPrintVisitor +***********************************************************************/ + + class JsonPrintVisitor : public Object, public JsonNode::IVisitor + { + public: + TextWriter& writer; + + JsonPrintVisitor(TextWriter& _writer) + :writer(_writer) + { + } + + void Visit(JsonLiteral* node) + { + switch(node->value) + { + case JsonLiteral::JsonValue::True: + writer.WriteString(L"true"); + break; + case JsonLiteral::JsonValue::False: + writer.WriteString(L"false"); + break; + case JsonLiteral::JsonValue::Null: + writer.WriteString(L"null"); + break; + } + } + + void Visit(JsonString* node) + { + writer.WriteChar(L'\"'); + JsonEscapeString(node->content.value, writer); + writer.WriteChar(L'\"'); + } + + void Visit(JsonNumber* node) + { + writer.WriteString(node->content.value); + } + + void Visit(JsonArray* node) + { + writer.WriteChar(L'['); + FOREACH_INDEXER(Ptr, item, i, node->items) + { + if(i>0) writer.WriteChar(L','); + item->Accept(this); + } + writer.WriteChar(L']'); + } + + void Visit(JsonObjectField* node) + { + writer.WriteChar(L'\"'); + JsonEscapeString(node->name.value, writer); + writer.WriteString(L"\":"); + node->value->Accept(this); + } + + void Visit(JsonObject* node) + { + writer.WriteChar(L'{'); + FOREACH_INDEXER(Ptr, field, i, node->fields) + { + if(i>0) writer.WriteChar(L','); + field->Accept(this); + } + writer.WriteChar(L'}'); + } + }; + +/*********************************************************************** +API +***********************************************************************/ + + void JsonEscapeString(const WString& text, stream::TextWriter& writer) + { + const wchar_t* reading=text.Buffer(); + while(wchar_t c=*reading++) + { + switch(c) + { + case L'\"': writer.WriteString(L"\\\""); break; + case L'\\': writer.WriteString(L"\\\\"); break; + case L'/': writer.WriteString(L"\\/"); break; + case L'\b': writer.WriteString(L"\\b"); break; + case L'\f': writer.WriteString(L"\\f"); break; + case L'\n': writer.WriteString(L"\\n"); break; + case L'\r': writer.WriteString(L"\\r"); break; + case L'\t': writer.WriteString(L"\\t"); break; + default: writer.WriteChar(c); + } + } + } + + vuint16_t GetHex(wchar_t c) + { + if(L'0'<=c && c<=L'9') + { + return c-L'0'; + } + else if(L'A'<=c && c<=L'F') + { + return c-L'A'; + } + else if(L'a'<=c && c<=L'f') + { + return c-L'a'; + } + else + { + return 0; + } + } + + void JsonUnescapeString(const WString& text, stream::TextWriter& writer) + { + const wchar_t* reading=text.Buffer(); + while(wchar_t c=*reading++) + { + if(c==L'\\' && *reading) + { + switch(c=*reading++) + { + case L'b': writer.WriteChar(L'\b'); break; + case L'f': writer.WriteChar(L'\f'); break; + case L'n': writer.WriteChar(L'\n'); break; + case L'r': writer.WriteChar(L'\r'); break; + case L't': writer.WriteChar(L'\t'); break; + case L'u': + { + wchar_t h1, h2, h3, h4; + if((h1=reading[0]) && (h2=reading[1]) && (h3=reading[2]) && (h4=reading[3])) + { + reading+=4; + wchar_t h=(wchar_t)(vuint16_t)( + (GetHex(h1)<<12) + + (GetHex(h2)<<8) + + (GetHex(h3)<<4) + + (GetHex(h4)<<0) + ); + writer.WriteChar(h); + } + } + break; + default: writer.WriteChar(c); + } + } + else + { + writer.WriteChar(c); + } + } + } + + void JsonPrint(Ptr node, stream::TextWriter& writer) + { + JsonPrintVisitor visitor(writer); + node->Accept(&visitor); + } + + WString JsonToString(Ptr node) + { + return GenerateToStream([&](StreamWriter& writer) + { + JsonPrint(node, writer); + }); + } + } + } +} + + +/*********************************************************************** +.\JSON\PARSINGJSON_AST.CPP +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parser::ParsingJson.parser.txt + +This file is generated by: Vczh Parser Generator +***********************************************************************/ + + +namespace vl +{ + namespace parsing + { + namespace json + { +/*********************************************************************** +Visitor Pattern Implementation +***********************************************************************/ + + void JsonLiteral::Accept(JsonNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void JsonString::Accept(JsonNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void JsonNumber::Accept(JsonNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void JsonArray::Accept(JsonNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void JsonObjectField::Accept(JsonNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void JsonObject::Accept(JsonNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + } + } +} +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + using namespace vl::parsing::json; + +#define PARSING_TOKEN_FIELD(NAME)\ + CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(get_##NAME, NO_PARAMETER, vl::WString(ClassType::*)(), [](ClassType* node) { return node->NAME.value; }, L"*", L"*")\ + CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(set_##NAME, { L"value" }, void(ClassType::*)(const vl::WString&), [](ClassType* node, const vl::WString& value) { node->NAME.value = value; }, L"*", L"*")\ + CLASS_MEMBER_PROPERTY_REFERENCETEMPLATE(NAME, get_##NAME, set_##NAME, L"$This->$Name.value")\ + + IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonNode, system::JsonNode) + IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonLiteral, system::JsonLiteral) + IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonLiteral::JsonValue, system::JsonLiteral::JsonValue) + IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonString, system::JsonString) + IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonNumber, system::JsonNumber) + IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonArray, system::JsonArray) + IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonObjectField, system::JsonObjectField) + IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonObject, system::JsonObject) + IMPL_TYPE_INFO_RENAME(vl::parsing::json::JsonNode::IVisitor, system::JsonNode::IVisitor) + + BEGIN_CLASS_MEMBER(JsonNode) + CLASS_MEMBER_METHOD_OVERLOAD(Accept, {L"visitor"}, void(JsonNode::*)(JsonNode::IVisitor* visitor)) + END_CLASS_MEMBER(JsonNode) + + BEGIN_CLASS_MEMBER(JsonLiteral) + CLASS_MEMBER_BASE(JsonNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + CLASS_MEMBER_FIELD(value) + END_CLASS_MEMBER(JsonLiteral) + + BEGIN_ENUM_ITEM(JsonLiteral::JsonValue) + ENUM_ITEM_NAMESPACE(JsonLiteral::JsonValue) + ENUM_NAMESPACE_ITEM(True) + ENUM_NAMESPACE_ITEM(False) + ENUM_NAMESPACE_ITEM(Null) + END_ENUM_ITEM(JsonLiteral::JsonValue) + + BEGIN_CLASS_MEMBER(JsonString) + CLASS_MEMBER_BASE(JsonNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + PARSING_TOKEN_FIELD(content) + END_CLASS_MEMBER(JsonString) + + BEGIN_CLASS_MEMBER(JsonNumber) + CLASS_MEMBER_BASE(JsonNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + PARSING_TOKEN_FIELD(content) + END_CLASS_MEMBER(JsonNumber) + + BEGIN_CLASS_MEMBER(JsonArray) + CLASS_MEMBER_BASE(JsonNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + CLASS_MEMBER_FIELD(items) + END_CLASS_MEMBER(JsonArray) + + BEGIN_CLASS_MEMBER(JsonObjectField) + CLASS_MEMBER_BASE(JsonNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + PARSING_TOKEN_FIELD(name) + CLASS_MEMBER_FIELD(value) + END_CLASS_MEMBER(JsonObjectField) + + BEGIN_CLASS_MEMBER(JsonObject) + CLASS_MEMBER_BASE(JsonNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + CLASS_MEMBER_FIELD(fields) + END_CLASS_MEMBER(JsonObject) + + BEGIN_INTERFACE_MEMBER(JsonNode::IVisitor) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonLiteral* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonString* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonNumber* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonArray* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonObjectField* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(JsonNode::IVisitor::*)(JsonObject* node)) + END_INTERFACE_MEMBER(JsonNode) + +#undef PARSING_TOKEN_FIELD + + class JsonTypeLoader : public vl::Object, public ITypeLoader + { + public: + void Load(ITypeManager* manager) + { + ADD_TYPE_INFO(vl::parsing::json::JsonNode) + ADD_TYPE_INFO(vl::parsing::json::JsonLiteral) + ADD_TYPE_INFO(vl::parsing::json::JsonLiteral::JsonValue) + ADD_TYPE_INFO(vl::parsing::json::JsonString) + ADD_TYPE_INFO(vl::parsing::json::JsonNumber) + ADD_TYPE_INFO(vl::parsing::json::JsonArray) + ADD_TYPE_INFO(vl::parsing::json::JsonObjectField) + ADD_TYPE_INFO(vl::parsing::json::JsonObject) + ADD_TYPE_INFO(vl::parsing::json::JsonNode::IVisitor) + } + + void Unload(ITypeManager* manager) + { + } + }; +#endif + + bool JsonLoadTypes() + { +#ifndef VCZH_DEBUG_NO_REFLECTION + ITypeManager* manager=GetGlobalTypeManager(); + if(manager) + { + Ptr loader=new JsonTypeLoader; + return manager->AddTypeLoader(loader); + } +#endif + return false; + } + } + } +} + + +/*********************************************************************** +.\JSON\PARSINGJSON_PARSER.CPP +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parser::ParsingJson.parser.txt + +This file is generated by: Vczh Parser Generator +***********************************************************************/ + + +namespace vl +{ + namespace parsing + { + namespace json + { +/*********************************************************************** +ParserText +***********************************************************************/ + +const wchar_t* const parserTextBuffer[] = { + L"" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"// AST" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"" L"\r\n" +, L"class Node" L"\r\n" +, L"{" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class Literal:Node" L"\r\n" +, L"{" L"\r\n" +, L"\tenum Value" L"\r\n" +, L"\t{" L"\r\n" +, L"\t\tTrue," L"\r\n" +, L"\t\tFalse," L"\r\n" +, L"\t\tNull," L"\r\n" +, L"\t}" L"\r\n" +, L"" L"\r\n" +, L"\tValue value;" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class String:Node" L"\r\n" +, L"{" L"\r\n" +, L"\ttoken content(JsonUnescapingString)\t\t\t\t@Color(\"String\");" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class Number:Node" L"\r\n" +, L"{" L"\r\n" +, L"\ttoken content;" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class Array:Node" L"\r\n" +, L"{" L"\r\n" +, L"\tNode[] items;" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class ObjectField:Node" L"\r\n" +, L"{" L"\r\n" +, L"\ttoken name(JsonUnescapingString)\t\t\t\t@Color(\"AttName\");" L"\r\n" +, L"\tNode value;" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class Object:Node" L"\r\n" +, L"{" L"\r\n" +, L"\tObjectField[] fields;" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"// Lexer" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"" L"\r\n" +, L"token TRUEVALUE = \"true\"\t\t\t\t\t\t\t@Color(\"Keyword\");" L"\r\n" +, L"token FALSEVALUE = \"false\"\t\t\t\t\t\t\t@Color(\"Keyword\");" L"\r\n" +, L"token NULLVALUE = \"null\"\t\t\t\t\t\t\t@Color(\"Keyword\");" L"\r\n" +, L"token OBJOPEN = \"\\{\"\t\t\t\t\t\t\t\t@Color(\"Boundary\");" L"\r\n" +, L"token OBJCLOSE = \"\\}\"\t\t\t\t\t\t\t\t@Color(\"Boundary\");" L"\r\n" +, L"token ARROPEN = \"\\[\"\t\t\t\t\t\t\t\t@Color(\"Boundary\");" L"\r\n" +, L"token ARRCLOSE = \"\\]\"\t\t\t\t\t\t\t\t@Color(\"Boundary\");" L"\r\n" +, L"token COMMA = \",\";" L"\r\n" +, L"token COLON = \":\";" L"\r\n" +, L"token NUMBER = \"[\\-]?\\d+(.\\d+)?([eE][+\\-]?\\d+)?\"\t@Color(\"Number\");" L"\r\n" +, L"token STRING = \"\"\"([^\\\\\"\"]|\\\\[^u]|\\\\u\\d{4})*\"\"\"\t\t@ContextColor();" L"\r\n" +, L"" L"\r\n" +, L"discardtoken SPACE = \"\\s+\";" L"\r\n" +, L"" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"// Rules" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"" L"\r\n" +, L"rule Node JLiteral" L"\r\n" +, L"\t= STRING:content as String" L"\r\n" +, L"\t= NUMBER:content as Number" L"\r\n" +, L"\t= \"true\" as Literal with {value = \"True\"}" L"\r\n" +, L"\t= \"false\" as Literal with {value = \"False\"}" L"\r\n" +, L"\t= \"null\" as Literal with {value = \"Null\"}" L"\r\n" +, L"\t;" L"\r\n" +, L"" L"\r\n" +, L"rule ObjectField JField" L"\r\n" +, L"\t= STRING:name \":\" JValue:value as ObjectField" L"\r\n" +, L"\t;" L"\r\n" +, L"" L"\r\n" +, L"rule Object JObject" L"\r\n" +, L"\t= \"{\" [JField:fields {\",\" JField:fields} ] \"}\" as Object" L"\r\n" +, L"\t;" L"\r\n" +, L"" L"\r\n" +, L"rule Array JArray" L"\r\n" +, L"\t= \"[\" [JValue:items {\",\" JValue:items} ] \"]\" as Array" L"\r\n" +, L"\t;" L"\r\n" +, L"" L"\r\n" +, L"rule Node JValue" L"\r\n" +, L"\t= !JLiteral" L"\r\n" +, L"\t= !JObject" L"\r\n" +, L"\t= !JArray" L"\r\n" +, L"\t;" L"\r\n" +, L"" L"\r\n" +, L"rule Node JRoot" L"\r\n" +, L"\t= !JObject" L"\r\n" +, L"\t= !JArray" L"\r\n" +, L"\t;" L"\r\n" +}; +const vint lengthTextBuffer[] = { + 2, 68, 8, 68, 2, 12, 3, 3, 2, 20, 3, 13, 4, 9, 10, 9, 4, 2, 15, 3, 2, 19, 3, 59, 3, 2, 19, 3, 17, 3, 2, 18 +, 3, 16, 3, 2, 24, 3, 57, 14, 3, 2, 19, 3, 24, 3, 2, 68, 10, 68, 2, 51, 53, 51, 49, 50, 49, 50, 20, 20, 68, 67, 2, 29 +, 2, 68, 10, 68, 2, 20, 29, 29, 44, 46, 44, 4, 2, 25, 48, 4, 2, 21, 59, 4, 2, 19, 56, 4, 2, 18, 14, 13, 12, 4, 2, 17 +, 13, 12, 4 +}; +const vint lengthTextBufferTotal = 2018; + + vl::WString JsonGetParserTextBuffer() + { + vl::collections::Array textBuffer(lengthTextBufferTotal + 1); + wchar_t* reading = &textBuffer[0]; + for(vint i = 0; i < sizeof(parserTextBuffer) / sizeof(*parserTextBuffer); i++) + { + memcpy(reading, parserTextBuffer[i], lengthTextBuffer[i] * sizeof(wchar_t)); + reading += lengthTextBuffer[i]; + } + *reading = 0; + return &textBuffer[0]; + } + +/*********************************************************************** +SerializedTable +***********************************************************************/ + +const vint parserBufferLength = 3809; // 17748 bytes before compressing +const vint parserBufferBlock = 1024; +const vint parserBufferRemain = 737; +const vint parserBufferRows = 4; +const char* const parserBuffer[] = { +"\x00\x0B\x00\x02\x83\x80\x07\x7D\x00\x82\x03\xFF\x45\x08\x82\x83\x86\x81\x21\x6F\x6C\x2F\x32\x37\x84\x86\x02\x86\x00\x17\x82\x93\x24\x3A\x39\x34\x37\x67\x06\x98\x8A\x88\x8E\x84\x00\x88\x12\x94\x98\x87\x0B\x93\x81\x20\x3A\x74\x4E\x21\x2D\x35\x32\x90\x86\x92\x0C\xA6\xA8\x93\x85\x88\x84\x96\x86\x3F\x80\x0B\x25\x39\x3F\x3B\x88\x32\x36\x88\xB8\x88\x8A\x99\x88\x9F\x96\x40\x83\x83\xA5\xA7\xA1\xA4\x83\xA5\x04\xCD\xA9\x9D\x94\x81\xA1\xAE\xA9\x44\xC6\xB2\x28\xAC\xA9\x86\x93\xAC\x03\xBB\xAA\x8C\x88\x00\x8D\xB6\x81\x42\x6F\x35\x2E\x34\x31\x32\x39\x3C\x56\xE6\xA5\x89\xBE\xA3\xB4\x85\xB7\x7F\x83\xB1\xB3\xB5\xBF\xB9\xBC\x81\x58\x83\x9A\xAF\xAC\xB6\xB6\xC0\xB9\x74\xF6\xB8\xA5\xB8\xC7\xB2\xC4\xBE\x5B\x8E\xCD\xD0\xB0\xCD\xC3\xC9\x91\x96\x8D\x98\xCC\xC8\x82\x8D\xD3\x81\x4E\x75\x2D\x22\x35\x32\x3B\xC3\x82\x0C\x18\xB1\xCF\x8F\x36\x34\x3B\x32\x78\x74\x2A\xB8\x80\x06\xAF\xCB\x9C\x2E\xF2\x32\x21\x38\xBF\x7E\xE3\xE3\xFF\x3E\xC2\x81\xAC\x21\x37\xDB\xE1\x6C\x48\xC8\xE4\x08\x8C\xEA\x80\x27\x6F\x64\x35\x92\xE6\xE6\xD0\x82\xD3\xA9\xAB\xED\xDC\xED\xE8\x8E\xD3\x27\x62\x6A\x25\x23\x34\x3C\xF3\x7F\x80\x0C\xF0\xC0\x08\xFA\xF4\xF6\x23\x34\x65\x6C\x08\xA4\xFE\xEB\x82\xD2\x8E\x1E\x60\x4E\x7A\x72\x00\x21\x65\x81\x70\xC3\x79\x16\x82\x49\xCE\x65\x1D\x1B\x1C\x03\x90\x50\x01\x73\xCF\x61\x1C\x1B\x82\x03\x76\x16\x85\x1D\xDB\x5C\x7D\x7E\x40\xE0\x6A\x6C\x6A\x1C\x04\x81\x53\x19\x6D\xB7\x76\x6E\x7B\x87\x19\x43\x44\x7F\x7A\x74\x2C\x86\x6A\x19\xF8\x7A\x70\x84\x79\xF2\x44\x42\x7F\x8B\xF6\x75\x84\x1A\x75\x08\x40\x9E\x1B\x4C\x65\x14\x60\x40\x46\x3B\xA9\x70\x8F\x7D\xF9\x64\x18\x86\x40\x1A\xAC\x1C\x87\x8A\xE6\x43\x40\x83\x47\x67\x25\x83\x43\x89\xB6\x65\x16\x6C\x6F\x0F\x18\x44\x08\x46\x61\xBC\x66\x9A\x52\xEE\x64\x77\x9B\x4D\x69\x9C\x7B\x98\x9A\x6D\x88\x7F\x9B\x55\x71\x88\x79\x00\x46\x77\x82\x44\x16\x14\x55\x05\x16\x15\x10\x4C\x3D\x90\x90\x41\x40\x9D\x4C\x84\x6F\x02\x18\x4A\x02\xA2\x03\x46\x10\xA3\x14\x7E\x80\xAD\x9F\x93\x00\x26\x16\x87\x1C\x45\x98\x43\x00\x9E\x9C\x97\x75\x14\x13\x4C\x3F\x91\xA1\x11\x83\x83\x42\x91\x1D\x6C\x2C\x19\xA0\x43\xA5\x8B\x72\x87\x13\x42\x0A\x1F\x10\x14\x45\x0E\x1B\xA8\x42\xB7\x9C\x1B\x1F\xA6\xC0\x5B\x61\x62\x40\xB0\x8A\x13\x10\x13\x4F\x10\xA7\xAC\x41\xB9\xBD\x1D\xA9\x8B\x51\x4D\xB0\x01\x10\x52\x12\x13\xAD\xAD\xC7\x83\x49\xAF\x16\x06\x84\x80\x60\x41\x80\x50\xB2\x17\xB0\xC5\x85\x15\xB6\x40\xB9\x9D\x1C\x8B\xB6\xBF\x4C\x59\x5B\x13\x4D\x0D\x11\x12\x91\x3D\x6C\x04\x82\x7B\x94\x83\x1F\x10\xB1\x4E\x30\xB3\x42\x0E\xE8\x88\x6C\x7D\x95\x9E\x8D\x12\x11\x11\x52\x1F\x08\x46\xC1\x02\x5B\x1C\x15\x0B\x5D\x3F\x0C\x14\x19\x2B\x28\x0E\x0B\xC3\x2B\x29\x0F\x0C\x0A\x5B\x25\x15\x11\x17\x5B\x2B\x0B\xC1\xC3\x14\xD6\xC9\x9C\x42\x23\xDF\x70\xC0\x00\x53\x3B\x99\x12\x13\x47\x1B\x08\x46\xCB\x02\x62\x08\xC6\x17\x5C\x1C\x12\x09\x17\x7C\x35\xCB\x16\x17\x75\x38\xC5\xCD\x1D\x0F\xFB\x14\x0D\x1F\x29\x2A\x02\x0B\xA2\x0C\x48\xD8\x42\x91\x94\x93\x10\x15\x10\x43\x05\x1C\xAC\x42\x53\xDC\x13\x1F\x0A\x39\x89\x44\x7B\x98\xBE\x9C\xB3\x42\x12\x14\xAD\x66\x86\x04\x18\x64\xD2\x40\xD8\x0D\x90\x7E\x0A\x14\x6F\x2F\x14\x1C\x47\x76\x74\x1D\x00\x46\x73\xC2\x40\x10\x08\x24\x3C\x08\xD9\x85\x6C\x3E\x0D\xBC\x00\x80\x7B\xD2\xD8\x1B\x0E\x18\x45\xE3\xD9\x61\xEA\xD0\xDE\x1C\x74\x33\x68\x42\xE3\x77\xFA\xD9\xE2\x85\x7E\xDA\x60\x02\xE0\xD0\x4A\xD4\x42\xD2\x98\xD6\x8E\x09\x0C\xFA\x18\x41\xEA\x40\x92\xE9\xD4\xE6\x0E\x20\x29\xC2\x17\xCA\x47\x20\x08\xE8\x97\x29\xB4\x10\x09\x18\x73\x29\xED\x44\x96\x40\x0D\x0A\x01\xE9\x7C\xFE\x08\xEA\x13\x55\x02\xC4\xC2\xEB\x20\x30\xEE\x96\xEC\xB4\xE0\x01\x7B\x88\xB9\xFB\xED\xE5\xDF\xA8\xE2\x06\xA1\x19\x22\x33\xE5\xEF\xE4\x6C\x37\xD7\x1E\x73\x68\x20\x0B\x1C\x08\x51\x9C\x80\x09\x0F\x20\x22\x04\x16\x1C\x1C\x95\xFD\x1E\xEE\xBC\xC3\xEE\xED\xF9\x96\xAC\x18\xA5\xF5\xC9\xD8\xFA\xF4\xF7\xDE\xE0\xFB\x85\x19\xE3\xE5\xF6\x13\xA5\xD4\x60\x07\xFA\x4E\x78\x7B\xF7\x62\x06\x0D\xA8\x4C\x0C\xFD\x57\x76\x75\xEC\x60\x03\x7B\x74\x1D\x7B\xF7\x61\x7C\x7E\xF2\x62\x01\x35\xA9\x4A\x7F\xDF\x01\x78\x7A\x08\x18\x26\x83\x88\x6D\x83\xDA\x6D\x64\x0F\x22\x34\x2D\x6E\x08\x28\x85\xDE\x4F\x7E\x06\x10\x00\x0A\x46\x5F\x76\x0B\xFE\x1B\x81\x87\xFD\x5F\x75\x07\x18\x38\x84\xE9\x4A\x02\x86\x29\x65\x0F\x7D\x21\x0F\x79\xF3\x7A\x6D\x86", +"\x0E\x40\x8A\x56\x4A\x4C\x3F\x10\xBC\x8B\x7F\x23\x81\x0A\x38\xC4\x2F\x87\xC9\x4A\x0C\x48\xFD\x34\x87\x6C\x55\x84\x0E\x0B\x33\x0A\x06\x8C\x1D\x8B\x87\x59\x8F\x7E\xEA\x2C\x74\x79\x21\x74\x25\x7C\x3A\x15\x78\x13\xBE\x84\x78\x0A\x96\x78\x04\x3C\x54\x0D\x16\xD2\x86\x23\xAF\x4F\x89\x41\x57\x97\x73\x1D\xC4\x3E\x04\x19\x0C\x10\x23\x7F\x9B\x87\x1E\xF9\x06\x81\x2D\x15\x7B\x0B\x20\x0B\x8E\xF8\x28\x7D\x41\x07\x77\x6F\x7B\x22\x0C\x06\x1A\xC5\x8C\x7E\x46\xB7\x37\x41\x02\x80\x05\x17\x65\x7D\x0B\x05\xA0\x03\x90\xEC\x6A\x0B\x20\x85\x97\x91\x44\x94\x94\x78\x8D\x95\x74\x10\x10\x92\x92\x53\xBB\x78\x95\x97\x95\x75\x1F\x1A\x9C\x92\x4F\x83\x90\x86\x67\x74\x93\xE1\x08\x2B\x96\x45\xA5\x0B\x84\x6E\x66\x84\x19\x59\x62\x20\xF9\x2B\x84\x92\x2D\x94\x8F\x69\x58\x8E\x47\x5D\x84\x25\x97\x59\x80\x99\x09\xF4\x24\x99\x23\x42\x23\x85\x61\x8E\x86\x96\x67\x61\x8F\x92\x43\x23\x64\x48\x95\x3C\x1D\x7D\x84\x12\x8C\x25\x9B\x87\x71\x86\x83\x1E\x25\x94\x8A\x1F\x44\x7C\x46\x4D\x53\x0F\x23\xE5\x7D\x95\x76\x8D\x4F\x9D\x3E\x52\x94\x2D\xA2\x0D\x0E\x4F\xB1\x89\x94\xE9\x91\x7B\x3A\xA0\x08\x90\x7B\xBA\x38\x9F\xF1\x8E\x84\x2B\xEA\x89\x8A\x84\xB6\x41\x93\x9B\x9C\x9E\x3F\xC9\x81\x47\x29\x83\x91\x8F\xA2\x90\x89\x1E\x5B\x85\x08\x8C\x1D\xA2\x90\x1A\xA4\x94\x41\xAE\x9C\x8C\x4B\x8E\x45\x76\x0B\xA4\xA7\x22\xA0\x09\x94\x88\xB5\x97\x8D\x83\x8A\x9A\xC9\x67\x67\xA2\xCB\x59\xA1\x41\x2E\x14\x07\x47\x88\x2B\xA6\xBD\x63\x91\x7A\x86\x83\xA6\x2F\xB0\x97\xA5\xFC\x51\x92\x04\x77\x63\xAA\x49\x98\x93\x97\x88\x9D\x90\xA6\x1A\xBB\x9B\xE5\x5D\x9D\x53\xA9\x94\xA1\xA7\x49\x18\x21\x56\xE8\x94\xA2\x75\xAC\x9D\xA1\xA8\x70\x9F\x43\x8B\xA9\xA8\xB0\xA0\x02\xAC\x64\x1A\x9D\x44\xFD\x9F\x8D\x38\x92\xA9\x9C\x30\x5E\x9A\x40\x60\x91\x8F\x2D\x9B\xA8\x21\x77\xBA\x6D\x40\xE5\x73\xA1\x82\xA6\xA8\xAD\x28\xB4\x9C\x43\xEE\x91\xAD\x7C\xAE\xA2\xA2\x6D\xB4\xA2\x4C\xFE\x36\x8E\x8D\x8E\x9B\x20\xBD\x83\x92\x34\xC2\x95\x9A\x63\xBE\xA1\xA4\x2E\x94\x52\x12\x6C\x6E\x6D\xB7\x9C\xB3\x9C\x31\x05\x04\x46\x22\xBB\x87\xCF\x87\x89\x8E\x4B\x86\xB4\xEA\x41\x81\xA7\xB7\x94\xAC\x21\x74\xB7\xA9\x0C\x77\xA4\x21\xBC\xB0\xAC\x3D\x5E\xB7\x6E\x5F\x84\xB7\xAC\xC3\xA9\xA6\xA0\x64\x0E\xA1\x5A\x87\xBC\xAD\xE4\x71\x88\x97\x7A\x9A\xA0\x46\x92\xB1\x07\x9D\x84\x25\xA7\x37\xA4\x38\x29\xBA\xBA\xA5\x4A\xAC\xA1\x96\x46\xB5\x9F\x29\xCB\xAA\xAD\x97\x89\x7F\x96\x53\x99\x88\x46\xD1\x91\x07\x2F\x88\x26\xBC\x7A\x61\x8C\xEA\x63\x8C\x65\x32\x84\x4F\x6E\x22\x09\x8D\x75\xED\x8F\x94\xE3\x94\xA1\x8B\xAE\xB4\xA1\x99\x08\x2B\xBF\xDB\xA3\x9F\xB3\xC2\x8E\x70\x41\x0E\x7B\x85\x74\x99\xB3\x2F\x67\x7F\xB0\x0A\x84\x28\x85\xCD\xA4\x83\xB2\x74\x3A\x73\x40\x4A\x6B\x84\xD3\xAE\x80\xB9\xC0\xA3\xBE\x8F\x7D\x86\xBC\x82\x28\xB8\xB8\x62\x8A\x65\x7B\xA8\x76\x8C\xFE\x71\xB8\xA9\xF3\xA8\x76\x1B\xF6\xB2\x9D\x2C\x98\xC1\x8B\x20\x88\x21\x8C\xC0\xB2\x9B\xC5\x74\x0D\xB2\x03\x37\x6C\x36\xBE\x4E\x07\x17\xFE\x42\xC0\x03\x2E\x70\x8D\xB6\xC2\xC2\x81\x0A\x69\x72\x20\xD9\xBE\x38\x91\x08\x22\x26\xDC\x9F\xAA\x9F\xB6\xC4\x90\x82\x20\x72\xBC\x7A\xAD\xAB\x4A\xD0\x47\x82\x83\x2D\xC1\xBA\xB6\xC0\xC7\x76\x60\x07\x95\xE2\x9D\xC6\x8B\x9A\xA1\xC6\x04\x33\xC6\x64\xD1\xC4\x0F\xB8\x60\xC8\x00\x3A\xD7\xB1\x82\x65\xC5\x8E\x9A\x9A\xA3\xCA\x00\x02\xCA\x64\xC4\xCC\x51\x30\xF2\xCA\xBA\x18\xD4\x90\x9A\x83\x23\xC6\x4A\xB5\xC5\xCD\x8C\x6F\xCD\x9C\xBE\x94\xCF\x65\x97\x74\x92\x78\xC2\xCA\xA1\xFC\xC9\x69\x1C\xE2\xCC\xD1\x9A\xBF\xB3\x7E\x84\x2D\xBF\xCF\x87\xD1\x6E\x45\xC0\x03\x91\xD6\xCE\xC0\xB7\x7E\x01\xD3\x24\x8F\xCD\xA9\xE3\x96\xC6\xB9\x80\x03\x64\x48\xC6\xB4\x46\xD8\x71\xD4\xCE\x58\x7D\x8F\xA3\x68\x21\xAE\xED\x70\x3B\x10\xEB\x73\xC4\xC5\x68\x47\xF1\x6F\x87\x4A\x90\x0B\x8D\x80\xBF\x61\x7B\xC0\x52\x04\x78\xE3\x76\x37\x8D\xCB\x6D\x37\xB1\x8D\x86\x81\xE9\x5E\x90\x7B\x0F\x98\x7F\x04\xAF\x96\x83\xF3\x69\x7A\x80\xD3\xDD\x75\xF4\x71\x73\x7F\x37\x98\xD8\x82\x12\x9A\x7C\x1B\x96\x8F\x7E\xF9\x41\x85\x0F\xE1\xCE\x7D\xF4\x08\x89\x82\x73\xCD\x81\xDB\x11\x99\x7E\x1B\x96\x88\x82\x05\xA0\xDE\xC7\x4D\x5A\xC1\x93\x39\xAD\xC3\x7D\x43\x21\xBD\x3C\xCB\xBE\x88\xAD\x74\xC4\x22\x68\x8B\x92\xAF\x8A\xC5\x7D\xB5\x71\x8F\x39\x99\xCC\x3D\xAE\xD1\xB6\x38\xAE\x05\x06\xDA\x83\x26\xB6\x7B\xA2\x05\x5F\x89\x9F\xAE\xDF\x82\xB4\xE4\xBC\xA0\xB0\x71\x93\xA2\x9D\xC5", +"\xA0\x45\xB1\x78\x96\xA6\x64\xB5\x0E\xB9\x81\x10\xBF\xA7\xE5\x61\xA9\x41\xDB\xB7\xBB\xA2\xBF\xB4\xE7\x2D\xAD\xAA\x77\xB5\x71\xA7\x73\x76\xA0\x7B\xCB\x40\x48\x76\x5A\x33\x4E\xAD\x5E\x41\xBC\x3E\x4F\xCD\xC5\xBE\x4C\x36\x0B\x23\x24\x3C\x17\xF5\xA1\x9D\xF3\x34\xA2\xDE\x18\x07\xEA\x4F\xFB\xE9\x74\x8A\x48\xC1\x67\x5A\xA4\x37\x1A\x00\xEE\x74\x01\xDB\x7F\xA4\xE8\x31\x3B\x65\x1C\x34\x07\x6A\xE8\x38\x54\xEE\x6E\xED\xD7\x30\xEC\x6F\x1E\x04\xEF\xE3\x1C\x03\x5C\xAF\x3F\x1C\x6F\x46\x4D\xE9\xC2\xF3\x49\xF0\xCB\x43\x5E\xE1\x80\x0A\xF1\x65\x7C\x34\x52\x14\x98\xEC\x00\x5E\xD5\x0D\x59\xCD\x86\xF0\x52\xB8\x78\x6F\x16\xFC\x6F\xC0\xC6\x42\xF1\x86\xED\xF1\xE1\x90\xFB\x7E\x4A\x6D\xD8\x53\x9C\xE3\x70\xE6\x92\x4A\xF2\xCB\x5E\x69\x84\x9D\xE6\x4B\x3F\x2C\x40\xF5\xC2\xE2\xF5\xE9\xA4\xFE\x86\xE4\xFD\xD9\xF4\xE8\x2B\xF6\x59\xAD\xFD\x6B\x40\x1C\x87\xF2\xA5\x32\xF3\xCB\xE4\x4B\xF0\x43\x0A\xF4\xF0\x09\x5F\x2A\x20\xCE\xD4\x0F\xE6\xC7\xE5\xF9\xA6\xC8\xB9\xDA\x72\x13\xFA\xAF\x4F\x71\xF1\xC7\x89\xFA\xF9\xC8\x58\x21\xF3\xCE\x5F\xF8\x00\x11\xFA\xFB\xBF\x57\x71\xF0\xF3\x48\xB9\x62\xE7\x08\xFD\xAF\xEA\xFF\xE5\x81\xF6\x49\xA9\x60\xFE\x4C\x81\xF7\xF7\x9C\x46\x4D\x02\x8C\x0A\xF4\x45\xFD\x77\x7F\x02\x1D\x7B\x16\x26\x7F\x02\x8B\x75\x33\x5F\x68\xFB\x37\x80\x37\x12\x7B\x46\x24\x20\x0C\x85\x10\x06\x88\x18\x8A\x76\x20\x83\x78\x11\x15\x0E\x7F\x27\x34\x10\x19\x87\x80\x6C\x7E\x43\xE3\x7A\x2E\xBD\x20\x00\x14\x4C\x1B\x00\x7A\x1F\xFF\x0F\x7F\x85\x76\x24\x4E\x68\x2B\x1B\x83\x10\x2D\x87\x7F\x1F\x8C\x21\xB5\x73\x82\x68\x12\x10\xA9\x46\x82\x66\x69\x20\x29\x8F\x82\x67\x26\x24\xD5\x4A\x82\xF1\x1C\x80\x33\x85\x06\x35\x82\x82\x48\x89\x83\x3E\x8C\x2C\xC9\x59\x20\x87\x7E\x80\xAE\x70\x7E\x21\x8F\x26\x52\x77\x5F\x54\x7B\x84\xA6\x10\x5C\x3D\x87\x13\x8A\x7E\x6A\x17\x8C\x10\x83\x62\x10\x13\x8B\x78\x55\x8D\x62\x57\x88\x80\x8C\x5C\x4C\x4D\x2C\x22\x61\x8B\x78\x27\x84\x06\x47\x89\x80\x09\x80\x58\xBC\x19\x75\x5B\x84\x32\x2B\x82\x1B\x9A\x2C\x80\x65\x8B\x24\x67\x8E\x68\x09\x80\x5C\x2C\x28\x67\x86\x7F\x86\x71\x89\x86\x8E\x64\x87\xCE\x73\x10\x41\x1E\x5F\x07\x81\x78\xB5\x61\x81\x23\x12\x7B\x6F\x62\x89\x96\x8A\x7C\x81\x7F\x37\xC8\x77\x89\x81\x75\x4D\x84\x8C\x89\x50\x8C\x10\xDE\x7B\x78\x53\x8B\x26\x94\x23\x48\x3A\x82\x76\x83\x47\x87\x57\x1A\x78\x9B\x6B\x26\x46\x28\x30\x54\x3C\x80\xA7\x87\x76\x58\x80\x73\xC4\x1C\x22\xB2\x82\x83\x3B\x84\x1C\x63\x81\x81\x76\x7D\x1E\xFA\x7F\x26\xFC\x7B\x87\x07\x85\x8B\x4E\x87\x8B\x76\x69\x20\x00\x84\x84\xBD\x89\x07\xBF\x8E\x8C\x62\x74\x49\x86\x78\x78\x1A\x87\x80\xCB\x26\x20\xD5\x45\x88\xCF\x86\x20\x01\x82\x80\x45\x8E\x78\x65\x77\x83\x24\x8D\x76\xD5\x13\x10\x94\x74\x80\x6C\x0F\x7B\x3E\x13\x10\xEB\x71\x7F\xF1\x7C\x7D\xB2\x7F\x79\x0C\x89\x8D\x48\x22\x8D\x8E\x63\x76\xDE\x88\x8F\x81\x84\x49\xE2\x86\x83\xE9\x24\x41\xA6\x70\x40\xEA\x8C\x8E\xE5\x7F\x8E\xC3\x74\x7D\xB1\x73\x12\xB4\x75\x8F\xE3\x83\x10\xDB\x85\x78\x18\x63\x48\xFB\x8E\x81\x53\x4E\x8F\xA3\x75\x76\x91\x77\x8E\xD7\x19\x40\x05\x95\x78\x99\x75\x7D\xE9\x71\x8F\xD8\x31\x78\x04\x2D\x86\xA1\x7F\x90\xC5\x4C\x8F\x88\x8A\x8F\x18\x1F\x8D\xBC\x83\x8D\x0B\x81\x78\xAE\x61\x83\xE0\x75\x81\xF7\x86\x91\xAA\x8A\x51\x15\x90\x8E\x17\x9B\x80\x88\x17\x7C\xD7\x82\x80\xF6\x83\x84\x3A\x99\x8F\x14\x9F\x92\x2C\x9F\x72\xB9\x4B\x3F\xA5\x8E\x2A\xCE\x27\x7E\x51\x83\x80\x5F\x38\x90\x67\x27\x7D\x22\x2D\x1A\xF0\x79\x90\xB0\x73\x38\xDD\x73\x94\xF7\x75\x94\x08\x11\x91\xD6\x7D\x8D\x4A\x97\x94\xFD\x8E\x94\x20\x92\x21\x52\x92\x7C\x54\x9D\x95\xBE\x72\x91\x27\x3E\x7E\x5B\x9F\x96\xF2\x7C\x37\x4D\x7F\x95\x0C\x16\x36\x02\x88\x93\x0C\x1F\x89\x4D\x79\x75\x4F\x90\x00\x92\x75\x62\xA9\x89\x8F\x59\x45\x10\xA1\x88\x10\x13\x0C\x80\x83\x97\x98\x09\x81\x47\x75\x82\x21\xFE\x5C\x8A\x09\x1E\x8A\x79\x8C\x10\xBB\x83\x10\xD1\x85\x96\x5B\x72\x99\x8B\x80\x95\x56\x52\x4E\xBA\x8C\x80\x59\x7D\x99\x02\x81\x8C\x96\x92\x10\xFF\x8B\x34\x67\x93\x8B\x68\x98\x88\xA0\x94\x7E\x8C\x8F\x35\xC7\x5F\x9A\xF7\x77\x9A\x97\x82\x87\x2D\x94\x8D\xA0\x83\x89\x18\x14\x01\xBB\x91\x81\x99\x84\x37\xC3\x90\x9C\x37\x13\x8A\x7C\x97\x7F\x7E\x92\x63\xA6\x94\x99\x71\x43\x98\x85\x94\x24\x90\x9D\x92\x89\x99\x10\xB2\x79\x78\x0E\x90\x90\x02\x16\x93\xCA\x73\x91\x3C\x98\x9B\xE0\x71\x8E\x19\x93\x82\x1B\x9C\x2A\xE8\x88\x3E", +"\x95\x7A\x90\xAA\x7B\x96\xC0\x72\x92\xF0\x8C\x95\x77\x9E\x95\xF3\x80\x96\xE0\x72\x96\x04\x1E\x9D\x6E\x86\x96\x0C\x10\x93\xE3\x9F\x93\xBA\x75\x9E\x48\x82\x90\x65\x77\x7A\xEB\x9B\x7D\x56\x96\x26\x21\x98\x97\x53\x90\x38\x55\x9D\x40\x81\x7D\x90\xD8\x8A\x92\x00\x0A\x9F\xDC\x8B\x93\x09\x2D\x93\x31\x99\x8F\x18\x98\x7B\x1A\x96\x8E\xE8\x9D\x91\xA9\x2F\x91\x81\x9C\x7A\xF0\x92\x9F\x24\x90\xA1\xB2\x77\x92\x0C\x8D\x9C\xF9\x9B\x94\x4C\x8E\x92\xFD\x90\xA3\x59\x84\x8D\x34\x9D\x64\x2D\xA4\xA1\x16\xA2\x97\x18\xA4\x1C\x1A\xAF\x9F\x32\x9E\x43\x90\x8D\x67\xC7\x9A\x98\x23\x1B\x89\x87\x87\x26\xF8\x90\x83\x34\xA8\x8B\x64\x73\xA3\xB1\x9C\x94\x0A\x80\x82\xEE\x9D\x8E\xD0\x72\x6C\x5F\x2D\xA0\xC4\x7C\xA0\x9E\x9E\x68\xD8\x75\x97\x0E\xA0\x97\x16\x2A\x97\x2E\x83\xA1\xDC\x95\xA1\x4D\xAB\x8C\x3E\xA2\x9E\xDF\x90\xA0\x1C\x23\x98\x52\x5D\x96\x23\x92\x9F\xCF\x37\xA1\x8E\x64\x97\x5A\xAF\xA0\x5C\xA8\x7F\xB2\x78\x67\x1D\x85\xA4\x80\xA1\x94\x23\x1A\x9D\x66\xA8\x84\x1C\x89\xA6\x97\x39\x45\x3F\xAD\xA6\x41\xAC\x21\xAD\x94\x8E\xE4\x87\x9E\x41\x29\x9E\x1C\x24\xA2\x73\x2B\xA0\xED\x9E\x96\x61\xA3\x9F\xD0\x1E\x79\xF6\x9A\x7C\x4B\xA2\x10\x7F\xAB\xA1\x81\x8A\xA8\x6C\xAB\x9F\x8D\xA5\x06\x8F\xA9\x2E\x91\xA5\x7A\x05\xA4\x90\xEC\x91\x97\x25\xAF\x9E\x7B\xA1\x9F\x76\x92\x8F\x0C\x9F\xA9\x8B\x71\xAA\x00\x03\xAA\x40\xA8\x98\x3E\x2B\xA8\xA8\xAC\xA1\x20\xA3\x27\xB9\x7E\xA8\x1C\x90\x00\xBC\x71\xAB\x16\x26\x90\xB5\x92\x10\x09\xAA\x8E\x26\x9F\x41\x39\xA7\xA6\xBE\xAC\xA8\xC0\xAD\x24\xC2\xA6\xA7\x69\x9E\x43\x46\xA7\x13\x35\x95\xAD\x86\xA3\x10\xD7\xA3\xAC\xA5\xA1\xAC\xA7\xAC\xAD\xBD\x90\x94\xDF\xAA\x14\x48\xAB\x9D\xE3\xA2\xAA\x88\xA0\x5C\xDB\xAC\xA3\xC4\xA4\xA5\xB3\xA6\xA5\xE6\x78\xA5\xD2\x79\xA7\x62\xAB\x8E\xF6\xA9\x80\x5F\xAE\xAF\x9C\xA3\xA6\xB2\x73\x8A\x49\xA6\x26\xBC\xA5\xAE\xEA\xA2\xA5\xF4\xA9\xAE\x01\xBB\xAE\xF8\xA7\xA9\x6C\x9C\xAF\x60\xAB\xA5\x99\xAC\x7E\x73\x97\x3B\x20\x17\xB1\x7A\xA4\x9F\x23\x1C\x1B\x17\x01\xA8\x96\x84\xA6\x04\x1B\x9C\x52\x82\x7E\x85\x73\x9D\x34\x15\x9D\x0E\xB9\x45\x81\x7C\x1B\x19\x04\xB2\x98\x8B\xA2\xD4\xA4\xB3\x82\xA7\x13\xBC\x10\x33\x38\xB5\x8D\xB2\x71\xAE\x34\xB1\xB3\x10\xBD\xB3\xD8\x93\xA8\xBA\xA6\x78\x63\x85\xAF\x5D\xAD\xAD\xC8\xAE\xA1\xE6\x95\xAC\x84\x24\xA9\x07\xA9\x7E\x75\xA5\xA5\x07\x97\xA2\x76\x99\xA2\x0B\x97\x13\xF4\x87\x80\x49\xB3\xB4\x1A\xB9\xAA\xAB\xA2\x1A\x4F\xBE\x43\x03\x9E\x6E\x96\xAF\x26\x98\xA2\xAB\x73\xA7\xAB\x25\x92\x7B\x12\xA2\x80\x5F\xB0\xA5\x3E\x92\xB6\x02\xAD\xAA\x01\xA1\xA2\xCA\xAE\x91\xCC\xA0\xB0\xF9\xA7\xB5\xB5\xA8\xA2\x74\xAF\xB6\x23\x1C\xA2\x07\x8C\x34\x60\xBF\x26\x45\x8D\xAE\x57\x10\xB4\x02\x88\xB8\x74\xB4\xAA\x12\xB7\x28\x39\xBE\xAE\x47\xB5\x78\x73\xB8\x10\xFE\x98\xAD\x4C\xB9\x29\x7F\xBF\xAC\xFB\xAD\x25\x59\xAA\xA9\x18\xBC\xB6\x8A\xB7\x32\x03\xB4\xBA\x1F\xBD\xA9\x07\xB7\xB9\x4D\x79\xB9\x04\x1B\xB9\xE6\xA3\xB9\x9E\xB4\xB1\x51\x96\xB1\x04\xB5\xB5\x4B\xB8\x88\x78\xAA\xBA\xFF\xA2\xB4\x9A\x94\xB4\x79\x96\xB3\x60\x8E\x98\x14\xAB\x99\xCA\x71\x8C\x8C\xB9\x10\x8E\xB7\x7F\x90\xB8\x10\xC8\xBB\x78\xCA\xB2\xBC\x92\x80", +}; + + void JsonGetParserBuffer(vl::stream::MemoryStream& stream) + { + vl::stream::MemoryStream compressedStream; + for (vint i = 0; i < parserBufferRows; i++) + { + vint size = i == parserBufferRows - 1 ? parserBufferRemain : parserBufferBlock; + compressedStream.Write((void*)parserBuffer[i], size); + } + compressedStream.SeekFromBegin(0); + vl::stream::LzwDecoder decoder; + vl::stream::DecoderStream decoderStream(compressedStream, decoder); + vl::collections::Array buffer(65536); + while (true) + { + vl::vint size = decoderStream.Read(&buffer[0], 65536); + if (size == 0) break; + stream.Write(&buffer[0], size); + } + stream.SeekFromBegin(0); + } +/*********************************************************************** +Unescaping Function Foward Declarations +***********************************************************************/ + + extern void JsonUnescapingString(vl::parsing::ParsingToken& value, const vl::collections::List& tokens); + +/*********************************************************************** +Parsing Tree Conversion Driver Implementation +***********************************************************************/ + + class JsonTreeConverter : public vl::parsing::ParsingTreeConverter + { + public: + using vl::parsing::ParsingTreeConverter::SetMember; + + bool SetMember(JsonLiteral::JsonValue& member, vl::Ptr node, const TokenList& tokens) + { + vl::Ptr token=node.Cast(); + if(token) + { + if(token->GetValue()==L"True") { member=JsonLiteral::JsonValue::True; return true; } + else if(token->GetValue()==L"False") { member=JsonLiteral::JsonValue::False; return true; } + else if(token->GetValue()==L"Null") { member=JsonLiteral::JsonValue::Null; return true; } + else { member=JsonLiteral::JsonValue::True; return false; } + } + member=JsonLiteral::JsonValue::True; + return false; + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + SetMember(tree->value, obj->GetMember(L"value"), tokens); + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + if(SetMember(tree->content, obj->GetMember(L"content"), tokens)) + { + JsonUnescapingString(tree->content, tokens); + } + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + SetMember(tree->content, obj->GetMember(L"content"), tokens); + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + SetMember(tree->items, obj->GetMember(L"items"), tokens); + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + if(SetMember(tree->name, obj->GetMember(L"name"), tokens)) + { + JsonUnescapingString(tree->name, tokens); + } + SetMember(tree->value, obj->GetMember(L"value"), tokens); + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + SetMember(tree->fields, obj->GetMember(L"fields"), tokens); + } + + vl::Ptr ConvertClass(vl::Ptr obj, const TokenList& tokens)override + { + if(obj->GetType()==L"Literal") + { + vl::Ptr tree = new JsonLiteral; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"String") + { + vl::Ptr tree = new JsonString; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"Number") + { + vl::Ptr tree = new JsonNumber; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"Array") + { + vl::Ptr tree = new JsonArray; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"ObjectField") + { + vl::Ptr tree = new JsonObjectField; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"Object") + { + vl::Ptr tree = new JsonObject; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else + return 0; + } + }; + + vl::Ptr JsonConvertParsingTreeNode(vl::Ptr node, const vl::collections::List& tokens) + { + JsonTreeConverter converter; + vl::Ptr tree; + converter.SetMember(tree, node, tokens); + return tree; + } + +/*********************************************************************** +Parsing Tree Conversion Implementation +***********************************************************************/ + + vl::Ptr JsonLiteral::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return JsonConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr JsonString::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return JsonConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr JsonNumber::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return JsonConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr JsonArray::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return JsonConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr JsonObjectField::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return JsonConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr JsonObject::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return JsonConvertParsingTreeNode(node, tokens).Cast(); + } + +/*********************************************************************** +Parser Function +***********************************************************************/ + + vl::Ptr JsonParseAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) + { + vl::parsing::tabling::ParsingState state(input, table, codeIndex); + state.Reset(L"JRoot"); + vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); + vl::Ptr node=parser->Parse(state, errors); + return node; + } + + vl::Ptr JsonParseAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) + { + vl::collections::List> errors; + return JsonParseAsParsingTreeNode(input, table, errors, codeIndex); + } + + vl::Ptr JsonParse(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) + { + vl::parsing::tabling::ParsingState state(input, table, codeIndex); + state.Reset(L"JRoot"); + vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); + vl::Ptr node=parser->Parse(state, errors); + if(node && errors.Count()==0) + { + return JsonConvertParsingTreeNode(node, state.GetTokens()).Cast(); + } + return 0; + } + + vl::Ptr JsonParse(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) + { + vl::collections::List> errors; + return JsonParse(input, table, errors, codeIndex); + } + +/*********************************************************************** +Table Generation +***********************************************************************/ + + vl::Ptr JsonLoadTable() + { + vl::stream::MemoryStream stream; + JsonGetParserBuffer(stream); + vl::Ptr table=new vl::parsing::tabling::ParsingTable(stream); + table->Initialize(); + return table; + } + + } + } +} + + +/*********************************************************************** +.\XML\PARSINGXML.CPP +***********************************************************************/ + +namespace vl +{ + namespace parsing + { + namespace xml + { + using namespace stream; + using namespace collections; + using namespace regex; + +/*********************************************************************** +Unescaping Function Foward Declarations +***********************************************************************/ + + void XmlMergeTextFragment(vl::collections::List>& value, const vl::collections::List& tokens) + { + vint begin=-1; + vint end=-1; + for(vint i=value.Count()-1;i>=-1;i--) + { + if(i==-1) + { + if(end!=-1) begin=0; + } + else if(value[i].Cast()) + { + if(end==-1) end=i; + } + else + { + if(end!=-1) begin=i+1; + } + if(begin!=-1 && end!=-1) + { + vint tokenBegin=value[begin].Cast()->content.tokenIndex; + vint tokenEnd=value[end].Cast()->content.tokenIndex; + while(tokenBegin>0) + { + if(tokens.Get(tokenBegin-1).token==(vint)XmlParserTokenIndex::SPACE || tokens.Get(tokenBegin-1).token==-1) + { + tokenBegin--; + } + else + { + break; + } + } + while(tokenEnd xmlText=new XmlText; + xmlText->codeRange=range; + xmlText->content.codeRange=range; + xmlText->content.value=XmlUnescapeValue(text); + + value.RemoveRange(begin, end-begin+1); + value.Insert(begin, xmlText); + + begin=-1; + end=-1; + } + } + } + + void XmlUnescapeAttributeValue(vl::parsing::ParsingToken& value, const vl::collections::List& tokens) + { + value.value=XmlUnescapeValue(value.value.Sub(1, value.value.Length()-2)); + } + + void XmlUnescapeCData(vl::parsing::ParsingToken& value, const vl::collections::List& tokens) + { + value.value=XmlUnescapeCData(value.value); + } + + void XmlUnescapeComment(vl::parsing::ParsingToken& value, const vl::collections::List& tokens) + { + value.value=XmlUnescapeComment(value.value); + } + +/*********************************************************************** +XmlPrintVisitor +***********************************************************************/ + + class XmlPrintVisitor : public Object, public XmlNode::IVisitor + { + public: + TextWriter& writer; + + XmlPrintVisitor(TextWriter& _writer) + :writer(_writer) + { + } + + void Visit(XmlText* node) + { + writer.WriteString(XmlEscapeValue(node->content.value)); + } + + void Visit(XmlCData* node) + { + writer.WriteString(XmlEscapeCData(node->content.value)); + } + + void Visit(XmlAttribute* node) + { + writer.WriteString(node->name.value); + writer.WriteString(L"=\""); + writer.WriteString(XmlEscapeValue(node->value.value)); + writer.WriteString(L"\""); + } + + void Visit(XmlComment* node) + { + writer.WriteString(XmlEscapeComment(node->content.value)); + } + + void Visit(XmlElement* node) + { + writer.WriteChar(L'<'); + writer.WriteString(node->name.value); + FOREACH(Ptr, att, node->attributes) + { + writer.WriteChar(L' '); + att->Accept(this); + } + if(node->subNodes.Count()==0) + { + writer.WriteString(L"/>"); + } + else + { + writer.WriteChar(L'>'); + FOREACH(Ptr, subNode, node->subNodes) + { + subNode->Accept(this); + } + writer.WriteString(L"name.value); + writer.WriteChar(L'>'); + } + } + + void Visit(XmlInstruction* node) + { + writer.WriteString(L"name.value); + FOREACH(Ptr, att, node->attributes) + { + writer.WriteChar(L' '); + att->Accept(this); + } + writer.WriteString(L"?>"); + } + + void Visit(XmlDocument* node) + { + FOREACH(Ptr, prolog, node->prologs) + { + prolog->Accept(this); + } + node->rootElement->Accept(this); + } + }; + +/*********************************************************************** +API +***********************************************************************/ + + WString XmlEscapeValue(const WString& value) + { + WString result; + const wchar_t* reading=value.Buffer(); + while(wchar_t c=*reading++) + { + switch(c) + { + case L'<': + result+=L"<"; + break; + case L'>': + result+=L">"; + break; + case L'&': + result+=L"&"; + break; + case L'\'': + result+=L"'"; + break; + case L'\"': + result+=L"""; + break; + default: + result+=c; + } + } + return result; + } + + WString XmlUnescapeValue(const WString& value) + { + WString result; + const wchar_t* reading=value.Buffer(); + while(*reading) + { + if(wcsncmp(reading, L"<", 4)==0) + { + result+=L'<'; + reading+=4; + } + else if(wcsncmp(reading, L">", 4)==0) + { + result+=L'>'; + reading+=4; + } + else if(wcsncmp(reading, L"&", 5)==0) + { + result+=L'&'; + reading+=5; + } + else if(wcsncmp(reading, L"'", 6)==0) + { + result+=L'\''; + reading+=6; + } + else if(wcsncmp(reading, L""", 6)==0) + { + result+=L'\"'; + reading+=6; + } + else + { + result+=*reading++; + } + } + return result; + } + + WString XmlEscapeCData(const WString& value) + { + return L""; + } + + WString XmlUnescapeCData(const WString& value) + { + return value.Sub(9, value.Length()-12); + } + + WString XmlEscapeComment(const WString& value) + { + return L""; + } + + WString XmlUnescapeComment(const WString& value) + { + return value.Sub(4, value.Length()-7); + } + + void XmlPrint(Ptr node, stream::TextWriter& writer) + { + XmlPrintVisitor visitor(writer); + node->Accept(&visitor); + } + + void XmlPrintContent(Ptr element, stream::TextWriter& writer) + { + XmlPrintVisitor visitor(writer); + FOREACH(Ptr, node, element->subNodes) + { + node->Accept(&visitor); + } + } + + WString XmlToString(Ptr node) + { + return GenerateToStream([&](StreamWriter& writer) + { + XmlPrint(node, writer); + }); + } + +/*********************************************************************** +Linq To Xml +***********************************************************************/ + + Ptr XmlGetAttribute(Ptr element, const WString& name) + { + return XmlGetAttribute(element.Obj(), name); + } + + Ptr XmlGetElement(Ptr element, const WString& name) + { + return XmlGetElement(element.Obj(), name); + } + + collections::LazyList> XmlGetElements(Ptr element) + { + return XmlGetElements(element.Obj()); + } + + collections::LazyList> XmlGetElements(Ptr element, const WString& name) + { + return XmlGetElements(element.Obj(), name); + } + + WString XmlGetValue(Ptr element) + { + return XmlGetValue(element.Obj()); + } + + Ptr XmlGetAttribute(XmlElement* element, const WString& name) + { + FOREACH(Ptr, att, element->attributes) + { + if(att->name.value==name) + { + return att; + } + } + return 0; + } + + Ptr XmlGetElement(XmlElement* element, const WString& name) + { + FOREACH(Ptr, node, element->subNodes) + { + Ptr subElement=node.Cast(); + if(subElement && subElement->name.value==name) + { + return subElement; + } + } + return 0; + } + + collections::LazyList> XmlGetElements(XmlElement* element) + { + return From(element->subNodes) + .FindType(); + } + + collections::LazyList> XmlGetElements(XmlElement* element, const WString& name) + { + return From(element->subNodes) + .FindType() + .Where([name](Ptr e){return e->name.value==name;}); + } + + WString XmlGetValue(XmlElement* element) + { + WString result; + FOREACH(Ptr, node, element->subNodes) + { + if(Ptr text=node.Cast()) + { + result+=text->content.value; + } + else if(Ptr text=node.Cast()) + { + result+=text->content.value; + } + } + return result; + } + +/*********************************************************************** +XmlElementWriter +***********************************************************************/ + + XmlElementWriter::XmlElementWriter(Ptr _element, const XmlElementWriter* _previousWriter) + :element(_element) + ,previousWriter(_previousWriter) + { + } + + XmlElementWriter::~XmlElementWriter() + { + } + + const XmlElementWriter& XmlElementWriter::Attribute(const WString& name, const WString& value)const + { + Ptr node=new XmlAttribute; + node->name.value=name; + node->value.value=value; + element->attributes.Add(node); + return *this; + } + + XmlElementWriter XmlElementWriter::Element(const WString& name)const + { + Ptr node=new XmlElement; + node->name.value=name; + element->subNodes.Add(node); + return XmlElementWriter(node, this); + } + + const XmlElementWriter& XmlElementWriter::End()const + { + return *previousWriter; + } + + const XmlElementWriter& XmlElementWriter::Text(const WString& value)const + { + Ptr node=new XmlText; + node->content.value=value; + element->subNodes.Add(node); + return *this; + } + + const XmlElementWriter& XmlElementWriter::CData(const WString& value)const + { + Ptr node=new XmlCData; + node->content.value=value; + element->subNodes.Add(node); + return *this; + } + + const XmlElementWriter& XmlElementWriter::Comment(const WString& value)const + { + Ptr node=new XmlComment; + node->content.value=value; + element->subNodes.Add(node); + return *this; + } + } + } +} + + +/*********************************************************************** +.\XML\PARSINGXML_AST.CPP +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parser::ParsingXml.parser.txt + +This file is generated by: Vczh Parser Generator +***********************************************************************/ + + +namespace vl +{ + namespace parsing + { + namespace xml + { +/*********************************************************************** +Visitor Pattern Implementation +***********************************************************************/ + + void XmlText::Accept(XmlNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void XmlCData::Accept(XmlNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void XmlAttribute::Accept(XmlNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void XmlComment::Accept(XmlNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void XmlElement::Accept(XmlNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void XmlInstruction::Accept(XmlNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + void XmlDocument::Accept(XmlNode::IVisitor* visitor) + { + visitor->Visit(this); + } + + } + } +} +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + using namespace vl::parsing::xml; + +#define PARSING_TOKEN_FIELD(NAME)\ + CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(get_##NAME, NO_PARAMETER, vl::WString(ClassType::*)(), [](ClassType* node) { return node->NAME.value; }, L"*", L"*")\ + CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(set_##NAME, { L"value" }, void(ClassType::*)(const vl::WString&), [](ClassType* node, const vl::WString& value) { node->NAME.value = value; }, L"*", L"*")\ + CLASS_MEMBER_PROPERTY_REFERENCETEMPLATE(NAME, get_##NAME, set_##NAME, L"$This->$Name.value")\ + + IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlNode, system::XmlNode) + IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlText, system::XmlText) + IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlCData, system::XmlCData) + IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlAttribute, system::XmlAttribute) + IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlComment, system::XmlComment) + IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlElement, system::XmlElement) + IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlInstruction, system::XmlInstruction) + IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlDocument, system::XmlDocument) + IMPL_TYPE_INFO_RENAME(vl::parsing::xml::XmlNode::IVisitor, system::XmlNode::IVisitor) + + BEGIN_CLASS_MEMBER(XmlNode) + CLASS_MEMBER_METHOD_OVERLOAD(Accept, {L"visitor"}, void(XmlNode::*)(XmlNode::IVisitor* visitor)) + END_CLASS_MEMBER(XmlNode) + + BEGIN_CLASS_MEMBER(XmlText) + CLASS_MEMBER_BASE(XmlNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + PARSING_TOKEN_FIELD(content) + END_CLASS_MEMBER(XmlText) + + BEGIN_CLASS_MEMBER(XmlCData) + CLASS_MEMBER_BASE(XmlNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + PARSING_TOKEN_FIELD(content) + END_CLASS_MEMBER(XmlCData) + + BEGIN_CLASS_MEMBER(XmlAttribute) + CLASS_MEMBER_BASE(XmlNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + PARSING_TOKEN_FIELD(name) + PARSING_TOKEN_FIELD(value) + END_CLASS_MEMBER(XmlAttribute) + + BEGIN_CLASS_MEMBER(XmlComment) + CLASS_MEMBER_BASE(XmlNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + PARSING_TOKEN_FIELD(content) + END_CLASS_MEMBER(XmlComment) + + BEGIN_CLASS_MEMBER(XmlElement) + CLASS_MEMBER_BASE(XmlNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + PARSING_TOKEN_FIELD(name) + PARSING_TOKEN_FIELD(closingName) + CLASS_MEMBER_FIELD(attributes) + CLASS_MEMBER_FIELD(subNodes) + END_CLASS_MEMBER(XmlElement) + + BEGIN_CLASS_MEMBER(XmlInstruction) + CLASS_MEMBER_BASE(XmlNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + PARSING_TOKEN_FIELD(name) + CLASS_MEMBER_FIELD(attributes) + END_CLASS_MEMBER(XmlInstruction) + + BEGIN_CLASS_MEMBER(XmlDocument) + CLASS_MEMBER_BASE(XmlNode) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + CLASS_MEMBER_FIELD(prologs) + CLASS_MEMBER_FIELD(rootElement) + END_CLASS_MEMBER(XmlDocument) + + BEGIN_INTERFACE_MEMBER(XmlNode::IVisitor) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlText* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlCData* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlAttribute* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlComment* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlElement* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlInstruction* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(XmlNode::IVisitor::*)(XmlDocument* node)) + END_INTERFACE_MEMBER(XmlNode) + +#undef PARSING_TOKEN_FIELD + + class XmlTypeLoader : public vl::Object, public ITypeLoader + { + public: + void Load(ITypeManager* manager) + { + ADD_TYPE_INFO(vl::parsing::xml::XmlNode) + ADD_TYPE_INFO(vl::parsing::xml::XmlText) + ADD_TYPE_INFO(vl::parsing::xml::XmlCData) + ADD_TYPE_INFO(vl::parsing::xml::XmlAttribute) + ADD_TYPE_INFO(vl::parsing::xml::XmlComment) + ADD_TYPE_INFO(vl::parsing::xml::XmlElement) + ADD_TYPE_INFO(vl::parsing::xml::XmlInstruction) + ADD_TYPE_INFO(vl::parsing::xml::XmlDocument) + ADD_TYPE_INFO(vl::parsing::xml::XmlNode::IVisitor) + } + + void Unload(ITypeManager* manager) + { + } + }; +#endif + + bool XmlLoadTypes() + { +#ifndef VCZH_DEBUG_NO_REFLECTION + ITypeManager* manager=GetGlobalTypeManager(); + if(manager) + { + Ptr loader=new XmlTypeLoader; + return manager->AddTypeLoader(loader); + } +#endif + return false; + } + } + } +} + + +/*********************************************************************** +.\XML\PARSINGXML_PARSER.CPP +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parser::ParsingXml.parser.txt + +This file is generated by: Vczh Parser Generator +***********************************************************************/ + + +namespace vl +{ + namespace parsing + { + namespace xml + { +/*********************************************************************** +ParserText +***********************************************************************/ + +const wchar_t* const parserTextBuffer[] = { + L"" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"// AST" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"" L"\r\n" +, L"class Node" L"\r\n" +, L"{" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class Text : Node" L"\r\n" +, L"{" L"\r\n" +, L"\ttoken content;" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class CData : Node" L"\r\n" +, L"{" L"\r\n" +, L"\ttoken content (XmlUnescapeCData);" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class Attribute : Node" L"\r\n" +, L"{" L"\r\n" +, L"\ttoken name\t\t\t\t\t\t\t\t\t@Color(\"AttName\");" L"\r\n" +, L"\ttoken value (XmlUnescapeAttributeValue)\t\t@Color(\"AttValue\");" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class Comment : Node" L"\r\n" +, L"{" L"\r\n" +, L"\ttoken content (XmlUnescapeComment);" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class Element : Node" L"\r\n" +, L"{" L"\r\n" +, L"\ttoken name\t\t\t\t\t\t\t\t\t@Color(\"TagName\");" L"\r\n" +, L"\ttoken closingName\t\t\t\t\t\t\t@Color(\"TagName\");" L"\r\n" +, L"\tAttribute[] attributes;" L"\r\n" +, L"\tNode[] subNodes (XmlMergeTextFragment);" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class Instruction : Node" L"\r\n" +, L"{" L"\r\n" +, L"\ttoken name\t\t\t\t\t\t\t\t\t@Color(\"TagName\");" L"\r\n" +, L"\tAttribute[] attributes;" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"class Document : Node" L"\r\n" +, L"{" L"\r\n" +, L"\tNode[] prologs;" L"\r\n" +, L"\tElement rootElement;" L"\r\n" +, L"}" L"\r\n" +, L"" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"// Lexer" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"" L"\r\n" +, L"token INSTRUCTION_OPEN = \"/\"\t\t@Color(\"Boundary\");" L"\r\n" +, L"token COMPLEX_ELEMENT_OPEN = \"/\"\t\t@Color(\"Boundary\");" L"\r\n" +, L"token ELEMENT_OPEN = \"/<\"\t\t\t\t@Color(\"Boundary\");" L"\r\n" +, L"token ELEMENT_CLOSE = \"/>\"\t\t\t\t@Color(\"Boundary\");" L"\r\n" +, L"token EQUAL = \"/=\";" L"\r\n" +, L"" L"\r\n" +, L"token NAME = \"[a-zA-Z0-9:._/-]+\"\t\t\t\t\t\t\t\t@ContextColor();" L"\r\n" +, L"token ATTVALUE = \"\"\"[^<>\"\"]*\"\"|\'[^<>\']*\'\"\t\t\t\t\t\t@ContextColor();" L"\r\n" +, L"token COMMENT = \"/]|-[^/->]|--[^>])*--/>\"\t\t\t@Color(\"Comment\");" L"\r\n" +, L"token CDATA = \"/])*/]/]/>\";" L"\r\n" +, L"token TEXT = \"([^<>=\"\"\' /r/n/ta-zA-Z0-9:._/-])+|\"\"|\'\";" L"\r\n" +, L"" L"\r\n" +, L"discardtoken SPACE = \"/s+\";" L"\r\n" +, L"" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"// Rules" L"\r\n" +, L"//////////////////////////////////////////////////////////////////" L"\r\n" +, L"" L"\r\n" +, L"rule Attribute XAttribute = NAME:name \"=\" ATTVALUE:value as Attribute;" L"\r\n" +, L"rule Text XText = (NAME:content | EQUAL:content | ATTVALUE:content | TEXT:content) as Text;" L"\r\n" +, L"rule CData XCData = CDATA:content as CData;" L"\r\n" +, L"rule Comment XComment = COMMENT:content as Comment;" L"\r\n" +, L"rule Element XElement = \"<\" NAME:name {XAttribute:attributes} (\"/>\" | \">\" {XSubNode:subNodes} \"\") as Element;" L"\r\n" +, L"rule Node XSubNode = !XText | !XCData | !XComment | !XElement;" L"\r\n" +, L"rule Instruction XInstruction = \"\" as Instruction;" L"\r\n" +, L"rule Document XDocument = {XInstruction:prologs | XComment:prologs} XElement:rootElement as Document;" L"\r\n" +}; +const vint lengthTextBuffer[] = { + 2, 68, 8, 68, 2, 12, 3, 3, 2, 19, 3, 17, 3, 2, 20, 3, 36, 3, 2, 24, 3, 40, 63, 3, 2, 22, 3, 38, 3, 2, 22, 3 +, 40, 45, 26, 42, 3, 2, 26, 3, 40, 26, 3, 2, 23, 3, 18, 23, 3, 2, 68, 10, 68, 2, 55, 55, 58, 58, 50, 51, 21, 2, 58, 65 +, 75, 63, 56, 2, 29, 2, 68, 10, 68, 2, 72, 93, 45, 53, 134, 64, 93, 103 +}; +const vint lengthTextBufferTotal = 2487; + + vl::WString XmlGetParserTextBuffer() + { + vl::collections::Array textBuffer(lengthTextBufferTotal + 1); + wchar_t* reading = &textBuffer[0]; + for(vint i = 0; i < sizeof(parserTextBuffer) / sizeof(*parserTextBuffer); i++) + { + memcpy(reading, parserTextBuffer[i], lengthTextBuffer[i] * sizeof(wchar_t)); + reading += lengthTextBuffer[i]; + } + *reading = 0; + return &textBuffer[0]; + } + +/*********************************************************************** +SerializedTable +***********************************************************************/ + +const vint parserBufferLength = 4440; // 18926 bytes before compressing +const vint parserBufferBlock = 1024; +const vint parserBufferRemain = 344; +const vint parserBufferRows = 5; +const char* const parserBuffer[] = { +"\x00\x0E\x00\x02\x83\x80\x07\x7D\x00\x82\x03\xFF\x45\x08\x82\x83\x86\x81\x21\x6F\x6C\x2F\x32\x37\x84\x87\x02\x86\x00\x17\x82\x81\x24\x3C\x3A\x27\x30\x6D\x65\x06\x98\x8A\x80\x8E\x86\x00\x10\x92\x94\x98\x88\x04\x97\x80\x8E\x74\x56\x21\x2C\x35\x3A\x91\x8A\x84\x25\x8C\xA7\x89\x93\x8F\x98\x82\x8D\x08\xC0\x94\x21\x37\x37\x8D\x91\x91\x0C\xB9\x88\x9B\x91\x8D\x9C\x8C\xA0\x3F\x83\x83\xA5\xA0\x96\x98\x93\x93\x04\xCC\xAA\x9E\x93\x80\xA9\xAE\xA9\x44\xC6\x96\xA9\xA8\xAB\x82\xAC\xA7\x0C\xAD\xA9\xA3\x82\x27\x35\x3A\x37\x64\x61\x32\x39\x38\xA0\x9D\xB3\x86\x03\xBC\xAB\x8B\xBC\xB8\x01\xB7\xB7\x71\xF3\xB5\xA4\x8A\xA1\xAD\xBD\xA6\x7B\x88\xAA\xAA\xCC\xB6\xB4\xB8\xB9\x74\xDC\x82\x85\xC6\xB7\xC3\xAC\x97\x7D\xFF\x8F\xC2\xC2\xCD\x83\xBA\x00\x67\x89\xC4\x8B\xC3\xD5\xC4\xC0\xC8\x83\x89\x9F\xC1\xDD\xCC\xD3\x81\xC5\x9A\x81\xD1\xC4\x9C\x00\x8D\xDB\x87\x6F\x6E\x34\x25\x38\x3C\x3A\xBC\x8C\x05\x9D\xFF\x77\xD8\x84\xE0\x88\xDD\xBC\xBE\xC8\xC0\xE9\xD3\xCB\xD4\xCB\x68\xC1\x8F\xA7\xCD\x31\x92\xDC\xD7\x02\x89\x18\x9A\xEB\x8D\x8E\x39\x34\x62\x75\x3B\xDF\x74\xF5\xF0\xF3\xE7\x0F\xC4\x21\x34\x31\x36\xF2\xF2\xAF\x02\xC0\x90\x95\xE5\x32\xDE\xF7\xF2\xD8\x80\x0B\xC4\x2F\x33\x31\x3A\xEB\x74\x37\x74\x78\x7C\x19\x43\x45\x10\x1B\x65\x00\x82\x83\x3F\x0B\x18\x4D\x82\x40\x49\x2E\x13\x1C\x1D\x72\x35\x13\x18\x1D\x69\x39\x6B\x80\x01\x18\x5C\x82\x42\x13\x6F\x24\x12\x4A\x80\x1E\x88\x45\x88\x15\xC9\x4B\x8D\x03\x76\x2C\x9D\x74\x84\x78\xE2\x65\x15\x88\x41\x25\xAE\x15\x54\x70\xDC\x48\x49\x8C\x4C\xDF\x61\x7B\x6C\x7A\x00\x36\x13\x4D\x4D\x9D\x40\x93\x12\x7A\xEC\x44\x80\x53\x18\xB9\x7B\x66\x7E\x80\x4A\x94\x70\x81\x94\x02\x4C\x98\x73\x93\xF7\x79\x7B\x7D\x7F\xFF\x75\x74\x1C\x95\x00\x30\x12\x1D\x53\x67\x33\x1B\x82\x96\x03\x7C\x7E\x7C\x80\x0F\x88\x4D\x9B\x98\x6F\x34\x17\x81\x82\x5E\x8B\x80\x9B\x9C\x00\x8A\x08\x46\x9E\x02\x6B\x7F\x8A\x8F\x65\x26\x90\x97\x74\x02\x78\x9E\x95\x9B\x04\x6D\x93\x1A\x44\x73\x29\x1E\x18\x55\x21\x43\x04\xA2\x74\x85\x88\x80\x83\x8C\x03\x75\x85\x56\x00\x93\x91\x55\xA4\x9D\xD7\x58\x60\x03\x1C\x75\x22\x10\x8A\x88\x82\xB7\x78\xA3\x40\x6D\x91\x83\x85\x85\x17\x99\x8E\x18\x9F\x08\x74\xAE\x9D\x8F\x31\xA9\xAE\x7B\xAA\x02\x6D\xA2\x84\x85\x16\x98\x89\x6C\xA6\x02\x5A\xA1\x48\xB1\x00\x08\xB7\x89\x72\x60\x96\x9E\x91\x80\x02\x90\x08\x45\x0C\x18\x52\xB0\x73\xB5\x38\x4B\x82\x80\xB6\x49\x5A\xB7\x7C\xB7\xD9\x9E\xB6\x78\xB8\x84\x62\xB6\x7A\xB5\x08\x68\xB9\x12\x13\x53\x14\x12\x15\x15\x43\x14\x19\x13\x13\x4E\x1F\x1F\x10\x14\x45\x0E\x1A\xB3\x40\x2F\x3C\x0F\x0B\x0F\xC0\x5F\x61\x04\x46\x03\xD0\x8C\xBA\xBB\xF0\xB2\xB4\xBF\x17\x43\x0C\x1F\x13\x14\x45\x3B\xB2\x43\xBF\x2F\x3E\x0D\x66\x01\x18\x54\x09\xC5\x5E\x4F\x0D\x10\x14\x13\x45\x18\x1F\x15\x11\x20\xCD\x19\xBC\x15\xF6\xB8\xBA\xBD\x87\xFC\xBE\xBF\x08\xA7\x16\x5B\xCC\x42\xC6\x02\x53\x1B\xBB\x11\x20\xE3\xC5\xCB\xC9\x0C\xCE\xC0\xC6\xC4\x00\x2F\x02\xD2\x0F\x92\xBD\x54\x40\x71\x47\xC6\x8B\xCE\x13\x28\xF7\xB9\xBC\xCC\x08\x50\xDD\xBC\xB2\x39\x84\x4B\x88\x43\x57\xC0\x04\xC9\x11\x26\xCC\xDD\xCF\xC3\x45\x10\xD4\x42\xD4\x3E\x1F\x64\xAE\x61\x3A\x46\x81\x15\x15\x41\x0C\x12\xDB\x40\x52\xFD\x08\xC5\xB7\xF7\x40\xDE\x11\x10\x26\xC5\xC8\x42\xDE\x5B\x21\x1D\x0A\x1E\x41\x2D\x0A\x14\x0C\x2D\x39\x0A\x0E\x0B\x5F\x2F\x0D\x09\x17\x2B\x04\x8C\xAE\x7E\xA2\x81\x14\x14\x15\x56\x2D\xD5\x15\x11\x13\x18\x49\xE6\x40\x22\x1B\x1E\x14\x0F\x3E\x22\x0D\x16\x0A\x22\x3C\x17\x0A\xE7\xA0\xE7\x03\xEB\x09\xF9\x48\xDF\x55\xCC\x0F\x5D\xCD\xD4\x15\x22\x18\x45\xEF\xC4\xFE\xA1\x0D\x09\x0B\x28\x1E\xEA\xE2\x0F\x5D\x3C\x1D\x0A\xEF\x2D\x00\xF2\xF3\xF0\x5E\x00\xF9\x0A\x0A\xBB\xD5\xC5\xD7\x40\x59\xE8\xDB\x51\x5E\x44\x12\xE1\x10\x0B\x18\x58\xF8\xEF\x0B\x21\x2F\x0B\x17\x91\xD6\xDE\xFD\xEE\x17\x2F\x1D\x11\xF1\xF9\xBE\xE6\xFC\x1D\xF9\xE8\xC9\xFD\x17\xF2\xEC\xDD\x15\xC7\xD9\x09\x64\x8C\xCA\x40\x54\x21\xC4\x14\x09\x18\x7C\xF2\x43\xF8\xA0\x7D\x06\x08\x27\x00\x05\x17\x32\x0F\x05\x6E\x0F\x04\x7B\x7F\x61\x71\xC1\x45\x77\x70\x89\x6B\x71\x0A\x2B\x0C\x0F\xD2\x67\x07\x71\x0B\x45\x4A\x49\x03\x23\x0A\x28\x01\x0B\x08\x45\x05\x68\x42\x22\x8F\x05\x39\x2B\x06\x75\x93\x22\x40\xB5\x0C\x24\x7E\x81\x34\x50\x0B\x3C\x50\x47\x6E\x34\x68\x20\x1A\xB0\x86\x3B\x32\x85\x0E\x0B\x52\x0F\x0D\x38\x53\x0C\x3D\x72\x14\x0F\x03\x18\x23\x88", +"\x81\x00\x08\x04\x24\x1C\x07\x0D\xFF\x41\x46\x1F\x2D\x80\x00\x2F\x91\x84\xA0\x68\x54\x20\x74\x4B\x88\x57\xBB\x2E\x07\x0F\xF2\x24\x0F\x80\x0C\x26\x8B\x00\x07\x8A\x12\xD2\x8D\x89\x27\x91\x88\x87\x80\x48\x84\x00\x44\x37\x8B\x1C\xAE\x01\x06\x3C\x18\x21\x1C\x82\x23\x8C\x34\x8D\x8A\x07\x20\x17\x6E\xC9\x20\x08\x8E\x1B\x61\x27\x88\x22\x02\x80\x08\x12\x74\x72\xCB\x45\x0C\x8F\x20\x02\x48\x4D\x65\x00\x05\x30\x33\x0B\x90\x76\x9B\x36\x19\x83\x2D\x8D\x34\xB6\x34\x92\x64\x99\x8A\x0C\x73\x88\x20\x4E\xB5\x8C\x89\xBB\x3E\x04\x1E\xFA\x87\x91\x3E\x95\x28\x04\x81\x82\x07\x11\x84\x95\x72\x26\x17\x70\x91\x8A\x95\x25\x23\x8F\x99\x93\x32\x13\x92\x20\x95\x91\x46\x1A\xEC\x85\x96\x17\x33\x04\x93\x04\x3E\x91\x2E\xA1\x93\x94\xBC\x65\x90\x04\x7E\x8C\x91\x2A\x83\x93\x73\x56\xAF\x90\x8F\xB1\x8C\x92\x23\x90\x90\x95\x32\x00\x0F\x96\x00\x03\x99\x19\x12\x08\x22\x6E\xB8\x95\x97\x3C\x91\x4D\x11\x70\x25\x88\x84\x25\x99\x89\xDA\x9E\x04\x08\x40\x08\x4C\x5C\x86\x52\x37\xD8\x98\x0B\x3B\xF4\x0E\x04\x19\x0E\x02\x32\xF7\x94\x8E\x3C\x96\x5E\x4A\x51\xA8\x94\x07\x22\x19\x8E\x31\x88\x99\x99\x23\xBB\x08\x04\xDA\x88\x93\xAD\x39\x8F\x91\x3E\x20\x00\x05\xA8\x95\x61\x40\xFC\x08\x95\xD0\x60\x07\xA0\x58\x13\x09\xA9\x27\x5C\x90\x3C\xA4\x56\x54\x21\x41\x50\x08\x0E\xA2\x04\x7F\x41\xA4\x94\x88\x8B\x53\x1B\x0D\x5F\x50\xB1\x15\xA1\xA0\x29\x13\x94\x08\x73\x9D\x00\x05\x0A\x8B\x9E\xFE\x85\xA7\x49\x83\xA6\x95\x90\x2B\x98\xA3\xB5\x8A\xA1\x24\xA2\xAE\xA0\x88\xA2\x02\xA2\x20\x14\xA2\x08\x16\xA8\xA2\x8D\xA0\xA2\x44\x88\x9F\xA0\x47\x8D\xAF\x9F\x17\x3B\xA3\x8F\x78\x8A\xA4\x4B\x90\x5A\x98\x8B\xB1\xA3\x9A\xF3\x9B\x94\x25\xAE\x50\x59\x58\x79\x30\x8C\x04\x20\x8C\x16\x64\xA0\x56\x61\x6E\x0D\x9E\xA4\x18\x21\x5C\xFA\x9C\xAD\x60\x72\x51\xA7\x3C\x1F\x07\x55\xC7\x95\xA1\x8B\x88\xA1\xA8\x78\x8B\xA0\xA0\x54\xA2\x05\x1F\x16\xA3\x9A\x75\xA6\xAE\x1B\x35\xAA\x89\xC4\xAE\xA8\xAF\x7A\xA2\xA0\x56\xC8\x97\x94\x20\x00\xAB\xA8\x42\xB5\x98\x61\x86\xB1\xA0\xC4\xBF\x55\xAD\xB2\x4D\x9D\x36\xF3\x91\x9F\x79\xAE\x04\x06\xF9\x88\x21\x6A\xB7\xAC\x9E\xDD\x38\xAB\xAF\x04\xA7\x97\x65\xD5\x99\xB2\x2C\x84\xAF\xA1\x11\xB6\xA2\x52\xA1\x76\xA0\x84\x8E\xAC\xA3\x51\xBB\xA1\x48\x84\xB6\xA4\xC9\x87\x9A\xAB\x8E\x5C\xAB\x4B\xA0\x0F\xAB\x47\xB4\xA6\xA6\xFB\x80\x54\x1D\x2F\xB6\xB9\xD8\xBE\xA3\xB6\xB6\xB5\xB4\x43\xA3\xA8\xB7\xA3\xBA\xB3\xB9\x96\xBE\xB6\x70\xD0\xAE\xA3\xF1\xB7\xB5\xA4\x56\xB5\xB9\x56\x8C\x59\xB8\x97\x8B\xA8\xA6\x32\xB3\x9E\x68\xD1\xB9\x4F\x3D\x54\x96\xB4\x33\x06\x10\x46\x7A\xBA\x9E\x9C\xB8\x8A\xA7\xEA\xB4\xB3\x75\xFF\xA8\xB3\xC0\x83\xAC\xAA\x46\xA8\xAB\x6E\x81\xAD\xA8\xF3\x81\xBF\xA9\xE7\xA5\xB8\x4A\xEB\xBB\xA5\xF6\xA7\x97\xBD\xCC\xB1\xBD\x6B\xF4\x00\x08\xB1\xB8\x96\xB1\xB2\x48\xAF\x40\x6A\xA0\xC5\xDC\x3E\x91\x0A\x18\x28\xC4\x5D\x9F\xB6\xAF\xDC\x10\xB0\xB6\x3D\xAC\x90\x76\xB9\x8A\xBB\xC1\x9C\xBD\xB0\x87\xAF\x91\x89\xEE\x0C\x9C\x51\x74\xBE\x4B\xA5\xBB\xC2\x0B\x36\x0C\xBE\x84\x05\xCC\xB5\xD2\xB4\xBB\x84\x82\xC2\xC6\x02\xF4\xB6\xC0\x9A\xBC\xB9\x82\xDF\xB8\xC3\x06\xD0\xC7\xC1\x53\xB7\xC6\x49\xC7\x8B\xC8\xE4\xAD\xA7\xC2\x5E\xBA\xC2\x74\xC0\x48\x0A\x14\x7D\x30\x4C\x65\xC9\x3B\x1B\xD8\x08\x22\x36\xFA\x9E\xCC\xD3\xA5\x9B\x64\xCE\x5E\x4B\xA4\xB3\xA3\x6D\x6D\x69\xA5\x93\x75\xC4\xA2\x56\x86\x92\xCF\x57\x54\x0E\x9D\xF9\x75\xCC\x40\xCF\x5A\xA6\x70\xC0\x0B\xDC\x08\x2B\xD0\x2C\x07\x4B\x3D\x61\x13\xBF\xA3\xEC\x3F\x8D\x11\x18\x26\xD2\xFA\x93\xD1\x18\x7E\x90\x7C\x2A\x01\x0E\xD0\x75\xD3\x9A\xA6\xBD\xCD\x2E\x47\xEF\x0C\x3E\xF0\x96\xBC\x2E\xF3\x30\x41\x37\xA9\x00\x23\xAF\xD9\xD3\xA9\x80\x4C\xD2\xD9\x67\x60\xD4\xBA\x32\xA4\xAB\xDE\x44\xD4\xC6\x2E\x9B\xC3\x41\xD2\xBB\x1B\xC5\xC4\x21\x23\xFF\xC6\xB5\xFF\xA0\xA0\x97\xBC\xAC\xC8\xBF\x89\xA0\xCA\xB6\xA8\xC1\x6E\x93\xAB\xB8\x2B\xC0\xBD\xBC\x10\xC4\xB9\x7A\xDD\xCC\xBD\x2F\xFE\xA0\xC3\xCD\xB3\xA7\x86\xF3\xB3\x9E\x2A\x83\x26\x8A\xA6\xA1\x9E\x9C\x70\x21\x7A\xE8\x43\x20\x9D\x38\xAB\x9F\x7C\xBF\xB1\xA5\x78\xB4\xDA\x44\x6F\x95\x04\x46\x7A\xDA\x9F\x7B\xE5\x0E\x9F\x21\x09\xCD\x6F\x76\xC1\xE0\x4D\xC4\xE6\xD4\xA8\xC2\xD0\x45\x81\xE3\x9E\x20\x0F\x79\x3B\x94\x8A\x4D\x97\x3A\x3F\x71\x36\x58\x0A\xE2\xAD\xD1\x04\x18\x18\x2B\xE2\x7D\x98\xE5\x9F\x78\x98\xA3\x8E\x88\x92\x4C\x32\x4F\x94\xA2\x08\xE0\x40\xC9\xE3\x42\x23\x32", +"\x5C\xBF\xD8\x82\xD8\x8C\x9C\x72\x4B\xC2\x99\x9F\xE2\x37\x1D\xD7\x93\x87\xAC\xCA\xB0\x1A\x84\x26\x86\x3B\xDB\x85\x0F\xEB\xD4\x0C\xBD\x44\x22\x6F\xE8\x9B\xC6\x3A\x8E\xED\x45\x6C\xB7\xE4\x0E\x15\xF1\xE0\x97\x2D\xD2\x07\x8E\xC8\x26\xEA\x4A\x8F\xEA\x3F\xE1\xBB\xAC\x9E\xEE\xAB\xE5\x26\xF6\xCD\xCA\xF5\xC8\x8F\x92\xED\xE4\xAA\x30\xE8\x93\xCC\xF3\x96\xE7\xA9\xDE\x4C\xDC\xC0\xCA\xD7\x68\xC2\xC7\x06\x62\xC3\x26\xD8\xFE\xBF\x9C\x8C\xCD\xD3\xC6\x40\x75\xC1\x57\x52\xD3\xDA\x9D\xD5\xC2\xBD\x2B\xD8\xD9\xCB\x24\xB2\xC0\xB3\xDE\xCC\xAA\x40\xA1\xC8\xAC\x1B\xC4\xCC\x9C\xED\xD2\x21\xAC\x42\xE4\x9E\xEA\xC3\x9C\x19\x58\x98\x9C\x38\xCB\xEB\xD1\x04\x2D\xD2\xA6\xA2\xC2\x20\xB5\x9A\xD2\xE8\xE2\x90\x2D\xD4\x82\x28\x9C\x4D\xCB\xEA\xD2\xB3\xDE\x4A\xB9\x82\x26\x8B\x5D\xFA\x30\xF5\x44\xF4\xF0\x00\x59\x6D\xF5\xD8\xEE\xB2\xDE\x3E\xDE\xDF\xEC\x80\x06\x8A\x7F\xF8\xF2\xF3\xBA\xFC\xF6\x12\xFE\xDB\xE9\x87\xC0\x01\x47\x17\xEE\xEE\x6E\x46\xE3\x20\xBD\x51\xFB\x4D\x5E\x47\xF8\x5C\x24\xF0\x21\x77\xD9\xEA\xFA\xD3\xAB\x9E\x87\xD9\x9B\xC6\xEE\xE4\xC6\xEB\xB2\x4F\x8E\x8A\x88\x2B\xFD\xC6\xA8\xFE\xC5\xC9\xDA\xAF\xB2\x93\xB9\x98\x67\xC0\xB5\x91\x07\xD7\xC4\x67\xB2\xAB\xC6\xC9\xC9\x3D\x9C\x04\x15\x4E\x97\x78\x7B\x5B\x41\x44\xD8\x47\x44\x9D\x79\x1C\x65\x3B\x41\xB8\x40\x67\xAB\x79\x4D\x70\x6A\x45\x40\x44\x07\xCE\x79\x23\x62\x47\x79\x3E\x00\x7A\x03\x12\x7A\x48\x21\x06\xC3\x75\x7B\x1D\x84\x80\x13\x8F\x80\x08\x8A\x44\xAE\x7A\x81\x02\x1C\x81\x90\x63\x7E\x8E\x61\x82\x05\x84\x07\x07\x80\x02\x26\x8D\x81\x3E\x00\x7B\x09\x7E\x4D\x08\x18\x83\x63\x77\x7B\xEA\x6F\x82\xC9\x73\x10\x25\x8B\x83\xD3\x56\x83\x00\x26\x7E\x94\x46\x7B\xF4\x4F\x82\xE3\x77\x81\x48\x85\x83\x3E\x63\x4F\x38\x84\x10\x3A\x89\x6E\x43\x7E\x83\x18\x19\x35\x41\x88\x53\x70\x72\x5D\x46\x8F\x6B\xC2\x6A\x84\x3A\x71\x46\x32\x80\x73\x4E\x85\x6A\xFE\x61\x85\x03\x1A\x83\xC6\x7D\x83\x13\x8F\x83\x46\x48\x44\xCB\x76\x5E\x65\x8E\x6B\xD9\x4E\x6F\x5D\x85\x87\xE6\x52\x81\x5C\x4B\x84\x63\x8C\x7C\x2C\x8B\x63\x16\x08\x11\x81\x8B\x73\xAF\x2D\x62\x6F\x5C\x86\x5C\x44\x7D\x02\x1A\x37\x41\x8A\x74\x7F\x8F\x7E\x6E\x08\x86\x02\x1A\x83\x41\x7F\x82\x1F\x80\x84\x63\x8A\x74\x15\x82\x75\xD8\x7A\x1B\x9B\x38\x10\x9F\x87\x7D\x13\x78\x79\x55\x83\x81\x77\x81\x84\x5A\x7B\x89\xB8\x4F\x74\x00\x83\x10\x02\x8F\x74\x7A\x81\x44\x6E\x82\x86\xDF\x7D\x89\xD3\x51\x4F\xB5\x4C\x82\xBD\x44\x03\xC0\x43\x10\xC2\x45\x4B\xFE\x4B\x64\xF5\x7B\x4C\x7E\x6E\x4A\xC7\x41\x4D\x32\x55\x4B\x40\x0E\x7F\x67\x63\x29\x03\x82\x03\x6E\x68\x10\xD1\x8A\x44\x9E\x72\x67\xC7\x5B\x67\xB9\x64\x51\x45\x08\x67\x4C\x08\x6B\x0A\x7C\x4C\x85\x46\x8C\xDE\x83\x68\xFA\x33\x8E\xD3\x49\x68\x28\x80\x00\x2A\x8C\x1E\x92\x61\x82\x32\x08\x69\x08\x10\x8F\x33\x80\x69\x9C\x65\x3D\x9E\x66\x8E\x8F\x43\x6A\x44\x80\x64\x72\x72\x84\xF5\x41\x6B\x08\x10\x90\x26\x8E\x7B\x71\x60\x02\x43\x06\x6B\x4C\x38\x8F\x06\x94\x90\xBD\x65\x1A\x5E\x85\x5F\x2C\x47\x5F\x42\x65\x03\x76\x72\x10\x78\x7B\x61\x4A\x6C\x6C\xF5\x7D\x77\x31\x2F\x77\xBB\x12\x6D\xDE\x54\x6D\x84\x79\x51\x0E\x67\x78\xC3\x5A\x65\xDB\x6B\x78\xDD\x6A\x5C\xE0\x62\x66\x00\x29\x73\x0C\x1C\x46\xE5\x78\x11\xE7\x75\x88\x8A\x57\x5A\xEB\x74\x10\xED\x7D\x75\x36\x9F\x58\xF1\x7B\x77\x1B\x9E\x64\xD9\x50\x6D\xDB\x54\x52\xFB\x7E\x59\x3D\x92\x2B\x4C\x7C\x10\xD0\x7F\x74\x0F\x82\x8A\xAD\x63\x03\x56\x74\x10\x58\x70\x95\x20\x7E\x6C\x23\x75\x76\x2C\x7F\x06\x2E\x78\x72\x48\x80\x76\x67\x7F\x72\x6C\x72\x73\x43\x7C\x76\xD3\x4F\x74\x0D\x93\x10\xB8\x83\x54\xAA\x80\x00\xB5\x44\x2E\xF5\x37\x1F\xCC\x84\x07\x40\x30\x67\xC0\x1C\x01\x24\x12\x20\xE9\x8B\x8E\x61\x06\x24\x1D\x80\x1C\x1E\x09\x97\x59\x2E\x63\x48\x80\x26\x48\x80\x1C\x20\x02\x98\xEE\x1B\x85\x53\x23\x29\xF3\x40\x1C\xB7\x31\x2E\x8B\x91\x7C\xE6\x56\x37\x21\x50\x1C\xFE\x32\x99\xE6\x1F\x88\x49\x99\x1B\x0F\x8B\x63\xC0\x16\x02\x8A\x96\x1E\x6D\x96\x95\xA1\x2D\x17\x4F\x70\x1C\x28\x03\x9A\xE5\x10\x01\x22\x49\x10\xC2\x10\x1C\x9D\x10\x97\xB4\x95\x9B\x38\x12\x1C\x8F\x3F\x36\xB6\x90\x00\x9D\x13\x9B\xF7\x36\x22\x03\x19\x4C\xC0\x1B\x96\xD5\x40\x97\xCD\x15\x10\x4F\x4F\x9A\xBB\x9B\x9C\x24\x12\x1C\x6A\x48\x2C\xB5\x9D\x9B\xB4\x90\x24\xD1\x43\x9C\xFD\x8F\x96\xB0\x9D\x9C\x0C\x8C\x9C\xBC\x9C\x9D\x10\x7C\x94\x2F\x13\x54\xD6\x91\x91\xDF\x43\x54\xFF\x0A\x9B\x05\x18\x9E", +"\x04\x22\x9B\x9D\x23\x10\xCA\x9B\x9B\x6D\x98\x9D\xE4\x95\x2B\x98\x43\x54\xE9\x8B\x9E\xB4\x94\x9C\xB6\x58\x9E\xE3\x94\x9F\x7D\x27\x60\xC0\x1C\x99\x65\x5E\x56\xE7\x98\x11\xE9\x8C\x9E\x0C\x19\x8E\xEF\x96\x9B\xF1\x92\x9E\x72\x74\x10\x67\x45\x4D\x7B\x9E\x9D\x50\x47\x9D\x43\x5C\x9F\x0F\xAA\x96\x03\x12\x58\xB9\x20\x1C\x8C\x9E\x25\x14\xA4\x2E\xC7\x9F\x0F\x04\x2E\x7C\x21\xA1\x1C\x24\x1E\x7C\xF9\x17\xA2\x23\xA9\x9B\x14\xA8\x9E\x9F\x17\xA0\xB4\x9F\xA1\xBA\x1E\x9B\x0C\x10\x34\xC2\x99\xA1\x2E\x45\x9F\xC5\x9C\x1C\xC2\x16\x36\x27\xAC\x2D\x2D\xA8\x11\x18\xA0\x97\x30\xAD\x9E\xBB\x92\xA0\xA0\x59\x1B\x36\xA0\x9C\x37\xA1\x9C\x37\x2A\xA3\x15\xA5\x9E\x3D\xAE\xA3\x24\x19\x8E\x8F\x3C\xA2\xC2\x19\x1F\xAD\x8B\x9B\x47\xA6\x34\xCB\x94\xA3\x74\x0F\x19\x25\x04\xA1\xF3\x66\x5E\x28\xA9\x14\x4F\x4A\x46\xB5\x9B\xA0\x9F\x1B\xA2\x33\xAF\x84\x91\x78\x11\x65\xAE\x9D\x67\xA0\x61\x4D\xAE\x29\x94\x20\x00\x74\x6A\x1B\x01\x3B\x9D\x97\x73\xA4\x31\x94\xA1\x6E\xA2\x2A\xCC\x92\xA6\x64\xA6\xA6\x94\x98\xA7\xB4\x9D\x2C\xD8\x84\x07\x7F\xA9\x36\x0D\x89\x22\xCE\x91\x86\xCC\x95\xA8\x60\xAB\x9B\x88\xA4\xA7\x8A\xA6\x86\xE6\x59\xA7\xAF\x3B\xA7\x7D\xA0\xA9\xDB\x92\x3D\x81\xA2\x1C\xBA\x7C\x7D\x6D\xA5\xAA\xAF\x1D\xA9\x74\x80\x73\x89\xA6\xA7\x8B\xAC\x51\xA0\xA1\x1F\x93\x23\xAA\x1E\xA4\x98\x04\x93\xA2\xDC\x7A\x7B\xAB\xA2\xA9\x74\x87\xA8\x72\xA3\x66\x9C\xA2\xAB\x9E\xAC\xA8\x70\x9E\xA8\x81\x60\x1C\x13\xAB\x6A\x1D\x83\xA2\x5D\xAB\x46\x84\xAC\xAA\x02\x10\xA7\x70\x9B\xA9\x0C\x15\xA7\xDC\x97\xA7\xB4\xAD\xA8\xB7\xAF\xA8\x91\xA3\x3D\x93\xAD\x1B\x69\xA7\x9B\xD5\x24\xA1\xB5\xA7\x2D\x77\x2B\x61\xB9\xA5\x6A\xF3\x4F\x0F\x0B\xA5\xA0\x0C\x12\x89\xD7\x2D\x19\x00\x94\x10\x0B\xA5\x9B\xEB\xA2\x5D\xED\xAF\xAA\xF3\x49\x8E\xF7\xA1\xA6\xC3\xA0\x20\xE9\xAF\x80\x6B\x7C\xAE\x4D\x74\x10\x4D\x90\x7E\xF2\xAB\x37\xB4\x9D\x19\xDA\xA8\xAF\x14\xAB\xAF\x00\x2D\xAF\x0E\x93\x77\xD2\x59\x8E\x11\xB2\xB0\xEE\xAB\x61\xF9\xAE\xAA\x17\xB4\x92\x10\x6D\xB0\x52\x8F\xB0\x32\x33\x42\x13\xBE\x98\x08\xB9\xA9\x90\x3F\x90\x5E\x29\x8E\x3E\x7C\xB1\xFE\xAB\x61\x05\xBE\x20\x03\x17\xB0\xFC\xA9\xB0\x03\x1B\xB0\xB6\x86\x9C\xC2\x1D\x19\x9F\x8C\x9C\xE9\xA0\x1C\x9F\x90\x89\x01\xA1\x86\x3C\x93\xA0\xB2\x24\xB2\x09\x18\x9E\x31\xB8\x2D\xF6\xA8\x11\x1F\xB0\x97\x45\xBD\x99\x6E\x07\xB4\x83\xA4\x88\x4A\xB9\x1B\x00\xB4\xA1\x4A\xA6\x88\x45\xAB\xA7\x7A\xA6\x76\x5C\x93\x07\x38\x2D\x74\xA6\x91\x20\x4E\xB6\xB2\x33\x32\xB5\x14\xA5\xB5\x5B\xB7\xB5\x96\xA3\x10\x32\x90\x89\x30\xBE\xB5\x48\xBB\x63\x61\xBA\xA7\x63\xBB\x95\x65\x27\xB6\xE0\x9B\x8A\xE0\x71\xA2\x82\xA8\x10\x15\x08\xAE\x18\x15\xB3\x0C\x1A\x28\x2B\x92\x16\x16\xBD\xAA\x2E\xBE\xA7\x84\x1F\xB3\x82\x88\xB8\xDE\x95\x97\xC9\x11\xAE\xA6\xA0\x67\x23\xA8\x9E\x8A\x85\xAF\xC5\xA8\xB2\x97\xBF\x9B\x76\x94\xAD\xA0\x14\x49\x70\x6A\xB1\x14\xA3\x97\x53\xBB\xAD\xB3\xA7\x99\x22\xA4\xB9\x0C\x17\x01\x96\xBC\x9D\x7E\x90\x69\xCC\xA6\xA0\x47\x8F\xAC\xC2\x1E\xB9\x6C\xB8\x10\x1B\xB2\x10\xAD\xB0\x2E\xB7\xBC\x1E\xB9\xB9\xA0\xBB\xB0\x69\xAA\xBE\x9D\xCD\xA9\x4D\x9A\x63\xBC\x32\xB1\xB2\xFE\x6E\xB3\xDA\x9C\x10\x18\x05\xBB\xCC\x96\x98\x04\x9F\xB8\xD5\xA7\x84\xBB\xA1\xAF\x6B\xB0\x97\x51\xBC\x10\xD0\xB8\x2D\xDA\xB9\x70\xDC\xBD\xB2\xCE\xB4\x90\x5D\xB6\xAC\xAF\xA8\x84\x7B\xB1\xAA\x7D\xB6\x72\x80\xBA\x23\x9C\x83\x8A\x4C\xBB\x88\xBF\xB4\x10\xC1\xB0\x00\xE5\xBA\xAE\x93\x27\x98\x86\xA0\xB9\xEB\xB9\x70\xCB\xBE\xBA\xA5\x68\x84\xFF\xB5\x9B\xDC\xA1\x52\xF9\xB0\x00\x4F\xB0\xBA\x6D\xB4\xBE\x29\xB0\x3B\x28\x1B\xBD\x03\xCD\xBD\xAB\x6C\xBE\x27\xB2\xAC\x09\xC4\x90\xF1\xB6\xAB\x16\xC4\xB6\x7F\xBA\xB3\xDF\x9E\x74\x83\xB4\xA1\x85\xB1\x7A\xD8\xB3\x10\xE9\xA8\xA3\x51\xAC\xB2\x8B\x10\x73\xDC\x93\xA2\x9D\x19\x01\x41\xA6\xAE\x49\x18\x9E\xD6\xA8\x10\xAD\x14\xA4\xBA\xBC\xB2\x0C\xCF\xBA\x22\x21\xC2\xEA\xB7\xB1\x52\x53\x5C\xE9\xB3\xC3\x8F\x91\xBB\xD5\xB8\x10\x1A\x0D\xC2\x9A\xA2\x2A\xA9\x96\xC2\xCF\x77\xBF\x15\xB9\xC3\x49\x12\x1C\xC8\x2B\x01\x52\xC7\xBA\x13\xCC\x9D\xA5\x95\xC5\xE5\xA4\x18\x5C\xAF\xC5\x9F\x11\xC1\xB5\x93\xC6\x29\xC3\x19\xA8\xA4\x93\x2F\xA6\xBA\x6A\xC4\x9B\x6C\xC6\x8B\xE9\xAA\xAC\xCF\x2B\xC4\xDE\xB8\xBE\xD8\x23\xA2\x6D\x9A\xC5\x80\xC1\xC8\x82\xCF\xC4\x84\x1F\x38\xF8\x92\xBE\x89\xB4\x9B\x30\xC1\x12\x58\xB5\x1C\x63\x56\xB4\xD9\x99\x14\xC0\x1D\x01\x83", +"\xC4\xB8\xC2\x1B\xA6\x5F\xC7\xC7\xDF\xAB\xAC\xA6\xB7\x12\xA7\xA4\x12\x8F\x3C\xA6\xFB\xBE\xC2\xDE\xA6\xC1\xB8\xAD\xC9\xA8\xB4\xA9\xB4\x13\xB7\xBB\x92\x9D\xC9\xAB\xC9\x79\xC8\xCA\xE3\xA4\xAA\xD0\xAC\xCA\xB6\x9E\xCA\xE4\x28\xC7\x20\xA2\xCB\x10\x8A\xCA\x92\xC8\x11\x1F\x05\xC9\x39\xCC\xAB\x57\x89\xC9\xA5\xC2\xAA\xE0\xA1\xC4\x8C\x69\xBC\xC6\xB3\xA2\xC0\x11\x02\xC2\xCA\xA5\x24\x19\xAA\xC6\xCF\xCA\xA6\xC9\xCC\x32\xCB\xC7\x59\xCE\xCC\x97\x61\xCD\xCB\x93\xA2\x67\xCE\xCD\x65\xC9\x10\xC0\x1D\xBF\xE2\xCD\xC7\x5B\xA4\x44\x68\xC1\xBA\x1E\xCF\xAA\xD3\xB3\xA2\x98\xCE\x9D\x5F\xA0\xBC\x20\xB4\xC0\x22\xBD\xAD\xD6\xC8\xCC\x9C\xC0\xAC\x9B\xBE\xCB\x38\x11\xCA\x71\xCC\xCF\x03\x16\xCE\x71\xA7\xAC\xF8\xC9\xCB\xB0\xCB\xCB\x02\xD8\x17\xB3\xC3\xA2\xE3\x7C\x9C\xF3\xCC\xBF\xF5\xCA\xC1\x78\x88\xAC\x08\xD7\xCD\xFB\xC2\xAE\x1A\xDF\xC9\x49\x14\xCD\xF2\xC6\xBA\x04\xD7\xAD\x44\xC5\x06\x9A\xC8\xD1\xB1\xC9\xCD\x1B\xC9\x70\xC4\xC8\x35\x01\xDA\xD1\x12\xDE\xBE\xD2\xBF\xA9\xC7\xCA\xA7\xA7\xC8\xBC\x36\xDE\xBC\xBC\xB4\x12\xD1\xA2\xCA\x46\xA0\xD2\x13\xDA\xBE\xF7\xC1\x52\x25\xDA\xCF\x27\xDE\xD2\x95\x1D\xD0\xB1\x98\x11\x27\x07\xCE\xE0\x23\xA2\x5D\xCC\xD4\x91\xC8\x13\xC0\x11\xB0\x50\xDA\xC3\x38\x1F\xD4\xDE\x9A\x41\x0C\x14\xD5\x0C\xA8\xB6\x64\xC0\xCE\xEA\xC9\xD5\xA6\xBC\xD5\x6B\xCE\xD5\x6D\xC3\xCE\x93\x1E\xD1\xDC\x91\xD1\x03\x14\xD6\x74\xC6\xD6\x76\xC3\xD3\xA1\xA5\xD3\xC1\xA6\xCF\x02\xC5\xD5\x78\xD0\xC8", +}; + + void XmlGetParserBuffer(vl::stream::MemoryStream& stream) + { + vl::stream::MemoryStream compressedStream; + for (vint i = 0; i < parserBufferRows; i++) + { + vint size = i == parserBufferRows - 1 ? parserBufferRemain : parserBufferBlock; + compressedStream.Write((void*)parserBuffer[i], size); + } + compressedStream.SeekFromBegin(0); + vl::stream::LzwDecoder decoder; + vl::stream::DecoderStream decoderStream(compressedStream, decoder); + vl::collections::Array buffer(65536); + while (true) + { + vl::vint size = decoderStream.Read(&buffer[0], 65536); + if (size == 0) break; + stream.Write(&buffer[0], size); + } + stream.SeekFromBegin(0); + } +/*********************************************************************** +Unescaping Function Foward Declarations +***********************************************************************/ + + extern void XmlMergeTextFragment(vl::collections::List>& value, const vl::collections::List& tokens); + extern void XmlUnescapeAttributeValue(vl::parsing::ParsingToken& value, const vl::collections::List& tokens); + extern void XmlUnescapeCData(vl::parsing::ParsingToken& value, const vl::collections::List& tokens); + extern void XmlUnescapeComment(vl::parsing::ParsingToken& value, const vl::collections::List& tokens); + +/*********************************************************************** +Parsing Tree Conversion Driver Implementation +***********************************************************************/ + + class XmlTreeConverter : public vl::parsing::ParsingTreeConverter + { + public: + using vl::parsing::ParsingTreeConverter::SetMember; + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + SetMember(tree->content, obj->GetMember(L"content"), tokens); + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + if(SetMember(tree->content, obj->GetMember(L"content"), tokens)) + { + XmlUnescapeCData(tree->content, tokens); + } + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + SetMember(tree->name, obj->GetMember(L"name"), tokens); + if(SetMember(tree->value, obj->GetMember(L"value"), tokens)) + { + XmlUnescapeAttributeValue(tree->value, tokens); + } + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + if(SetMember(tree->content, obj->GetMember(L"content"), tokens)) + { + XmlUnescapeComment(tree->content, tokens); + } + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + SetMember(tree->name, obj->GetMember(L"name"), tokens); + SetMember(tree->closingName, obj->GetMember(L"closingName"), tokens); + SetMember(tree->attributes, obj->GetMember(L"attributes"), tokens); + if(SetMember(tree->subNodes, obj->GetMember(L"subNodes"), tokens)) + { + XmlMergeTextFragment(tree->subNodes, tokens); + } + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + SetMember(tree->name, obj->GetMember(L"name"), tokens); + SetMember(tree->attributes, obj->GetMember(L"attributes"), tokens); + } + + void Fill(vl::Ptr tree, vl::Ptr obj, const TokenList& tokens) + { + SetMember(tree->prologs, obj->GetMember(L"prologs"), tokens); + SetMember(tree->rootElement, obj->GetMember(L"rootElement"), tokens); + } + + vl::Ptr ConvertClass(vl::Ptr obj, const TokenList& tokens)override + { + if(obj->GetType()==L"Text") + { + vl::Ptr tree = new XmlText; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"CData") + { + vl::Ptr tree = new XmlCData; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"Attribute") + { + vl::Ptr tree = new XmlAttribute; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"Comment") + { + vl::Ptr tree = new XmlComment; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"Element") + { + vl::Ptr tree = new XmlElement; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"Instruction") + { + vl::Ptr tree = new XmlInstruction; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else if(obj->GetType()==L"Document") + { + vl::Ptr tree = new XmlDocument; + vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules()); + Fill(tree, obj, tokens); + Fill(tree.Cast(), obj, tokens); + return tree; + } + else + return 0; + } + }; + + vl::Ptr XmlConvertParsingTreeNode(vl::Ptr node, const vl::collections::List& tokens) + { + XmlTreeConverter converter; + vl::Ptr tree; + converter.SetMember(tree, node, tokens); + return tree; + } + +/*********************************************************************** +Parsing Tree Conversion Implementation +***********************************************************************/ + + vl::Ptr XmlText::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return XmlConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr XmlCData::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return XmlConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr XmlAttribute::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return XmlConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr XmlComment::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return XmlConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr XmlElement::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return XmlConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr XmlInstruction::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return XmlConvertParsingTreeNode(node, tokens).Cast(); + } + + vl::Ptr XmlDocument::Convert(vl::Ptr node, const vl::collections::List& tokens) + { + return XmlConvertParsingTreeNode(node, tokens).Cast(); + } + +/*********************************************************************** +Parser Function +***********************************************************************/ + + vl::Ptr XmlParseDocumentAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) + { + vl::parsing::tabling::ParsingState state(input, table, codeIndex); + state.Reset(L"XDocument"); + vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); + vl::Ptr node=parser->Parse(state, errors); + return node; + } + + vl::Ptr XmlParseDocumentAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) + { + vl::collections::List> errors; + return XmlParseDocumentAsParsingTreeNode(input, table, errors, codeIndex); + } + + vl::Ptr XmlParseDocument(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) + { + vl::parsing::tabling::ParsingState state(input, table, codeIndex); + state.Reset(L"XDocument"); + vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); + vl::Ptr node=parser->Parse(state, errors); + if(node && errors.Count()==0) + { + return XmlConvertParsingTreeNode(node, state.GetTokens()).Cast(); + } + return 0; + } + + vl::Ptr XmlParseDocument(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) + { + vl::collections::List> errors; + return XmlParseDocument(input, table, errors, codeIndex); + } + + vl::Ptr XmlParseElementAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) + { + vl::parsing::tabling::ParsingState state(input, table, codeIndex); + state.Reset(L"XElement"); + vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); + vl::Ptr node=parser->Parse(state, errors); + return node; + } + + vl::Ptr XmlParseElementAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) + { + vl::collections::List> errors; + return XmlParseElementAsParsingTreeNode(input, table, errors, codeIndex); + } + + vl::Ptr XmlParseElement(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex) + { + vl::parsing::tabling::ParsingState state(input, table, codeIndex); + state.Reset(L"XElement"); + vl::Ptr parser=vl::parsing::tabling::CreateStrictParser(table); + vl::Ptr node=parser->Parse(state, errors); + if(node && errors.Count()==0) + { + return XmlConvertParsingTreeNode(node, state.GetTokens()).Cast(); + } + return 0; + } + + vl::Ptr XmlParseElement(const vl::WString& input, vl::Ptr table, vl::vint codeIndex) + { + vl::collections::List> errors; + return XmlParseElement(input, table, errors, codeIndex); + } + +/*********************************************************************** +Table Generation +***********************************************************************/ + + vl::Ptr XmlLoadTable() + { + vl::stream::MemoryStream stream; + XmlGetParserBuffer(stream); + vl::Ptr table=new vl::parsing::tabling::ParsingTable(stream); + table->Initialize(); + return table; + } + + } + } +} + diff --git a/Import/VlppParser.h b/Import/VlppParser.h new file mode 100644 index 00000000..8dec099f --- /dev/null +++ b/Import/VlppParser.h @@ -0,0 +1,3204 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "VlppReflection.h" +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" + +/*********************************************************************** +.\PARSINGTREE.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parsing::Parsing Tree + +Classes: +***********************************************************************/ + +#ifndef VCZH_PARSING_PARSINGTREE +#define VCZH_PARSING_PARSINGTREE + + +namespace vl +{ + namespace parsing + { + +/*********************************************************************** +Location +***********************************************************************/ + + /// A type representing text position. + struct ParsingTextPos + { + static const vint UnknownValue=-2; + /// Character index, begins at 0. + vint index; + /// Row number, begins at 0. + vint row; + /// Column number, begins at 0. + vint column; + + ParsingTextPos() + :index(UnknownValue) + ,row(UnknownValue) + ,column(UnknownValue) + { + } + + ParsingTextPos(vint _index) + :index(_index) + ,row(UnknownValue) + ,column(UnknownValue) + { + } + + ParsingTextPos(vint _row, vint _column) + :index(UnknownValue) + ,row(_row) + ,column(_column) + { + } + + ParsingTextPos(vint _index, vint _row, vint _column) + :index(_index) + ,row(_row) + ,column(_column) + { + } + + /// Test if this position a valid position. + /// Returns true if this position is a valid position. + bool IsInvalid()const + { + return index < 0 && row < 0 && column < 0; + } + + static vint Compare(const ParsingTextPos& a, const ParsingTextPos& b) + { + if (a.IsInvalid() && b.IsInvalid()) + { + return 0; + } + else if (a.IsInvalid()) + { + return -1; + } + else if (b.IsInvalid()) + { + return 1; + } + else if (a.index >= 0 && b.index >= 0) + { + return a.index - b.index; + } + else if (a.row >= 0 && a.column >= 0 && b.row >= 0 && b.column >= 0) + { + if (a.row == b.row) + { + return a.column - b.column; + } + else + { + return a.row - b.row; + } + } + else + { + return 0; + } + } + + bool operator==(const ParsingTextPos& pos)const{return Compare(*this, pos)==0;} + bool operator!=(const ParsingTextPos& pos)const{return Compare(*this, pos)!=0;} + bool operator<(const ParsingTextPos& pos)const{return Compare(*this, pos)<0;} + bool operator<=(const ParsingTextPos& pos)const{return Compare(*this, pos)<=0;} + bool operator>(const ParsingTextPos& pos)const{return Compare(*this, pos)>0;} + bool operator>=(const ParsingTextPos& pos)const{return Compare(*this, pos)>=0;} + }; + + /// A type representing text range. + struct ParsingTextRange + { + /// Text position for the first character. + ParsingTextPos start; + /// Text position for the last character. + ParsingTextPos end; + /// Code index, refer to [F:vl.regex.RegexToken.codeIndex] + vint codeIndex; + + ParsingTextRange() + :codeIndex(-1) + { + end.index=-1; + end.column=-1; + } + + ParsingTextRange(const ParsingTextPos& _start, const ParsingTextPos& _end, vint _codeIndex = -1) + :start(_start) + , end(_end) + , codeIndex(_codeIndex) + { + } + + ParsingTextRange(const regex::RegexToken* startToken, const regex::RegexToken* endToken) + :codeIndex(startToken->codeIndex) + { + start.index=startToken->start; + start.row=startToken->rowStart; + start.column=startToken->columnStart; + end.index=endToken->start+endToken->length-1; + end.row=endToken->rowEnd; + end.column=endToken->columnEnd; + } + + bool operator==(const ParsingTextRange& range)const{return start==range.start && end==range.end;} + bool operator!=(const ParsingTextRange& range)const{return start!=range.start || end!=range.end;} + bool Contains(const ParsingTextPos& pos)const{return start<=pos && pos<=end;} + bool Contains(const ParsingTextRange& range)const{return start<=range.start && range.end<=end;} + }; + } + + namespace stream + { + namespace internal + { + BEGIN_SERIALIZATION(parsing::ParsingTextPos) + SERIALIZE(index) + SERIALIZE(row) + SERIALIZE(column) + END_SERIALIZATION + + BEGIN_SERIALIZATION(parsing::ParsingTextRange) + SERIALIZE(start) + SERIALIZE(end) + SERIALIZE(codeIndex) + END_SERIALIZATION + } + } + + namespace parsing + { +/*********************************************************************** +General Syntax Tree +***********************************************************************/ + + class ParsingTreeNode; + class ParsingTreeToken; + class ParsingTreeObject; + class ParsingTreeArray; + + /// Abstract syntax tree. + class ParsingTreeNode : public Object, public reflection::Description + { + public: + class IVisitor : public Interface + { + public: + virtual void Visit(ParsingTreeToken* node)=0; + virtual void Visit(ParsingTreeObject* node)=0; + virtual void Visit(ParsingTreeArray* node)=0; + }; + + class TraversalVisitor : public Object, public IVisitor + { + public: + enum TraverseDirection + { + ByTextPosition, + ByStorePosition + }; + protected: + TraverseDirection direction; + public: + TraversalVisitor(TraverseDirection _direction); + + virtual void BeforeVisit(ParsingTreeToken* node); + virtual void AfterVisit(ParsingTreeToken* node); + virtual void BeforeVisit(ParsingTreeObject* node); + virtual void AfterVisit(ParsingTreeObject* node); + virtual void BeforeVisit(ParsingTreeArray* node); + virtual void AfterVisit(ParsingTreeArray* node); + + virtual void Visit(ParsingTreeToken* node)override; + virtual void Visit(ParsingTreeObject* node)override; + virtual void Visit(ParsingTreeArray* node)override; + }; + protected: + typedef collections::List> NodeList; + + ParsingTextRange codeRange; + ParsingTreeNode* parent; + NodeList cachedOrderedSubNodes; + + virtual const NodeList& GetSubNodesInternal()=0; + bool BeforeAddChild(Ptr node); + void AfterAddChild(Ptr node); + bool BeforeRemoveChild(Ptr node); + void AfterRemoveChild(Ptr node); + public: + ParsingTreeNode(const ParsingTextRange& _codeRange); + ~ParsingTreeNode(); + + virtual void Accept(IVisitor* visitor)=0; + virtual Ptr Clone()=0; + ParsingTextRange GetCodeRange(); + void SetCodeRange(const ParsingTextRange& range); + + /// Precalculate for enhance searching performance for this node and all child nodes. + void InitializeQueryCache(); + /// Clear all cache made by . + void ClearQueryCache(); + /// Get the parent node. Using this function requires running before. + /// The parent node. + ParsingTreeNode* GetParent(); + /// Get the child nodes. Using this function requires running before. + /// The child nodes. + const NodeList& GetSubNodes(); + + /// Find a direct child node at the position. Using this function requires running before. + /// The found node. + /// The position. + ParsingTreeNode* FindSubNode(const ParsingTextPos& position); + /// Find a direct child node at the range. Using this function requires running before. + /// The found node. + /// The range. + ParsingTreeNode* FindSubNode(const ParsingTextRange& range); + /// Find a most deepest indirect child node at the position. Using this function requires running before. + /// The found node. + /// The position. + ParsingTreeNode* FindDeepestNode(const ParsingTextPos& position); + /// Find a most deepest indirect child node at the range. Using this function requires running before. + /// The found node. + /// The range. + ParsingTreeNode* FindDeepestNode(const ParsingTextRange& range); + }; + + /// Representing a token node in a abstract syntax tree. + class ParsingTreeToken : public ParsingTreeNode, public reflection::Description + { + protected: + WString value; + vint tokenIndex; + + const NodeList& GetSubNodesInternal()override; + public: + ParsingTreeToken(const WString& _value, vint _tokenIndex=-1, const ParsingTextRange& _codeRange=ParsingTextRange()); + ~ParsingTreeToken(); + + void Accept(IVisitor* visitor)override; + Ptr Clone()override; + vint GetTokenIndex(); + void SetTokenIndex(vint _tokenIndex); + /// Get the content of the token. + /// The content of the token. + const WString& GetValue(); + void SetValue(const WString& _value); + }; + + /// Representing an object node in a abstract syntax tree. + class ParsingTreeObject : public ParsingTreeNode, public reflection::Description + { + protected: + typedef collections::Dictionary> NodeMap; + typedef collections::SortedList NameList; + typedef collections::List RuleList; + + WString type; + NodeMap members; + RuleList rules; + + const NodeList& GetSubNodesInternal()override; + public: + ParsingTreeObject(const WString& _type=L"", const ParsingTextRange& _codeRange=ParsingTextRange()); + ~ParsingTreeObject(); + + void Accept(IVisitor* visitor)override; + Ptr Clone()override; + /// Get the type name of the object. + /// The type name of the object. + const WString& GetType(); + void SetType(const WString& _type); + /// Get all fields of the object. + /// All fields of the object. + NodeMap& GetMembers(); + /// Get a field of the object by the field name. + /// The field of the object. + /// The field name. + Ptr GetMember(const WString& name); + bool SetMember(const WString& name, Ptr node); + bool RemoveMember(const WString& name); + /// Get all field names. + /// All field names of the object. + const NameList& GetMemberNames(); + /// Get names of all rules that return this object. + /// Names of all rules. + RuleList& GetCreatorRules(); + }; + + /// Representing an array node in a abstract syntax tree. + class ParsingTreeArray : public ParsingTreeNode, public reflection::Description + { + protected: + typedef collections::List> NodeArray; + + WString elementType; + NodeArray items; + + const NodeList& GetSubNodesInternal()override; + public: + ParsingTreeArray(const WString& _elementType=L"", const ParsingTextRange& _codeRange=ParsingTextRange()); + ~ParsingTreeArray(); + + void Accept(IVisitor* visitor)override; + Ptr Clone()override; + /// Get the type of all elements. It could be different from any actual element's type, but it should at least be the base types of them. + /// The type of all elements. + const WString& GetElementType(); + void SetElementType(const WString& _elementType); + /// Get all elements in this array. + /// All elements in this array. + NodeArray& GetItems(); + /// Get a specified element in this array by the index. + /// The element. + /// The index of the element. + Ptr GetItem(vint index); + bool SetItem(vint index, Ptr node); + bool AddItem(Ptr node); + bool InsertItem(vint index, Ptr node); + bool RemoveItem(vint index); + bool RemoveItem(ParsingTreeNode* node); + vint IndexOfItem(ParsingTreeNode* node); + bool ContainsItem(ParsingTreeNode* node); + vint Count(); + bool Clear(); + }; + +/*********************************************************************** +AST Building Block +***********************************************************************/ + + /// Base type of all strong typed syntax tree. Normally all strong typed syntax tree are generated from a grammar file using ParserGen.exe in Tools project. See [T:vl.parsing.tabling.ParsingTable] for details. + class ParsingTreeCustomBase : public Object, public reflection::Description + { + public: + /// Range of all tokens that form this object. + ParsingTextRange codeRange; + /// Names of all rules that return this object. + collections::List creatorRules; + }; + + /// Strong typed token syntax node, for all class fields of type "token" in the grammar file. See [T:vl.parsing.tabling.ParsingTable] for details. + class ParsingToken : public ParsingTreeCustomBase, public reflection::Description + { + public: + /// Type of the token, representing the index of a regular expression that creates this token in the regular expression list in the grammar file. + vint tokenIndex; + /// Content of the token. + WString value; + + ParsingToken():tokenIndex(-1){} + }; + + /// Error. + class ParsingError : public Object, public reflection::Description + { + public: + /// Range where the error happens. + ParsingTextRange codeRange; + /// Token at which the error happens. + const regex::RegexToken* token; + /// A syntax tree that contains this error. + ParsingTreeCustomBase* parsingTree; + /// The error message. + WString errorMessage; + + ParsingError(); + ParsingError(const WString& _errorMessage); + ParsingError(const regex::RegexToken* _token, const WString& _errorMessage); + ParsingError(ParsingTreeCustomBase* _parsingTree, const WString& _errorMessage); + ~ParsingError(); + }; + +/*********************************************************************** +Syntax Tree Serialization Helper +***********************************************************************/ + + class ParsingTreeConverter : public Object + { + public: + typedef collections::List TokenList; + + virtual Ptr ConvertClass(Ptr obj, const TokenList& tokens)=0; + + bool SetMember(ParsingToken& member, Ptr node, const TokenList& tokens) + { + Ptr token=node.Cast(); + if(token) + { + member.tokenIndex=token->GetTokenIndex(); + member.value=token->GetValue(); + member.codeRange=token->GetCodeRange(); + return true; + } + return false; + } + + template + bool SetMember(collections::List& member, Ptr node, const TokenList& tokens) + { + Ptr arr=node.Cast(); + if(arr) + { + member.Clear(); + vint count=arr->Count(); + for(vint i=0;iGetItem(i), tokens); + member.Add(t); + } + return true; + } + return false; + } + + template + bool SetMember(Ptr& member, Ptr node, const TokenList& tokens) + { + Ptr obj=node.Cast(); + if(obj) + { + Ptr tree=ConvertClass(obj, tokens); + if(tree) + { + tree->codeRange=node->GetCodeRange(); + member=tree.Cast(); + return member; + } + } + return false; + } + }; + +/*********************************************************************** +Logging +***********************************************************************/ + + class IParsingPrintNodeRecorder : public virtual Interface + { + public: + virtual void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range) = 0; + }; + + class ParsingEmptyPrintNodeRecorder : public Object, public virtual IParsingPrintNodeRecorder + { + public: + ParsingEmptyPrintNodeRecorder(); + ~ParsingEmptyPrintNodeRecorder(); + + void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range)override; + }; + + class ParsingMultiplePrintNodeRecorder : public Object, public virtual IParsingPrintNodeRecorder + { + typedef collections::List> RecorderList; + protected: + RecorderList recorders; + + public: + ParsingMultiplePrintNodeRecorder(); + ~ParsingMultiplePrintNodeRecorder(); + + void AddRecorder(Ptr recorder); + void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range)override; + }; + + class ParsingOriginalLocationRecorder : public Object, public virtual IParsingPrintNodeRecorder + { + protected: + Ptr recorder; + + public: + ParsingOriginalLocationRecorder(Ptr _recorder); + ~ParsingOriginalLocationRecorder(); + + void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range)override; + }; + + class ParsingGeneratedLocationRecorder : public Object, public virtual IParsingPrintNodeRecorder + { + typedef collections::Dictionary RangeMap; + protected: + RangeMap& rangeMap; + + public: + ParsingGeneratedLocationRecorder(RangeMap& _rangeMap); + ~ParsingGeneratedLocationRecorder(); + + void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range)override; + }; + + class ParsingUpdateLocationRecorder : public Object, public virtual IParsingPrintNodeRecorder + { + public: + ParsingUpdateLocationRecorder(); + ~ParsingUpdateLocationRecorder(); + + void Record(ParsingTreeCustomBase* node, const ParsingTextRange& range)override; + }; + + class ParsingWriter : public stream::TextWriter + { + typedef collections::Pair NodePosPair; + typedef collections::List NodePosList; + protected: + stream::TextWriter& writer; + Ptr recorder; + vint codeIndex; + ParsingTextPos lastPos; + ParsingTextPos currentPos; + NodePosList nodePositions; + + void HandleChar(wchar_t c); + public: + ParsingWriter(stream::TextWriter& _writer, Ptr _recorder = nullptr, vint _codeIndex = -1); + ~ParsingWriter(); + + using stream::TextWriter::WriteString; + void WriteChar(wchar_t c)override; + void WriteString(const wchar_t* string, vint charCount)override; + void BeforePrint(ParsingTreeCustomBase* node); + void AfterPrint(ParsingTreeCustomBase* node); + }; + + extern void Log(ParsingTreeNode* node, const WString& originalInput, stream::TextWriter& writer, const WString& prefix=L""); + } +} + +#endif + + +/*********************************************************************** +.\PARSINGTABLE.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parsing::Table + +Classes: +***********************************************************************/ + +#ifndef VCZH_PARSING_PARSINGTABLE +#define VCZH_PARSING_PARSINGTABLE + + +namespace vl +{ + namespace parsing + { + namespace tabling + { + +/*********************************************************************** +Parsing Table +***********************************************************************/ + + /// " // (multiple) e.g. "../Import/Vlpp.h" + /// classPrefix: // (single) A prefix that will be add before all generated types and function. e.g. Xml + /// guard: // (single) The C++ header guard pattern macro name. e.g. VCZH_PARSING_XML_PARSINGXML_PARSER + /// namespace: // (single) Namespaces separated by "." to contain the generated code. e.g. vl.parsing.xml + /// reflection: // (single) Namespaces separated by "." to contain the name of reflectable types. In most of the cases this should be the same as namespace. e.g. vl.parsing.xml + /// parser:() // (multiple) Pair a function name to a rule name. ParserGen.exe will generate a function called "" to parse the input using rule named "". e.g. ParseDocument(XDocument) + /// ambiguity:(enabled|disabled) // (single) Set to "enabled" indicating that the grammar is by design to have ambiguity. + /// serialization:(enabled|disabled) // (single) Set to "enabled" to serialize the parsing table as binary in the generated C++ code, so that when the "LoadTable" function is called to load the table, it can deserialize from the binary data directly, instead of parsing the grammar again. But the grammar text will always be contained in the generated C++ code regardless of the value of "serialization", it can always be retrived using the "GetParserTextBuffer" function. + /// grammar: // (single) Configuration ends here. All content after "grammar:" will be treated as the grammar to define the input. + /// + /// Here is the brief description of the grammar. + /// The grammar is formed by 3 parts: types, token definitions and rule definitions. There is only one character escaping in strings: "", which means the " character. + /// + /// 1) Types: + /// You can write attributes like @AttributeName("argument1", "argument2", ...) in the middle of types. But attributes don't affect the parsing. All attribute definitions will be stored in the generated parsing table, and who uses the table defines how attributes work. Multiple attributes are separated by ",". + /// + /// a) Enum: + /// enum EnumName + /// { + /// Item1 , + /// Item2 , + /// ... // cannot skip the last "," + /// } + /// + /// b) Class: + /// class Name [ambiguous(AmbiguousType)] [: ParentType] + /// { + /// Type name [(UnescapingFunction)] ; + /// } + /// + /// UnescapingFunction is a callback, which will be called when the contained type is fully constructed. The generated C++ code will define forward declarations of all unescaping functions in the cpp file. You should implement them in other places, or you will get linking errors. + /// + /// If the grammar enables ambiguity, then the parsing result may contain ambiguous results for the same part of the input. For example, in C++: + /// A*B; + /// has two meaning (if we only consider context-free parsing): multiplication expression and pointer variable definition. + /// So if the grammar doesn't enable ambiguity, ParserGen.exe will refuce to generate C++ codes because the grammar is wrong. + /// If the grammar enables ambiguity, than the syntax tree should be defined like this: + /// + /// class Statement ambiguous(AmbiguousStatement) + /// { + /// } + /// + /// class AmbiguousStatement : Statement // due to the definition of "Statement" class, "AmbiguousStatement" should inherit from "Statement" + /// { + /// Statement[] items; // required by naming convention + /// } + /// + /// class ExpressionStatement : Statement + /// { + /// Expression expression; + /// } + /// + /// class VariableDefinitionStatement : Statement + /// { + /// Type type; + /// token name; + /// } + /// + /// So for the "A*B;" part in the whole input, it will becomes an AmbiguousStatement, in which the "items" field contains 2 instance of "ExpressionStatement" and "VariableDefinitionStatement". + /// And you can write C++ code to resolve the ambiguity in later passes. + /// + /// c) Type references: + /// Types can be defined globally or inside classes. Generic type is not supported. When you want to refer to a specific type, it could be: + /// token: Store a token, which will becomes [T:vl.parsing.ParsingToken]. + /// Type[]: Array, which will becomes [T:vl.collections.List`2] to the element type. Token cannot be the element of arrays. + /// ClassName: Instance of a specified type, which will becomes [T:vl.Ptr`1] to that type. + /// OuterClass.InnerClass: Refer to the "InnerClass" defined inside the "OuterClass". + /// + /// 2) Token definitions: + /// token TokenName = "regular expression" ; + /// discardtoken TokenName = "regular expression"; + /// + /// "discardtoken" means if such a token is identified, it will not appear in the lexical analyzing result. And you cannot refer to names of "discardtoken" in the grammar. + /// + /// 3) Rule definitions: + /// rule RuleType RuleName + /// = Grammar1 + /// = Grammar2 + /// ... + /// ; + /// + /// It means rule "RuleName" is defined by those grammars, and matching this rule will create an instance of "RuleType" or its whatever types that inheriting "RuleType". + /// + /// 4) Grammars: + /// RuleName: Defines an input that matches a rule. + /// TokenName: Defines an input that formed by the specified token. + /// "StringConstant": Defins an input that formed by exactly the string constant. This constant should define a token in the token list. + /// Grammar : FieldName: Defines an input that matches Grammar (should be either a rule name or a token name), and the result will be stored in field "FieldName" of a class, whose type will appear later. + /// !Grammar: Defines an input that matches Grammar, and the rule will return the result from this grammar. The input should still match other part of the rule, but result of other parts are ignored. + /// [Grammar]: Defines an input that, if match Grammar, will returns the result from that grammar; if not, the result is null. + /// {Grammar}: Defines an input that matches 0, 1 or more Grammar. + /// (Grammar): Defins an input that matches the the grammar. Brackets is only for changing operator associations. + /// Grammar1 Grammar2: Defines an input that should match Grammar1 right before Grammar2. + /// Grammar1 | Grammar2: Defines an input that match either Grammar1 or Grammar2. + /// Grammar as Type: Defines an input that matches the Grammar, and the whole branch of the rule creates an instance of type "Type" + /// Grammar with { FieldName = Value }: Defins an input that matches the Grammar, and will assign "Value", which should be an enum item, to the field "FieldName" of the created instance. + /// + /// 5) Example + /// Here is an example to parse expression containing +, -, *, /, () and numbers:\ + /// + /// include:"Vlpp.h" + /// classPrefix:Calc + /// guard:VCZH_CALCULATOR_PARSER + /// namespace:vl.calculator + /// reflection:vl.calculator + /// parser:ParseExpression(Expr) + /// ambiguity:disabled + /// serialization:enabled + /// grammar: + /// + /// class Expression + /// { + /// } + /// + /// enum BinaryOperator + /// { + /// Add, Sub, Mul, Div, + /// } + /// + /// class NumberExpression : Expression + /// { + /// token number; + /// } + /// + /// class BinaryExpression : Expression + /// { + /// BinaryOperator op; + /// Expression left; + /// Expression right; + /// } + /// + /// token ADD "\+" + /// token SUB "-" + /// token MUL "\*" + /// token DIV "\/" + /// token NUMBER "\d+(.\d+)?" + /// token OPEN "(" + /// token CLOSE ")" + /// + /// rule Expression Factor + /// = NUMBER : number as NumberExpression + /// = "(" !Expr ")" + /// ; + /// rule Expression Term + /// = !Factor + /// = Term : left "*" Factor : right as BinaryExpression with {op = "Mul"} + /// = Term : left "/" Factor : right as BinaryExpression with {op = "Div"} + /// ; + /// rule Expression Expr + /// = !Term + /// = Expr : left "+" Term : right as BinaryExpression with {op = "Add"} + /// = Expr : left "-" Term : right as BinaryExpression with {op = "Sub"} + /// ; + /// + /// After using ParserGen.exe to generate C++ codes, you can do this: + /// auto table = CalcLoadTable(); // this table can be used several times, don't load each type for each parsing, it will have a big performance overhead. + /// List> errors; + /// auto expression = CalcParseExpression(L"(1+2) * (3+4)", table, errors); // it should be a Ptr, will returns nullptr if the input is wrong, with all errors filled into the "errors" variable. + /// You don't need to define the "errors" if you don't actually care how the input is wrong. There will be a overloaded version of CalcParseExpression that doesn't need the error list. + /// + /// If you want to parse a wrong input and do automatic error recovering, which means if the input is not too wrong, you can still get a syntax tree, but some fields are null, with errors filled into the "error" variable. It will be a little complex: + /// auto table = CalcLoadTable(); // Load the table. + /// ParsingState state(L"(1+2) * (3+4)", table); // Initialize a state with the input and the table. + /// state.Reset(L"Expr"); // Set the rule to parse. + /// auto parser = CreateAutoRecoverParser(table); // Create an appropriate automatic error recoverable parser. + /// List> errors; // Define an error list. + /// auto node = parser->Parse(state, errors); // Parse to get an abstract syntax tree, which is a Ptr. + /// if (node) + /// { + /// auto expression = CalcConvertParsingTreeNode(node, state.GetTokens()).Cast(); + /// } + /// + /// After you get a strong typed syntax tree, you can use the generated visitor interface to do something, like evaluate the results of the expression: + /// class Evaluator : public Object, public virtual CalcExpression::IVisitor + /// { + /// private: + /// double result; + /// + /// double Call(CalcExpression* node) + /// { + /// node->Accept(this); + /// return result; + /// } + /// + /// public: + /// + /// static double Evaluate(CalcExpression* node) + /// { + /// return Evaluator().Call(node); + /// } + /// + /// void Visit(CalcNumberExpression* node)override + /// { + /// return wtof(node->number.value); + /// } + /// + /// void Visit(CalcBinaryExpression* node)override + /// { + /// auto left = Calc(node->left.Obj()); + /// auto right = Calc(node->right.Obj()); + /// switch (node->op) + /// { + /// case CalcBinaryOperator::Add: + /// result = left + right; + /// break; + /// case CalcBinaryOperator::Sub: + /// result = left 0 right; + /// break; + /// case CalcBinaryOperator::Mul: + /// result = left * right; + /// break; + /// case CalcBinaryOperator::Div: + /// result = left / right; + /// break; + /// } + /// } + /// }; + /// + /// Nullable EvaluateExpression(const WString& input) + /// { + /// static auto table = CalcLoadTable(); + /// auto expression = CalcParseExpression(input, table); + /// Nulllable result; + /// if (expression) + /// { + /// result = Evaluator::Evaulate(expression.Obj()); + /// } + /// return result; + /// } + /// + /// ]]> + class ParsingTable : public Object + { + public: + static const vint TokenBegin=0; + static const vint TokenFinish=1; + static const vint NormalReduce=2; + static const vint LeftRecursiveReduce=3; + static const vint UserTokenStart=4; + + class AttributeInfo : public Object + { + public: + WString name; + collections::List arguments; + + AttributeInfo(const WString& _name = L"") + :name(_name) + { + } + + AttributeInfo* Argument(const WString& argument) + { + arguments.Add(argument); + return this; + } + }; + + class AttributeInfoList : public Object + { + public: + collections::List> attributes; + + Ptr FindFirst(const WString& name); + }; + + class TreeTypeInfo + { + public: + WString type; + vint attributeIndex; + + TreeTypeInfo() + :attributeIndex(-1) + { + } + + TreeTypeInfo(const WString& _type, vint _attributeIndex) + :type(_type) + ,attributeIndex(_attributeIndex) + { + } + }; + + class TreeFieldInfo + { + public: + WString type; + WString field; + vint attributeIndex; + + TreeFieldInfo() + :attributeIndex(-1) + { + } + + TreeFieldInfo(const WString& _type, const WString& _field, vint _attributeIndex) + :type(_type) + ,field(_field) + ,attributeIndex(_attributeIndex) + { + } + }; + + class TokenInfo + { + public: + WString name; + WString regex; + vint regexTokenIndex; + vint attributeIndex; + + TokenInfo() + :regexTokenIndex(-1) + ,attributeIndex(-1) + { + } + + TokenInfo(const WString& _name, const WString& _regex, vint _attributeIndex) + :name(_name) + ,regex(_regex) + ,regexTokenIndex(-1) + ,attributeIndex(_attributeIndex) + { + } + }; + + class StateInfo + { + public: + WString ruleName; + WString stateName; + WString stateExpression; + + WString ruleAmbiguousType; // filled in Initialize() + + StateInfo() + { + } + + StateInfo(const WString& _ruleName, const WString& _stateName, const WString& _stateExpression) + :ruleName(_ruleName) + ,stateName(_stateName) + ,stateExpression(_stateExpression) + { + } + }; + + class RuleInfo + { + public: + WString name; + WString type; + WString ambiguousType; + vint rootStartState; + vint attributeIndex; + + RuleInfo() + :rootStartState(-1) + ,attributeIndex(-1) + { + } + + RuleInfo(const WString& _name, const WString& _type, const WString& _ambiguousType, vint _rootStartState, vint _attributeIndex) + :name(_name) + ,type(_type) + ,ambiguousType(_ambiguousType) + ,rootStartState(_rootStartState) + ,attributeIndex(_attributeIndex) + { + } + }; + + class Instruction + { + public: + enum InstructionType + { + Create, + Assign, + Item, + Using, + Setter, + Shift, + Reduce, + LeftRecursiveReduce, + }; + + InstructionType instructionType; + vint stateParameter; + WString nameParameter; + WString value; + WString creatorRule; + + Instruction() + :instructionType(Create) + ,stateParameter(0) + { + } + + Instruction(InstructionType _instructionType, vint _stateParameter, const WString& _nameParameter, const WString& _value, const WString& _creatorRule) + :instructionType(_instructionType) + ,stateParameter(_stateParameter) + ,nameParameter(_nameParameter) + ,value(_value) + ,creatorRule(_creatorRule) + { + } + }; + + class LookAheadInfo + { + public: + collections::List tokens; + vint state; + + LookAheadInfo() + :state(-1) + { + } + + enum PrefixResult + { + Prefix, + Equal, + NotPrefix, + }; + + static PrefixResult TestPrefix(Ptr a, Ptr b); + static void WalkInternal(Ptr table, Ptr previous, vint state, collections::SortedList& walkedStates, collections::List>& newInfos); + static void Walk(Ptr table, Ptr previous, vint state, collections::List>& newInfos); + }; + + class TransitionItem + { + public: + vint token; + vint targetState; + collections::List> lookAheads; + collections::List stackPattern; + collections::List instructions; + + enum OrderResult + { + CorrectOrder, + WrongOrder, + SameOrder, + UnknownOrder, + }; + + TransitionItem(){} + + TransitionItem(vint _token, vint _targetState) + :token(_token) + ,targetState(_targetState) + { + } + + static OrderResult CheckOrder(Ptr t1, Ptr t2, OrderResult defaultResult = UnknownOrder); + static vint Compare(Ptr t1, Ptr t2, OrderResult defaultResult); + }; + + class TransitionBag + { + public: + collections::List> transitionItems; + }; + + protected: + // metadata + bool ambiguity; + collections::Array> attributeInfos; + collections::Array treeTypeInfos; + collections::Array treeFieldInfos; + + // LALR table + vint tokenCount; // tokenInfos.Count() + discardTokenInfos.Count() + vint stateCount; // stateInfos.Count() + collections::Array tokenInfos; + collections::Array discardTokenInfos; + collections::Array stateInfos; + collections::Array ruleInfos; + collections::Array> transitionBags; + + // generated data + Ptr lexer; + collections::Dictionary ruleMap; + collections::Dictionary treeTypeInfoMap; + collections::Dictionary, vint> treeFieldInfoMap; + + template + void IO(TIO& io); + + public: + ParsingTable(vint _attributeInfoCount, vint _treeTypeInfoCount, vint _treeFieldInfoCount, vint _tokenCount, vint _discardTokenCount, vint _stateCount, vint _ruleCount); + /// Deserialize the parsing table from a stream. should be before using this table. + /// The stream. + ParsingTable(stream::IStream& input); + ~ParsingTable(); + + /// Serialize the parsing table to a stream. + /// The stream. + void Serialize(stream::IStream& output); + + bool GetAmbiguity(); + void SetAmbiguity(bool value); + + vint GetAttributeInfoCount(); + Ptr GetAttributeInfo(vint index); + void SetAttributeInfo(vint index, Ptr info); + + vint GetTreeTypeInfoCount(); + const TreeTypeInfo& GetTreeTypeInfo(vint index); + const TreeTypeInfo& GetTreeTypeInfo(const WString& type); + void SetTreeTypeInfo(vint index, const TreeTypeInfo& info); + + vint GetTreeFieldInfoCount(); + const TreeFieldInfo& GetTreeFieldInfo(vint index); + const TreeFieldInfo& GetTreeFieldInfo(const WString& type, const WString& field); + void SetTreeFieldInfo(vint index, const TreeFieldInfo& info); + + vint GetTokenCount(); + const TokenInfo& GetTokenInfo(vint token); + void SetTokenInfo(vint token, const TokenInfo& info); + + vint GetDiscardTokenCount(); + const TokenInfo& GetDiscardTokenInfo(vint token); + void SetDiscardTokenInfo(vint token, const TokenInfo& info); + + vint GetStateCount(); + const StateInfo& GetStateInfo(vint state); + void SetStateInfo(vint state, const StateInfo& info); + + vint GetRuleCount(); + const RuleInfo& GetRuleInfo(const WString& ruleName); + const RuleInfo& GetRuleInfo(vint rule); + void SetRuleInfo(vint rule, const RuleInfo& info); + + const regex::RegexLexer& GetLexer(); + Ptr GetTransitionBag(vint state, vint token); + void SetTransitionBag(vint state, vint token, Ptr bag); + /// Initialize the parsing table. This function should be called after deserializing the table from a string. + void Initialize(); + bool IsInputToken(vint regexTokenIndex); + vint GetTableTokenIndex(vint regexTokenIndex); + vint GetTableDiscardTokenIndex(vint regexTokenIndex); + }; + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + extern void Log(Ptr table, stream::TextWriter& writer); + } + } +} + +#endif + +/*********************************************************************** +.\PARSINGSTATE.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parsing::State + +Classes: +***********************************************************************/ + +#ifndef VCZH_PARSING_PARSINGSTATE +#define VCZH_PARSING_PARSINGSTATE + + +namespace vl +{ + namespace parsing + { + namespace tabling + { + +/*********************************************************************** +Syntax Analyzer +***********************************************************************/ + + class ParsingTokenWalker : public Object + { + protected: + class LookAheadEnumerator : public Object, public collections::IEnumerator + { + protected: + const ParsingTokenWalker* walker; + vint firstToken; + vint currentToken; + vint currentValue; + vint index; + + public: + LookAheadEnumerator(const ParsingTokenWalker* _walker, vint _currentToken); + LookAheadEnumerator(const LookAheadEnumerator& _enumerator); + + collections::IEnumerator* Clone()const override; + const vint& Current()const override; + vint Index()const override; + bool Next()override; + void Reset()override; + }; + + class TokenLookAhead : public Object, public collections::IEnumerable + { + protected: + const ParsingTokenWalker* walker; + public: + TokenLookAhead(const ParsingTokenWalker* _talker); + + collections::IEnumerator* CreateEnumerator()const override; + }; + + class ReduceLookAhead : public Object, public collections::IEnumerable + { + protected: + const ParsingTokenWalker* walker; + public: + ReduceLookAhead(const ParsingTokenWalker* _walker); + + collections::IEnumerator* CreateEnumerator()const override; + }; + + protected: + collections::List& tokens; + Ptr table; + vint currentToken; + TokenLookAhead tokenLookAhead; + ReduceLookAhead reduceLookAhead; + + vint GetNextIndex(vint index)const; + vint GetTableTokenIndex(vint index)const; + public: + ParsingTokenWalker(collections::List& _tokens, Ptr _table); + ~ParsingTokenWalker(); + + const collections::IEnumerable& GetTokenLookahead()const; + const collections::IEnumerable& GetReduceLookahead()const; + void Reset(); + bool Move(); + vint GetTableTokenIndex()const; + regex::RegexToken* GetRegexToken()const; + vint GetTokenIndexInStream()const; + }; + + class ParsingState : public Object + { + public: + struct ShiftReduceRange + { + regex::RegexToken* shiftToken; + regex::RegexToken* reduceToken; + + ShiftReduceRange() + :shiftToken(0) + ,reduceToken(0) + { + } + }; + + struct TransitionResult + { + enum TransitionType + { + ExecuteInstructions, + AmbiguityBegin, + AmbiguityBranch, + AmbiguityEnd, + SkipToken, + }; + + TransitionType transitionType; + vint ambiguityAffectedStackNodeCount; + WString ambiguityNodeType; + + vint tableTokenIndex; + vint tableStateSource; + vint tableStateTarget; + vint tokenIndexInStream; + regex::RegexToken* token; + + ParsingTable::TransitionItem* transition; + vint instructionBegin; + vint instructionCount; + Ptr> shiftReduceRanges; + + TransitionResult(TransitionType _transitionType=ExecuteInstructions) + :transitionType(_transitionType) + ,ambiguityAffectedStackNodeCount(0) + ,tableTokenIndex(-1) + ,tableStateSource(-1) + ,tableStateTarget(-1) + ,tokenIndexInStream(-1) + ,token(0) + ,transition(0) + ,instructionBegin(-1) + ,instructionCount(-1) + { + } + + operator bool()const + { + return transitionType!=ExecuteInstructions || transition!=0; + } + + void AddShiftReduceRange(regex::RegexToken* shiftToken, regex::RegexToken* reduceToken) + { + ShiftReduceRange range; + range.shiftToken=shiftToken; + range.reduceToken=reduceToken; + if(!shiftReduceRanges) + { + shiftReduceRanges=new collections::List(); + } + shiftReduceRanges->Add(range); + } + }; + + struct Future + { + vint currentState; + vint reduceStateCount; + collections::List shiftStates; + regex::RegexToken* selectedRegexToken; + vint selectedToken; + ParsingTable::TransitionItem* selectedItem; + Future* previous; + Future* next; + + Future() + :currentState(-1) + ,reduceStateCount(0) + ,selectedRegexToken(0) + ,selectedToken(-1) + ,selectedItem(0) + ,previous(0) + ,next(0) + { + } + + Future* Clone() + { + Future* future = new Future; + future->currentState = currentState; + future->reduceStateCount = reduceStateCount; + CopyFrom(future->shiftStates, shiftStates); + future->selectedRegexToken = selectedRegexToken; + future->selectedToken = selectedToken; + future->selectedItem = selectedItem; + future->previous = previous; + return future; + } + }; + + struct StateGroup + { + collections::List stateStack; + vint currentState; + vint tokenSequenceIndex; + + collections::List shiftTokenStack; + regex::RegexToken* shiftToken; + regex::RegexToken* reduceToken; + + StateGroup(); + StateGroup(const ParsingTable::RuleInfo& info); + StateGroup(const StateGroup& group); + }; + private: + WString input; + Ptr table; + collections::List tokens; + Ptr walker; + + WString parsingRule; + vint parsingRuleStartState; + Ptr stateGroup; + public: + ParsingState(const WString& _input, Ptr _table, vint codeIndex=-1); + ~ParsingState(); + + const WString& GetInput(); + Ptr GetTable(); + const collections::List& GetTokens(); + regex::RegexToken* GetToken(vint index); + + vint Reset(const WString& rule); + WString GetParsingRule(); + vint GetParsingRuleStartState(); + vint GetCurrentToken(); + vint GetCurrentTableTokenIndex(); + const collections::List& GetStateStack(); + vint GetCurrentState(); + void SkipCurrentToken(); + + bool TestTransitionItemInFuture(vint tableTokenIndex, Future* future, ParsingTable::TransitionItem* item, const collections::IEnumerable* lookAheadTokens); + ParsingTable::TransitionItem* MatchTokenInFuture(vint tableTokenIndex, Future* future, const collections::IEnumerable* lookAheadTokens); + ParsingTable::TransitionItem* MatchToken(vint tableTokenIndex, const collections::IEnumerable* lookAheadTokens); + void RunTransitionInFuture(ParsingTable::TransitionItem* transition, Future* previous, Future* now); + ParsingState::TransitionResult RunTransition(ParsingTable::TransitionItem* transition, regex::RegexToken* regexToken, vint instructionBegin, vint instructionCount, bool lastPart); + ParsingState::TransitionResult RunTransition(ParsingTable::TransitionItem* transition, regex::RegexToken* regexToken); + + bool ReadTokenInFuture(vint tableTokenIndex, Future* previous, Future* now, const collections::IEnumerable* lookAheadTokens); + TransitionResult ReadToken(vint tableTokenIndex, regex::RegexToken* regexToken, const collections::IEnumerable* lookAheadTokens); + TransitionResult ReadToken(); + + bool TestExplore(vint tableTokenIndex, Future* previous); + bool Explore(vint tableTokenIndex, Future* previous, collections::List& possibilities); + bool ExploreStep(collections::List& previousFutures, vint start, vint count, collections::List& possibilities); + bool ExploreNormalReduce(collections::List& previousFutures, vint start, vint count, collections::List& possibilities); + bool ExploreLeftRecursiveReduce(collections::List& previousFutures, vint start, vint count, collections::List& possibilities); + Future* ExploreCreateRootFuture(); + + Ptr TakeSnapshot(); + void RestoreSnapshot(Ptr group); + }; + +/*********************************************************************** +AST Generating +***********************************************************************/ + + class ParsingTransitionProcessor : public Object + { + public: + virtual void Reset()=0; + virtual bool Run(const ParsingState::TransitionResult& result)=0; + virtual bool GetProcessingAmbiguityBranch()=0; + }; + + class ParsingTreeBuilder : public ParsingTransitionProcessor + { + protected: + Ptr createdObject; + Ptr operationTarget; + collections::List> nodeStack; + + bool processingAmbiguityBranch; + Ptr ambiguityBranchCreatedObject; + Ptr ambiguityBranchOperationTarget; + vint ambiguityBranchSharedNodeCount; + collections::List> ambiguityBranchNodeStack; + collections::List> ambiguityNodes; + public: + ParsingTreeBuilder(); + ~ParsingTreeBuilder(); + + void Reset()override; + bool Run(const ParsingState::TransitionResult& result)override; + bool GetProcessingAmbiguityBranch()override; + Ptr GetNode()const; + }; + + class ParsingTransitionCollector : public ParsingTransitionProcessor + { + typedef collections::List TransitionResultList; + protected: + vint ambiguityBegin; + TransitionResultList transitions; + + collections::Dictionary ambiguityBeginToEnds; + collections::Group ambiguityBeginToBranches; + collections::Dictionary ambiguityBranchToBegins; + public: + ParsingTransitionCollector(); + ~ParsingTransitionCollector(); + + void Reset()override; + bool Run(const ParsingState::TransitionResult& result)override; + bool GetProcessingAmbiguityBranch()override; + + const TransitionResultList& GetTransitions()const; + vint GetAmbiguityEndFromBegin(vint transitionIndex)const; + const collections::List& GetAmbiguityBranchesFromBegin(vint transitionIndex)const; + vint GetAmbiguityBeginFromBranch(vint transitionIndex)const; + }; + } + } +} + +#endif + +/*********************************************************************** +.\PARSINGDEFINITIONS.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parsing::Definitions + +Classes: +***********************************************************************/ + +#ifndef VCZH_PARSING_PARSINGDEFINITIONS +#define VCZH_PARSING_PARSINGDEFINITIONS + + +namespace vl +{ + namespace parsing + { + namespace definitions + { + +/*********************************************************************** +Attributes +***********************************************************************/ + + class ParsingDefinitionAttribute : public ParsingTreeCustomBase + { + public: + WString name; + collections::List arguments; + }; + + class ParsingDefinitionBase : public ParsingTreeCustomBase + { + typedef collections::List> AttributeList; + public: + AttributeList attributes; + }; + +/*********************************************************************** +Type +***********************************************************************/ + + class ParsingDefinitionPrimitiveType; + class ParsingDefinitionTokenType; + class ParsingDefinitionSubType; + class ParsingDefinitionArrayType; + + class ParsingDefinitionType : public ParsingTreeCustomBase + { + public: + class IVisitor : public Interface + { + public: + virtual void Visit(ParsingDefinitionPrimitiveType* node)=0; + virtual void Visit(ParsingDefinitionTokenType* node)=0; + virtual void Visit(ParsingDefinitionSubType* node)=0; + virtual void Visit(ParsingDefinitionArrayType* node)=0; + }; + + virtual void Accept(IVisitor* visitor)=0; + }; + + class ParsingDefinitionPrimitiveType : public ParsingDefinitionType + { + public: + WString name; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionTokenType : public ParsingDefinitionType + { + public: + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionSubType : public ParsingDefinitionType + { + public: + Ptr parentType; + WString subTypeName; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionArrayType : public ParsingDefinitionType + { + public: + Ptr elementType; + + void Accept(IVisitor* visitor)override; + }; + +/*********************************************************************** +Type Definition +***********************************************************************/ + + class ParsingDefinitionClassMemberDefinition; + class ParsingDefinitionClassDefinition; + class ParsingDefinitionEnumMemberDefinition; + class ParsingDefinitionEnumDefinition; + + class ParsingDefinitionTypeDefinition : public ParsingDefinitionBase + { + public: + class IVisitor : public Interface + { + public: + virtual void Visit(ParsingDefinitionClassMemberDefinition* node)=0; + virtual void Visit(ParsingDefinitionClassDefinition* node)=0; + virtual void Visit(ParsingDefinitionEnumMemberDefinition* node)=0; + virtual void Visit(ParsingDefinitionEnumDefinition* node)=0; + }; + + virtual void Accept(IVisitor* visitor)=0; + public: + WString name; + }; + + class ParsingDefinitionClassMemberDefinition : public ParsingDefinitionTypeDefinition + { + public: + Ptr type; + WString unescapingFunction; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionClassDefinition : public ParsingDefinitionTypeDefinition + { + public: + typedef collections::List> MemberList; + typedef collections::List> TypeList; + + Ptr ambiguousType; + Ptr parentType; + MemberList members; + TypeList subTypes; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionEnumMemberDefinition : public ParsingDefinitionTypeDefinition + { + public: + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionEnumDefinition : public ParsingDefinitionTypeDefinition + { + public: + typedef collections::List> MemberList; + + MemberList members; + + void Accept(IVisitor* visitor)override; + }; + +/*********************************************************************** +Grammar +***********************************************************************/ + + class ParsingDefinitionPrimitiveGrammar; + class ParsingDefinitionTextGrammar; + class ParsingDefinitionSequenceGrammar; + class ParsingDefinitionAlternativeGrammar; + class ParsingDefinitionLoopGrammar; + class ParsingDefinitionOptionalGrammar; + class ParsingDefinitionCreateGrammar; + class ParsingDefinitionAssignGrammar; + class ParsingDefinitionUseGrammar; + class ParsingDefinitionSetterGrammar; + + class ParsingDefinitionGrammar : public ParsingTreeCustomBase + { + public: + class IVisitor : public Interface + { + public: + virtual void Visit(ParsingDefinitionPrimitiveGrammar* node)=0; + virtual void Visit(ParsingDefinitionTextGrammar* node)=0; + virtual void Visit(ParsingDefinitionSequenceGrammar* node)=0; + virtual void Visit(ParsingDefinitionAlternativeGrammar* node)=0; + virtual void Visit(ParsingDefinitionLoopGrammar* node)=0; + virtual void Visit(ParsingDefinitionOptionalGrammar* node)=0; + virtual void Visit(ParsingDefinitionCreateGrammar* node)=0; + virtual void Visit(ParsingDefinitionAssignGrammar* node)=0; + virtual void Visit(ParsingDefinitionUseGrammar* node)=0; + virtual void Visit(ParsingDefinitionSetterGrammar* node)=0; + }; + + virtual void Accept(IVisitor* visitor)=0; + }; + + class ParsingDefinitionPrimitiveGrammar : public ParsingDefinitionGrammar + { + public: + WString name; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionTextGrammar : public ParsingDefinitionGrammar + { + public: + WString text; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionSequenceGrammar : public ParsingDefinitionGrammar + { + public: + Ptr first; + Ptr second; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionAlternativeGrammar : public ParsingDefinitionGrammar + { + public: + Ptr first; + Ptr second; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionLoopGrammar : public ParsingDefinitionGrammar + { + public: + Ptr grammar; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionOptionalGrammar : public ParsingDefinitionGrammar + { + public: + Ptr grammar; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionCreateGrammar : public ParsingDefinitionGrammar + { + public: + Ptr grammar; + Ptr type; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionAssignGrammar : public ParsingDefinitionGrammar + { + public: + Ptr grammar; + WString memberName; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionUseGrammar : public ParsingDefinitionGrammar + { + public: + Ptr grammar; + + void Accept(IVisitor* visitor)override; + }; + + class ParsingDefinitionSetterGrammar : public ParsingDefinitionGrammar + { + public: + Ptr grammar; + WString memberName; + WString value; + + void Accept(IVisitor* visitor)override; + }; + +/*********************************************************************** +Token and Rule +***********************************************************************/ + + class ParsingDefinitionTokenDefinition : public ParsingDefinitionBase + { + public: + WString name; + WString regex; + bool discard; + }; + + class ParsingDefinitionRuleDefinition : public ParsingDefinitionBase + { + public: + WString name; + Ptr type; + collections::List> grammars; + }; + + class ParsingDefinition : public ParsingTreeCustomBase + { + public: + collections::List> types; + collections::List> tokens; + collections::List> rules; + }; + +/*********************************************************************** +Attribute Writer +***********************************************************************/ + + class ParsingDefinitionAttributeWriter : public Object + { + friend ParsingDefinitionAttributeWriter Attribute(const WString& name); + protected: + Ptr attribute; + + ParsingDefinitionAttributeWriter(const WString& name); + public: + ParsingDefinitionAttributeWriter(const ParsingDefinitionAttributeWriter& attributeWriter); + + ParsingDefinitionAttributeWriter& Argument(const WString& argument); + Ptr Attribute()const; + }; + + extern ParsingDefinitionAttributeWriter Attribute(const WString& name); + +/*********************************************************************** +Type Writer +***********************************************************************/ + + class ParsingDefinitionTypeWriter : public Object + { + friend ParsingDefinitionTypeWriter Type(const WString& name); + friend ParsingDefinitionTypeWriter TokenType(); + protected: + Ptr type; + + ParsingDefinitionTypeWriter(Ptr internalType); + ParsingDefinitionTypeWriter(const WString& name); + public: + ParsingDefinitionTypeWriter(const ParsingDefinitionTypeWriter& typeWriter); + + ParsingDefinitionTypeWriter Sub(const WString& subTypeName)const; + ParsingDefinitionTypeWriter Array()const; + Ptr Type()const; + }; + + extern ParsingDefinitionTypeWriter Type(const WString& name); + extern ParsingDefinitionTypeWriter TokenType(); + +/*********************************************************************** +Type Definition Writer +***********************************************************************/ + + class ParsingDefinitionTypeDefinitionWriter : public Object + { + public: + virtual Ptr Definition()const=0; + }; + + class ParsingDefinitionClassDefinitionWriter : public ParsingDefinitionTypeDefinitionWriter + { + protected: + Ptr currentDefinition; + Ptr definition; + + public: + ParsingDefinitionClassDefinitionWriter(const WString& name); + ParsingDefinitionClassDefinitionWriter(const WString& name, const ParsingDefinitionTypeWriter& parentType); + + ParsingDefinitionClassDefinitionWriter& AmbiguousType(const ParsingDefinitionTypeWriter& ambiguousType); + ParsingDefinitionClassDefinitionWriter& Member(const WString& name, const ParsingDefinitionTypeWriter& type, const WString& unescapingFunction=L""); + ParsingDefinitionClassDefinitionWriter& SubType(const ParsingDefinitionTypeDefinitionWriter& type); + ParsingDefinitionClassDefinitionWriter& Attribute(const ParsingDefinitionAttributeWriter& attribute); + + Ptr Definition()const override; + }; + + extern ParsingDefinitionClassDefinitionWriter Class(const WString& name); + extern ParsingDefinitionClassDefinitionWriter Class(const WString& name, const ParsingDefinitionTypeWriter& parentType); + + class ParsingDefinitionEnumDefinitionWriter : public ParsingDefinitionTypeDefinitionWriter + { + protected: + Ptr currentDefinition; + Ptr definition; + + public: + ParsingDefinitionEnumDefinitionWriter(const WString& name); + + ParsingDefinitionEnumDefinitionWriter& Member(const WString& name); + ParsingDefinitionEnumDefinitionWriter& Attribute(const ParsingDefinitionAttributeWriter& attribute); + + Ptr Definition()const override; + }; + + extern ParsingDefinitionEnumDefinitionWriter Enum(const WString& name); + +/*********************************************************************** +Grammar Writer +***********************************************************************/ + + class ParsingDefinitionGrammarWriter : public Object + { + friend ParsingDefinitionGrammarWriter Rule(const WString& name); + friend ParsingDefinitionGrammarWriter Text(const WString& name); + friend ParsingDefinitionGrammarWriter Opt(const ParsingDefinitionGrammarWriter& writer); + protected: + Ptr grammar; + + ParsingDefinitionGrammarWriter(Ptr internalGrammar); + public: + ParsingDefinitionGrammarWriter(const ParsingDefinitionGrammarWriter& grammarWriter); + + ParsingDefinitionGrammarWriter operator+(const ParsingDefinitionGrammarWriter& next)const; + ParsingDefinitionGrammarWriter operator|(const ParsingDefinitionGrammarWriter& next)const; + ParsingDefinitionGrammarWriter operator*()const; + ParsingDefinitionGrammarWriter As(const ParsingDefinitionTypeWriter& type)const; + ParsingDefinitionGrammarWriter operator[](const WString& memberName)const; + ParsingDefinitionGrammarWriter operator!()const; + ParsingDefinitionGrammarWriter Set(const WString& memberName, const WString& value)const; + + Ptr Grammar()const; + }; + + extern ParsingDefinitionGrammarWriter Rule(const WString& name); + extern ParsingDefinitionGrammarWriter Text(const WString& text); + extern ParsingDefinitionGrammarWriter Opt(const ParsingDefinitionGrammarWriter& writer); + +/*********************************************************************** +Token and Rule Writer +***********************************************************************/ + + class ParsingDefinitionWriter; + + class ParsingDefinitionTokenDefinitionWriter : public Object + { + protected: + Ptr token; + ParsingDefinitionWriter& owner; + public: + ParsingDefinitionTokenDefinitionWriter(ParsingDefinitionWriter& _owner, Ptr _token); + + ParsingDefinitionTokenDefinitionWriter& Attribute(const ParsingDefinitionAttributeWriter& attribute); + ParsingDefinitionWriter& EndToken(); + }; + + class ParsingDefinitionRuleDefinitionWriter : public Object + { + protected: + Ptr rule; + ParsingDefinitionWriter& owner; + public: + ParsingDefinitionRuleDefinitionWriter(ParsingDefinitionWriter& _owner, Ptr _rule); + + ParsingDefinitionRuleDefinitionWriter& Imply(const ParsingDefinitionGrammarWriter& grammar); + ParsingDefinitionRuleDefinitionWriter& Attribute(const ParsingDefinitionAttributeWriter& attribute); + ParsingDefinitionWriter& EndRule(); + }; + + class ParsingDefinitionWriter : public Object + { + protected: + Ptr definition; + + public: + ParsingDefinitionWriter(); + + ParsingDefinitionWriter& Type(const ParsingDefinitionTypeDefinitionWriter& type); + ParsingDefinitionWriter& Token(const WString& name, const WString& regex); + ParsingDefinitionTokenDefinitionWriter TokenAtt(const WString& name, const WString& regex); + ParsingDefinitionWriter& Discard(const WString& name, const WString& regex); + ParsingDefinitionRuleDefinitionWriter Rule(const WString& name, const ParsingDefinitionTypeWriter& type); + + Ptr Definition()const; + }; + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + extern WString TypeToString(ParsingDefinitionType* type); + extern WString GrammarToString(ParsingDefinitionGrammar* grammar); + extern WString GrammarStateToString(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode); + extern ParsingDefinitionGrammar* FindAppropriateGrammarState(ParsingDefinitionGrammar* grammar, ParsingDefinitionGrammar* stateNode, bool beforeNode); + extern void Log(Ptr definition, stream::TextWriter& writer); + extern WString DeserializeString(const WString& value); + extern WString SerializeString(const WString& value); + +/*********************************************************************** +Bootstrap +***********************************************************************/ + + extern Ptr CreateParserDefinition(); + extern Ptr DeserializeDefinition(Ptr node); + } + } +} + +#endif + +/*********************************************************************** +.\PARSINGANALYZER.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parsing::Analyzing + +Classes: +***********************************************************************/ + +#ifndef VCZH_PARSING_PARSINGANALYZER +#define VCZH_PARSING_PARSINGANALYZER + + +namespace vl +{ + namespace parsing + { + namespace analyzing + { + +/*********************************************************************** +DefinitionTypeScopePair +***********************************************************************/ + + class ParsingSymbol; + class ParsingSymbolManager; + + struct DefinitionTypeScopePair + { + definitions::ParsingDefinitionType* type; + ParsingSymbol* scope; + + DefinitionTypeScopePair() + { + } + + DefinitionTypeScopePair(definitions::ParsingDefinitionType* _type, ParsingSymbol* _scope) + :type(_type) + ,scope(_scope) + { + } + + vint Compare(const DefinitionTypeScopePair& pair)const + { + if(typepair.type) return 1; + if(scopepair.scope) return 1; + return 0; + } + + bool operator== (const DefinitionTypeScopePair& pair)const {return Compare(pair)==0;} + bool operator!= (const DefinitionTypeScopePair& pair)const {return Compare(pair)!=0;} + bool operator> (const DefinitionTypeScopePair& pair)const {return Compare(pair)>0;} + bool operator>= (const DefinitionTypeScopePair& pair)const {return Compare(pair)>=0;} + bool operator< (const DefinitionTypeScopePair& pair)const {return Compare(pair)<0;} + bool operator<= (const DefinitionTypeScopePair& pair)const {return Compare(pair)<=0;} + }; + +/*********************************************************************** +ParsingSymbol Management +***********************************************************************/ + + class ParsingSymbol : public Object + { + friend class ParsingSymbolManager; + + typedef collections::Dictionary ParsingSymbolMap; + typedef collections::List ParsingSymbolList; + public: + enum SymbolType + { + Global, + EnumType, + ClassType, // descriptor == base type + ArrayType, // descriptor == element type + TokenType, + EnumItem, // descriptor == parent + ClassField, // descriptor == field type + TokenDef, // descriptor == token type + RuleDef, // descriptor == rule type + }; + + protected: + ParsingSymbolManager* manager; + SymbolType type; + WString name; + ParsingSymbol* descriptorSymbol; + WString descriptorString; + ParsingSymbol* parentSymbol; + ParsingSymbol* arrayTypeSymbol; + ParsingSymbolList subSymbolList; + ParsingSymbolMap subSymbolMap; + + bool AddSubSymbol(ParsingSymbol* subSymbol); + + ParsingSymbol(ParsingSymbolManager* _manager, SymbolType _type, const WString& _name, ParsingSymbol* _descriptorSymbol, const WString& _descriptorString); + public: + ~ParsingSymbol(); + + ParsingSymbolManager* GetManager(); + SymbolType GetType(); + const WString& GetName(); + vint GetSubSymbolCount(); + ParsingSymbol* GetSubSymbol(vint index); + ParsingSymbol* GetSubSymbolByName(const WString& name); + ParsingSymbol* GetDescriptorSymbol(); + WString GetDescriptorString(); + ParsingSymbol* GetParentSymbol(); + bool IsType(); + ParsingSymbol* SearchClassSubSymbol(const WString& name); + ParsingSymbol* SearchCommonBaseClass(ParsingSymbol* classType); + }; + + class ParsingSymbolManager : public Object + { + typedef definitions::ParsingDefinitionClassDefinition ClassDefinition; + typedef collections::List> ParsingSymbolList; + typedef collections::Dictionary DefinitionTypeSymbolMap; + typedef collections::Dictionary DefinitionGrammarSymbolMap; + typedef collections::Dictionary SymbolClassDefinitionMap; + typedef collections::Dictionary ClassDefinitionSymbolMap; + protected: + ParsingSymbol* globalSymbol; + ParsingSymbol* tokenTypeSymbol; + ParsingSymbolList createdSymbols; + DefinitionTypeSymbolMap definitionTypeSymbolCache; + DefinitionGrammarSymbolMap definitionGrammarSymbolCache; + DefinitionGrammarSymbolMap definitionGrammarTypeCache; + SymbolClassDefinitionMap symbolClassDefinitionCache; + ClassDefinitionSymbolMap classDefinitionSymbolCache; + + bool TryAddSubSymbol(Ptr subSymbol, ParsingSymbol* parentSymbol); + public: + ParsingSymbolManager(); + ~ParsingSymbolManager(); + + ParsingSymbol* GetGlobal(); + ParsingSymbol* GetTokenType(); + ParsingSymbol* GetArrayType(ParsingSymbol* elementType); + + ParsingSymbol* AddClass(definitions::ParsingDefinitionClassDefinition* classDef, ParsingSymbol* baseType, ParsingSymbol* parentType=0); + ParsingSymbol* AddField(const WString& name, ParsingSymbol* classType, ParsingSymbol* fieldType); + ParsingSymbol* AddEnum(const WString& name, ParsingSymbol* parentType=0); + ParsingSymbol* AddEnumItem(const WString& name, ParsingSymbol* enumType); + ParsingSymbol* AddTokenDefinition(const WString& name, const WString& regex); + ParsingSymbol* AddRuleDefinition(const WString& name, ParsingSymbol* ruleType); + + ClassDefinition* CacheGetClassDefinition(ParsingSymbol* type); + ParsingSymbol* CacheGetClassType(ClassDefinition* type); + ParsingSymbol* CacheGetType(definitions::ParsingDefinitionType* type, ParsingSymbol* scope); + bool CacheSetType(definitions::ParsingDefinitionType* type, ParsingSymbol* scope, ParsingSymbol* symbol); + ParsingSymbol* CacheGetSymbol(definitions::ParsingDefinitionGrammar* grammar); + bool CacheSetSymbol(definitions::ParsingDefinitionGrammar* grammar, ParsingSymbol* symbol); + ParsingSymbol* CacheGetType(definitions::ParsingDefinitionGrammar* grammar); + bool CacheSetType(definitions::ParsingDefinitionGrammar* grammar, ParsingSymbol* type); + }; + +/*********************************************************************** +Semantic Analyzer +***********************************************************************/ + + extern WString GetTypeFullName(ParsingSymbol* type); + extern ParsingSymbol* FindType(definitions::ParsingDefinitionType* type, ParsingSymbolManager* manager, ParsingSymbol* scope, collections::List>& errors); + extern void PrepareSymbols(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors); + extern void ValidateRuleStructure(Ptr definition, Ptr rule, ParsingSymbolManager* manager, collections::List>& errors); + extern void ResolveRuleSymbols(Ptr rule, ParsingSymbolManager* manager, collections::List>& errors); + extern void ResolveSymbols(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors); + extern void ValidateDefinition(Ptr definition, ParsingSymbolManager* manager, collections::List>& errors); + } + } +} + +#endif + + +/*********************************************************************** +.\PARSING.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parsing::Parser + +Classes: +***********************************************************************/ + +#ifndef VCZH_PARSING_PARSING +#define VCZH_PARSING_PARSING + + +namespace vl +{ + namespace parsing + { + namespace tabling + { + +/*********************************************************************** +Parser +***********************************************************************/ + + /// Base type of all parser strategy. + class ParsingGeneralParser : public Object + { + protected: + Ptr table; + + public: + ParsingGeneralParser(Ptr _table); + ~ParsingGeneralParser(); + + /// Get the parser table that used to do the parsing. + /// The parser table that used to do the parsing. + Ptr GetTable(); + /// Initialization. It should be called before each time of parsing. + virtual void BeginParse(); + virtual ParsingState::TransitionResult ParseStep(ParsingState& state, collections::List>& errors)=0; + bool Parse(ParsingState& state, ParsingTransitionProcessor& processor, collections::List>& errors); + Ptr Parse(ParsingState& state, collections::List>& errors); + /// Parse an input and get an abstract syntax tree if no error happens or all errors are recovered. + /// The abstract syntax tree. + /// The input to parse. + /// The name of the rule that used to parse the input. + /// Returns all errors. + /// The code index to differentiate each input. This value will be stored in every tokens and abstract syntax nodes. + Ptr Parse(const WString& input, const WString& rule, collections::List>& errors, vint codeIndex = -1); + }; + +/*********************************************************************** +Parser with different strategies +***********************************************************************/ + + /// A strict parse. It doesn't allow ambiguity and error recovery. + class ParsingStrictParser : public ParsingGeneralParser + { + protected: + + virtual bool OnTestErrorRecoverExists(); + virtual void OnClearErrorRecover(); + virtual ParsingState::TransitionResult OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List>& errors); + public: + /// Create the parse using a parsing table. + /// The parsing table. + ParsingStrictParser(Ptr _table=0); + ~ParsingStrictParser(); + + ParsingState::TransitionResult ParseStep(ParsingState& state, collections::List>& errors)override; + }; + + /// A strict parse. It doesn't allow ambiguity but allows error recovery. + class ParsingAutoRecoverParser : public ParsingStrictParser + { + public: + struct RecoverFuture + { + ParsingState::Future* future; + vint insertedTokenCount; + vint index; + vint previousIndex; + vint nextIndex; + + RecoverFuture() + :future(0) + , insertedTokenCount(0) + , index(-1) + , previousIndex(-1) + , nextIndex(-1) + { + } + }; + protected: + vint maxInsertedTokenCount; + collections::List recoverFutures; + vint recoveringFutureIndex; + + RecoverFuture& GetRecoverFuture(vint index); + RecoverFuture& CreateRecoverFuture(vint index, vint previousIndex); + bool OnTestErrorRecoverExists()override; + void OnClearErrorRecover()override; + ParsingState::TransitionResult OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List>& errors)override; + public: + /// Create the parse using a parsing table. + /// The parsing table. + /// The maximum number of tokens that allow to insert to recover an error. + ParsingAutoRecoverParser(Ptr _table = 0, vint _maxInsertedTokenCount = -1); + ~ParsingAutoRecoverParser(); + + void BeginParse()override; + }; + + /// A strict parse. It allows ambiguity but doesn't allow error recovery. + class ParsingAmbiguousParser : public ParsingGeneralParser + { + typedef collections::List DecisionList; + protected: + + DecisionList decisions; + vint consumedDecisionCount; + + virtual void OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List& futures, vint& begin, vint& end, collections::List>& errors); + vint GetResolvableFutureLevels(collections::List& futures, vint begin, vint end); + vint SearchPathForOneStep(ParsingState& state, collections::List& futures, vint& begin, vint& end, collections::List>& errors); + vint GetConflictReduceCount(collections::List& futures); + void GetConflictReduceIndices(collections::List& futures, vint conflictReduceCount, collections::Array& conflictReduceIndices); + vint GetAffectedStackNodeCount(collections::List& futures, collections::Array& conflictReduceIndices); + void BuildSingleDecisionPath(ParsingState& state, ParsingState::Future* future, vint lastAvailableInstructionCount); + void BuildAmbiguousDecisions(ParsingState& state, collections::List& futures, vint begin, vint end, vint resolvableFutureLevels, collections::List>& errors); + void BuildDecisions(ParsingState& state, collections::List& futures, vint begin, vint end, vint resolvableFutureLevels, collections::List>& errors); + public: + /// Create the parse using a parsing table. + /// The parsing table. + ParsingAmbiguousParser(Ptr _table=0); + ~ParsingAmbiguousParser(); + + ParsingState::TransitionResult ParseStep(ParsingState& state, collections::List>& errors)override; + void BeginParse()override; + }; + + /// A strict parse. It allow both ambiguity and error recovery. + class ParsingAutoRecoverAmbiguousParser : public ParsingAmbiguousParser + { + protected: + vint maxInsertedTokenCount; + + void OnErrorRecover(ParsingState& state, vint currentTokenIndex, collections::List& futures, vint& begin, vint& end, collections::List>& errors)override; + public: + /// Create the parse using a parsing table. + /// The parsing table. + /// The maximum number of tokens that allow to insert to recover an error. + ParsingAutoRecoverAmbiguousParser(Ptr _table = 0, vint _maxInsertedTokenCount = -1); + ~ParsingAutoRecoverAmbiguousParser(); + }; + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + /// Create the correct strict parser from a parsing table. + /// The created parse. + /// The table to create a parser. + extern Ptr CreateStrictParser(Ptr table); + /// Create the correct error recoverable parser from a parsing table. + /// The created parse. + /// The table to create a parser. + extern Ptr CreateAutoRecoverParser(Ptr table); + /// Create the correct strict parser to parse the grammar itself. + /// The created parse. + extern Ptr CreateBootstrapStrictParser(); + /// Create the correct error recoverable to parse the grammar itself. + /// The created parse. + extern Ptr CreateBootstrapAutoRecoverParser(); + } + } +} + +/*********************************************************************** +Reflection for AST +***********************************************************************/ + +#ifndef VCZH_DEBUG_NO_REFLECTION + +namespace vl +{ + namespace reflection + { + namespace description + { +#define PARSINGREFLECTION_TYPELIST(F)\ + F(parsing::ParsingTextPos)\ + F(parsing::ParsingTextRange)\ + F(parsing::ParsingTreeNode)\ + F(parsing::ParsingTreeToken)\ + F(parsing::ParsingTreeObject)\ + F(parsing::ParsingTreeArray)\ + F(parsing::ParsingTreeCustomBase)\ + F(parsing::ParsingToken)\ + F(parsing::ParsingError)\ + + PARSINGREFLECTION_TYPELIST(DECL_TYPE_INFO) + } + } +} + +#endif + +namespace vl +{ + namespace reflection + { + namespace description + { + extern bool LoadParsingTypes(); + } + } +} + +#endif + +/*********************************************************************** +.\PARSINGAUTOMATON.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parsing::Automaton + +Classes: +***********************************************************************/ + +#ifndef VCZH_PARSING_PARSINGAUTOMATON +#define VCZH_PARSING_PARSINGAUTOMATON + + +namespace vl +{ + namespace parsing + { + namespace analyzing + { + +/*********************************************************************** +Automaton +***********************************************************************/ + + class Action; + class Transition; + class State; + + class Action : public Object + { + public: + enum ActionType + { + Create, // new source + Assign, // source ::= + Using, // use + Setter, // source ::= target + Shift, + Reduce, + LeftRecursiveReduce, + }; + + ActionType actionType; + ParsingSymbol* actionTarget; + ParsingSymbol* actionSource; + definitions::ParsingDefinitionRuleDefinition* creatorRule; + + // the following two fields record which rule symbol transition generate this shift/reduce action + State* shiftReduceSource; + State* shiftReduceTarget; + + Action(); + ~Action(); + }; + + class Transition : public Object + { + public: + enum TransitionType + { + TokenBegin, // token stream start + TokenFinish, // token stream end + NormalReduce, // rule end + LeftRecursiveReduce, // rule end with left recursive + Epsilon, // an epsilon transition + Symbol, // a syntax symbol + }; + + enum StackOperationType + { + None, + ShiftReduceCompacted, + LeftRecursive, + }; + + State* source; + State* target; + collections::List> actions; + + TransitionType transitionType; + StackOperationType stackOperationType; + ParsingSymbol* transitionSymbol; + + Transition(); + ~Transition(); + + static bool IsEquivalent(Transition* t1, Transition* t2, bool careSourceAndTarget); + }; + + class State : public Object + { + public: + enum StatePosition + { + BeforeNode, + AfterNode, + }; + + collections::List transitions; + collections::List inputs; + bool endState; + + ParsingSymbol* ownerRuleSymbol; + definitions::ParsingDefinitionRuleDefinition* ownerRule; + definitions::ParsingDefinitionGrammar* grammarNode; + definitions::ParsingDefinitionGrammar* stateNode; + StatePosition statePosition; + WString stateName; + WString stateExpression; + + State(); + ~State(); + }; + + class RuleInfo : public Object + { + public: + State* rootRuleStartState; + State* rootRuleEndState; + State* startState; + collections::List endStates; + int stateNameCount; + + RuleInfo(); + ~RuleInfo(); + }; + + class Automaton : public Object + { + typedef collections::List RuleDefList; + typedef collections::Dictionary> RuleInfoMap; + public: + ParsingSymbolManager* symbolManager; + collections::List> transitions; + collections::List> states; + collections::List> ruleInfos; + + RuleDefList orderedRulesDefs; + RuleInfoMap ruleDefToInfoMap; + + Automaton(ParsingSymbolManager* _symbolManager); + ~Automaton(); + + void AddRuleInfo(definitions::ParsingDefinitionRuleDefinition* rule, Ptr ruleInfo); + + State* RuleStartState(definitions::ParsingDefinitionRuleDefinition* ownerRule); + State* RootRuleStartState(definitions::ParsingDefinitionRuleDefinition* ownerRule); + State* RootRuleEndState(definitions::ParsingDefinitionRuleDefinition* ownerRule); + State* StartState(definitions::ParsingDefinitionRuleDefinition* ownerRule, definitions::ParsingDefinitionGrammar* grammarNode, definitions::ParsingDefinitionGrammar* stateNode); + State* EndState(definitions::ParsingDefinitionRuleDefinition* ownerRule, definitions::ParsingDefinitionGrammar* grammarNode, definitions::ParsingDefinitionGrammar* stateNode); + State* CopyState(State* oldState); + + Transition* CreateTransition(State* start, State* end); + Transition* TokenBegin(State* start, State* end); + Transition* TokenFinish(State* start, State* end); + Transition* NormalReduce(State* start, State* end); + Transition* LeftRecursiveReduce(State* start, State* end); + Transition* Epsilon(State* start, State* end); + Transition* Symbol(State* start, State* end, ParsingSymbol* transitionSymbol); + Transition* CopyTransition(State* start, State* end, Transition* oldTransition); + + void DeleteTransition(Transition* transition); + void DeleteState(State* state); + }; + +/*********************************************************************** +Helper: Closuer Searching +***********************************************************************/ + + struct ClosureItem + { + enum SearchResult + { + Continue, + Hit, + Blocked, + }; + + State* state; // target state of one path of a closure + Ptr> transitions; // path + bool cycle; // true: invalid closure because there are cycles, and in the middle of the path there will be a transition that targets to the state field. + + ClosureItem() + :state(0) + ,cycle(false) + { + } + + ClosureItem(State* _state, Ptr> _transitions, bool _cycle) + :state(_state) + ,transitions(_transitions) + ,cycle(_cycle) + { + } + }; + + extern void SearchClosure(ClosureItem::SearchResult(*closurePredicate)(Transition*), State* startState, collections::List& closure); + extern void RemoveEpsilonTransitions(collections::Dictionary& oldNewStateMap, collections::List& scanningStates, Ptr automaton); + +/*********************************************************************** +Helper: State Merging +***********************************************************************/ + + extern void DeleteUnnecessaryStates(Ptr automaton, Ptr ruleInfo, collections::List& newStates); + extern void MergeStates(Ptr automaton, Ptr ruleInfo, collections::List& newStates); + +/*********************************************************************** +Helper: Automaton Building +***********************************************************************/ + + extern Ptr CreateEpsilonPDA(Ptr definition, ParsingSymbolManager* manager); + extern Ptr CreateNondeterministicPDAFromEpsilonPDA(Ptr epsilonPDA); + extern Ptr CreateJointPDAFromNondeterministicPDA(Ptr nondeterministicPDA); + extern void CompactJointPDA(Ptr jointPDA); + extern void MarkLeftRecursiveInJointPDA(Ptr jointPDA, collections::List>& errors); + +/*********************************************************************** +Helper: Parsing Table Generating +***********************************************************************/ + + extern WString GetTypeNameForCreateInstruction(ParsingSymbol* type); + extern Ptr GenerateTableFromPDA(Ptr definition, ParsingSymbolManager* manager, Ptr jointPDA, bool enableAmbiguity, collections::List>& errors); + extern Ptr GenerateTable(Ptr definition, bool enableAmbiguity, collections::List>& errors); + extern void Log(Ptr automaton, stream::TextWriter& writer); + } + } +} + +#endif + +/*********************************************************************** +.\JSON\PARSINGJSON_AST.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parser::ParsingJson.parser.txt + +This file is generated by: Vczh Parser Generator +***********************************************************************/ + +#ifndef VCZH_PARSING_JSON_PARSINGJSON_PARSER_AST +#define VCZH_PARSING_JSON_PARSINGJSON_PARSER_AST + + +namespace vl +{ + namespace parsing + { + namespace json + { + enum class JsonParserTokenIndex + { + TRUEVALUE = 0, + FALSEVALUE = 1, + NULLVALUE = 2, + OBJOPEN = 3, + OBJCLOSE = 4, + ARROPEN = 5, + ARRCLOSE = 6, + COMMA = 7, + COLON = 8, + NUMBER = 9, + STRING = 10, + SPACE = 11, + }; + class JsonNode; + class JsonLiteral; + class JsonString; + class JsonNumber; + class JsonArray; + class JsonObjectField; + class JsonObject; + + class JsonNode abstract : public vl::parsing::ParsingTreeCustomBase, vl::reflection::Description + { + public: + class IVisitor : public vl::reflection::IDescriptable, vl::reflection::Description + { + public: + virtual void Visit(JsonLiteral* node)=0; + virtual void Visit(JsonString* node)=0; + virtual void Visit(JsonNumber* node)=0; + virtual void Visit(JsonArray* node)=0; + virtual void Visit(JsonObjectField* node)=0; + virtual void Visit(JsonObject* node)=0; + }; + + virtual void Accept(JsonNode::IVisitor* visitor)=0; + + }; + + class JsonLiteral : public JsonNode, vl::reflection::Description + { + public: + enum class JsonValue + { + True, + False, + Null, + }; + + JsonValue value; + + void Accept(JsonNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class JsonString : public JsonNode, vl::reflection::Description + { + public: + vl::parsing::ParsingToken content; + + void Accept(JsonNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class JsonNumber : public JsonNode, vl::reflection::Description + { + public: + vl::parsing::ParsingToken content; + + void Accept(JsonNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class JsonArray : public JsonNode, vl::reflection::Description + { + public: + vl::collections::List> items; + + void Accept(JsonNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class JsonObjectField : public JsonNode, vl::reflection::Description + { + public: + vl::parsing::ParsingToken name; + vl::Ptr value; + + void Accept(JsonNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class JsonObject : public JsonNode, vl::reflection::Description + { + public: + vl::collections::List> fields; + + void Accept(JsonNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + } + } +} +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + DECL_TYPE_INFO(vl::parsing::json::JsonNode) + DECL_TYPE_INFO(vl::parsing::json::JsonLiteral) + DECL_TYPE_INFO(vl::parsing::json::JsonLiteral::JsonValue) + DECL_TYPE_INFO(vl::parsing::json::JsonString) + DECL_TYPE_INFO(vl::parsing::json::JsonNumber) + DECL_TYPE_INFO(vl::parsing::json::JsonArray) + DECL_TYPE_INFO(vl::parsing::json::JsonObjectField) + DECL_TYPE_INFO(vl::parsing::json::JsonObject) + DECL_TYPE_INFO(vl::parsing::json::JsonNode::IVisitor) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::parsing::json::JsonNode::IVisitor) + void Visit(vl::parsing::json::JsonLiteral* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::json::JsonString* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::json::JsonNumber* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::json::JsonArray* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::json::JsonObjectField* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::json::JsonObject* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + END_INTERFACE_PROXY(vl::parsing::json::JsonNode::IVisitor) + +#endif + extern bool JsonLoadTypes(); + } + } +} +#endif + +/*********************************************************************** +.\JSON\PARSINGJSON_PARSER.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parser::ParsingJson.parser.txt + +This file is generated by: Vczh Parser Generator +***********************************************************************/ + +#ifndef VCZH_PARSING_JSON_PARSINGJSON_PARSER_PARSER +#define VCZH_PARSING_JSON_PARSINGJSON_PARSER_PARSER + + +namespace vl +{ + namespace parsing + { + namespace json + { + extern vl::WString JsonGetParserTextBuffer(); + extern vl::Ptr JsonConvertParsingTreeNode(vl::Ptr node, const vl::collections::List& tokens); + extern vl::Ptr JsonLoadTable(); + + extern vl::Ptr JsonParseAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); + extern vl::Ptr JsonParseAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); + extern vl::Ptr JsonParse(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); + extern vl::Ptr JsonParse(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); + } + } +} +#endif + +/*********************************************************************** +.\XML\PARSINGXML_AST.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parser::ParsingXml.parser.txt + +This file is generated by: Vczh Parser Generator +***********************************************************************/ + +#ifndef VCZH_PARSING_XML_PARSINGXML_PARSER_AST +#define VCZH_PARSING_XML_PARSINGXML_PARSER_AST + + +namespace vl +{ + namespace parsing + { + namespace xml + { + enum class XmlParserTokenIndex + { + INSTRUCTION_OPEN = 0, + INSTRUCTION_CLOSE = 1, + COMPLEX_ELEMENT_OPEN = 2, + SINGLE_ELEMENT_CLOSE = 3, + ELEMENT_OPEN = 4, + ELEMENT_CLOSE = 5, + EQUAL = 6, + NAME = 7, + ATTVALUE = 8, + COMMENT = 9, + CDATA = 10, + TEXT = 11, + SPACE = 12, + }; + class XmlNode; + class XmlText; + class XmlCData; + class XmlAttribute; + class XmlComment; + class XmlElement; + class XmlInstruction; + class XmlDocument; + + class XmlNode abstract : public vl::parsing::ParsingTreeCustomBase, vl::reflection::Description + { + public: + class IVisitor : public vl::reflection::IDescriptable, vl::reflection::Description + { + public: + virtual void Visit(XmlText* node)=0; + virtual void Visit(XmlCData* node)=0; + virtual void Visit(XmlAttribute* node)=0; + virtual void Visit(XmlComment* node)=0; + virtual void Visit(XmlElement* node)=0; + virtual void Visit(XmlInstruction* node)=0; + virtual void Visit(XmlDocument* node)=0; + }; + + virtual void Accept(XmlNode::IVisitor* visitor)=0; + + }; + + class XmlText : public XmlNode, vl::reflection::Description + { + public: + vl::parsing::ParsingToken content; + + void Accept(XmlNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class XmlCData : public XmlNode, vl::reflection::Description + { + public: + vl::parsing::ParsingToken content; + + void Accept(XmlNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class XmlAttribute : public XmlNode, vl::reflection::Description + { + public: + vl::parsing::ParsingToken name; + vl::parsing::ParsingToken value; + + void Accept(XmlNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class XmlComment : public XmlNode, vl::reflection::Description + { + public: + vl::parsing::ParsingToken content; + + void Accept(XmlNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class XmlElement : public XmlNode, vl::reflection::Description + { + public: + vl::parsing::ParsingToken name; + vl::parsing::ParsingToken closingName; + vl::collections::List> attributes; + vl::collections::List> subNodes; + + void Accept(XmlNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class XmlInstruction : public XmlNode, vl::reflection::Description + { + public: + vl::parsing::ParsingToken name; + vl::collections::List> attributes; + + void Accept(XmlNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + class XmlDocument : public XmlNode, vl::reflection::Description + { + public: + vl::collections::List> prologs; + vl::Ptr rootElement; + + void Accept(XmlNode::IVisitor* visitor)override; + + static vl::Ptr Convert(vl::Ptr node, const vl::collections::List& tokens); + }; + + } + } +} +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + DECL_TYPE_INFO(vl::parsing::xml::XmlNode) + DECL_TYPE_INFO(vl::parsing::xml::XmlText) + DECL_TYPE_INFO(vl::parsing::xml::XmlCData) + DECL_TYPE_INFO(vl::parsing::xml::XmlAttribute) + DECL_TYPE_INFO(vl::parsing::xml::XmlComment) + DECL_TYPE_INFO(vl::parsing::xml::XmlElement) + DECL_TYPE_INFO(vl::parsing::xml::XmlInstruction) + DECL_TYPE_INFO(vl::parsing::xml::XmlDocument) + DECL_TYPE_INFO(vl::parsing::xml::XmlNode::IVisitor) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::parsing::xml::XmlNode::IVisitor) + void Visit(vl::parsing::xml::XmlText* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::xml::XmlCData* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::xml::XmlAttribute* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::xml::XmlComment* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::xml::XmlElement* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::xml::XmlInstruction* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::parsing::xml::XmlDocument* node)override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + END_INTERFACE_PROXY(vl::parsing::xml::XmlNode::IVisitor) + +#endif + extern bool XmlLoadTypes(); + } + } +} +#endif + +/*********************************************************************** +.\XML\PARSINGXML_PARSER.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parser::ParsingXml.parser.txt + +This file is generated by: Vczh Parser Generator +***********************************************************************/ + +#ifndef VCZH_PARSING_XML_PARSINGXML_PARSER_PARSER +#define VCZH_PARSING_XML_PARSINGXML_PARSER_PARSER + + +namespace vl +{ + namespace parsing + { + namespace xml + { + extern vl::WString XmlGetParserTextBuffer(); + extern vl::Ptr XmlConvertParsingTreeNode(vl::Ptr node, const vl::collections::List& tokens); + extern vl::Ptr XmlLoadTable(); + + extern vl::Ptr XmlParseDocumentAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); + extern vl::Ptr XmlParseDocumentAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); + extern vl::Ptr XmlParseDocument(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); + extern vl::Ptr XmlParseDocument(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); + + extern vl::Ptr XmlParseElementAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); + extern vl::Ptr XmlParseElementAsParsingTreeNode(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); + extern vl::Ptr XmlParseElement(const vl::WString& input, vl::Ptr table, vl::collections::List>& errors, vl::vint codeIndex = -1); + extern vl::Ptr XmlParseElement(const vl::WString& input, vl::Ptr table, vl::vint codeIndex = -1); + } + } +} +#endif + +/*********************************************************************** +.\JSON\PARSINGJSON.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parser::ParsingJson_Parser + +***********************************************************************/ + +#ifndef VCZH_PARSING_JSON_PARSINGJSON +#define VCZH_PARSING_JSON_PARSINGJSON + + +namespace vl +{ + namespace parsing + { + namespace json + { + extern void JsonEscapeString(const WString& text, stream::TextWriter& writer); + extern void JsonUnescapeString(const WString& text, stream::TextWriter& writer); + extern void JsonPrint(Ptr node, stream::TextWriter& writer); + extern WString JsonToString(Ptr node); + } + } +} + +#endif + +/*********************************************************************** +.\XML\PARSINGXML.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Parser::ParsingXml + +***********************************************************************/ + +#ifndef VCZH_PARSING_XML_PARSINGXML +#define VCZH_PARSING_XML_PARSINGXML + + +namespace vl +{ + namespace parsing + { + namespace xml + { + extern WString XmlEscapeValue(const WString& value); + extern WString XmlUnescapeValue(const WString& value); + extern WString XmlEscapeCData(const WString& value); + extern WString XmlUnescapeCData(const WString& value); + extern WString XmlEscapeComment(const WString& value); + extern WString XmlUnescapeComment(const WString& value); + extern void XmlPrint(Ptr node, stream::TextWriter& writer); + extern void XmlPrintContent(Ptr element, stream::TextWriter& writer); + extern WString XmlToString(Ptr node); + + extern Ptr XmlGetAttribute(Ptr element, const WString& name); + extern Ptr XmlGetElement(Ptr element, const WString& name); + extern collections::LazyList> XmlGetElements(Ptr element); + extern collections::LazyList> XmlGetElements(Ptr element, const WString& name); + extern WString XmlGetValue(Ptr element); + + extern Ptr XmlGetAttribute(XmlElement* element, const WString& name); + extern Ptr XmlGetElement(XmlElement* element, const WString& name); + extern collections::LazyList> XmlGetElements(XmlElement* element); + extern collections::LazyList> XmlGetElements(XmlElement* element, const WString& name); + extern WString XmlGetValue(XmlElement* element); + + class XmlElementWriter : public Object + { + protected: + Ptr element; + const XmlElementWriter* previousWriter; + + public: + XmlElementWriter(Ptr _element, const XmlElementWriter* _previousWriter=0); + ~XmlElementWriter(); + + const XmlElementWriter& Attribute(const WString& name, const WString& value)const; + XmlElementWriter Element(const WString& name)const; + const XmlElementWriter& End()const; + const XmlElementWriter& Text(const WString& value)const; + const XmlElementWriter& CData(const WString& value)const; + const XmlElementWriter& Comment(const WString& value)const; + }; + } + } +} + +#endif diff --git a/Import/VlppReflection.cpp b/Import/VlppReflection.cpp new file mode 100644 index 00000000..8fec73e7 --- /dev/null +++ b/Import/VlppReflection.cpp @@ -0,0 +1,3718 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "VlppReflection.h" + +/*********************************************************************** +.\GUITYPEDESCRIPTOR.CPP +***********************************************************************/ + +namespace vl +{ + using namespace collections; + + namespace reflection + { + +/*********************************************************************** +DescriptableObject +***********************************************************************/ + +#ifndef VCZH_DEBUG_NO_REFLECTION + + bool DescriptableObject::IsAggregated() + { + return aggregationInfo != nullptr; + } + + vint DescriptableObject::GetAggregationSize() + { + CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::GetAggregationSize()#This function should not be called on non-aggregated objects."); + return aggregationSize; + } + + DescriptableObject* DescriptableObject::GetAggregationRoot() + { + CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::GetAggregationRoot()#This function should not be called on non-aggregated objects."); + return aggregationInfo[aggregationSize]; + } + + void DescriptableObject::SetAggregationRoot(DescriptableObject* value) + { + CHECK_ERROR(value != nullptr, L"vl::reflection::DescriptableObject::SetAggregationRoot(Descriptable*)#The root object should not null."); + CHECK_ERROR(value->IsAggregated() && value->GetAggregationRoot() == nullptr, L"vl::reflection::DescriptableObject::SetAggregationRoot(Descriptable*)#The root object should not have an aggregation root."); + if (!IsAggregated()) + { + InitializeAggregation(0); + } + aggregationInfo[aggregationSize] = value; + aggregationInfo[aggregationSize + 1] = value; + for (vint i = 0; i < aggregationSize; i++) + { + if (aggregationInfo[i]) + { + aggregationInfo[i]->SetAggregationRoot(value); + } + } + } + + DescriptableObject* DescriptableObject::GetAggregationParent(vint index) + { + CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::GetAggregationParent(vint)#This function should not be called on non-aggregated objects."); + CHECK_ERROR(0 <= index && index < aggregationSize, L"vl::reflection::DescriptableObject::GetAggregationParent(vint)#Index out of range."); + return aggregationInfo[index]; + } + + void DescriptableObject::SetAggregationParent(vint index, DescriptableObject* value) + { + CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#This function should not be called on non-aggregated objects."); + CHECK_ERROR(0 <= index && index < aggregationSize, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Index out of range."); + CHECK_ERROR(aggregationInfo[index] == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#This index has been used."); + CHECK_ERROR(value != nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent should not be null."); + CHECK_ERROR(!value->IsAggregated() || value->GetAggregationRoot() == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent already has a aggregation root."); + CHECK_ERROR(value->referenceCounter == 0, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, DescriptableObject*)#Parent should not be contained in any smart pointer."); + value->SetAggregationRoot(this); + aggregationInfo[index] = value; + } + + void DescriptableObject::SetAggregationParent(vint index, Ptr& value) + { + CHECK_ERROR(IsAggregated(), L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#This function should not be called on non-aggregated objects."); + CHECK_ERROR(0 <= index && index < aggregationSize, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#Index out of range."); + CHECK_ERROR(aggregationInfo[index] == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#This index has been used."); + CHECK_ERROR(value, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#Parent should not be null"); + CHECK_ERROR(!value->IsAggregated() || value->GetAggregationRoot() == nullptr, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#Parent already has a aggregation root."); + CHECK_ERROR(value->referenceCounter == 1, L"vl::reflection::DescriptableObject::SetAggregationParent(vint, Ptr&)#Parent should not be contained in any other smart pointer."); + value->SetAggregationRoot(this); + + auto parent = value.Detach(); + aggregationInfo[index] = parent; + } + + void DescriptableObject::InitializeAggregation(vint size) + { + CHECK_ERROR(!IsAggregated(), L"vl::reflection::DescriptableObject::InitializeAggregation(vint)#This function should not be called on aggregated objects."); + CHECK_ERROR(size >= 0, L"vl::reflection::DescriptableObject::InitializeAggregation(vint)#Size shout not be negative."); + aggregationSize = size; + aggregationInfo = new DescriptableObject*[size + 2]; + memset(aggregationInfo, 0, sizeof(*aggregationInfo) * (size + 2)); + } +#endif + + void DescriptableObject::FinalizeAggregation() + { +#ifndef VCZH_DEBUG_NO_REFLECTION + if (IsAggregated()) + { + if (auto root = GetAggregationRoot()) + { + if (aggregationInfo[aggregationSize + 1] == nullptr) + { + return; + } + else + { + aggregationInfo[aggregationSize + 1] = nullptr; + } + + if (!root->destructing) + { + destructing = true; + delete root; + } + } + } +#endif + } + + DescriptableObject::DescriptableObject() + :referenceCounter(0) + , sharedPtrDestructorProc(0) +#ifndef VCZH_DEBUG_NO_REFLECTION + , objectSize(0) + , typeDescriptor(0) + , destructing(false) + , aggregationInfo(nullptr) + , aggregationSize(-1) +#endif + { + } + +#if defined(VCZH_GCC) && defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wexceptions" +#endif + DescriptableObject::~DescriptableObject() + { +#ifndef VCZH_DEBUG_NO_REFLECTION + destructing = true; + if (IsAggregated()) + { + if (auto root = GetAggregationRoot()) + { + if (aggregationInfo[aggregationSize + 1] != nullptr) + { +#pragma warning (push) +#pragma warning (disable: 4297) + // Your class should call FinalizeAggregation in the destructor if it inherits from AggregatableDescription. + CHECK_ERROR(!IsAggregated(), L"vl::reflection::DescriptableObject::~DescriptableObject0()#FinalizeAggregation function should be called."); +#pragma warning (pop) + } + } + for (vint i = 0; i < aggregationSize; i++) + { + if (auto parent = GetAggregationParent(i)) + { + if (!parent->destructing) + { + delete parent; + } + } + } + delete[] aggregationInfo; + } +#endif + } +#if defined(VCZH_GCC) && defined(__clang__) +#pragma clang diagnostic pop +#endif + +#ifndef VCZH_DEBUG_NO_REFLECTION + + description::ITypeDescriptor* DescriptableObject::GetTypeDescriptor() + { + return typeDescriptor?*typeDescriptor:0; + } + +#endif + + Ptr DescriptableObject::GetInternalProperty(const WString& name) + { + if(!internalProperties) return 0; + vint index=internalProperties->Keys().IndexOf(name); + if(index==-1) return 0; + return internalProperties->Values().Get(index); + } + + void DescriptableObject::SetInternalProperty(const WString& name, Ptr value) + { + if(internalProperties) + { + vint index=internalProperties->Keys().IndexOf(name); + if(index==-1) + { + if(value) + { + internalProperties->Add(name, value); + } + } + else + { + if(value) + { + internalProperties->Set(name, value); + } + else + { + internalProperties->Remove(name); + if(internalProperties->Count()==0) + { + internalProperties=0; + } + } + } + } + else + { + if(value) + { + internalProperties=new InternalPropertyMap; + internalProperties->Add(name, value); + } + } + } + + bool DescriptableObject::Dispose(bool forceDisposing) + { +#ifndef VCZH_DEBUG_NO_REFLECTION + if (IsAggregated()) + { + if (auto root = GetAggregationRoot()) + { + return root->Dispose(forceDisposing); + } + } +#endif + + if (referenceCounter > 0 && forceDisposing) + { + throw description::ValueNotDisposableException(); + } + + if (sharedPtrDestructorProc) + { + return sharedPtrDestructorProc(this, forceDisposing); + } + else + { + delete this; + return true; + } + } + +#ifndef VCZH_DEBUG_NO_REFLECTION + + DescriptableObject* DescriptableObject::SafeGetAggregationRoot() + { + if (IsAggregated()) + { + if (auto root = GetAggregationRoot()) + { + return root; + } + } + return this; + } + +#endif + +/*********************************************************************** +description::Value +***********************************************************************/ + + namespace description + { + Value::Value(DescriptableObject* value) + :valueType(value ? RawPtr :Null) + ,rawPtr(nullptr) +#ifndef VCZH_DEBUG_NO_REFLECTION + ,typeDescriptor(0) +#endif + { +#ifndef VCZH_DEBUG_NO_REFLECTION + if (value) + { + rawPtr = value->SafeGetAggregationRoot(); + } +#else + rawPtr = value; +#endif + } + + Value::Value(Ptr value) + :valueType(value ? SharedPtr : Null) + ,rawPtr(nullptr) +#ifndef VCZH_DEBUG_NO_REFLECTION + ,typeDescriptor(0) +#endif + { +#ifndef VCZH_DEBUG_NO_REFLECTION + if (value) + { + rawPtr = value->SafeGetAggregationRoot(); + sharedPtr = rawPtr; + } +#else + rawPtr = value.Obj(); + sharedPtr = value; +#endif + } + + Value::Value(Ptr value, ITypeDescriptor* associatedTypeDescriptor) + :valueType(value ? BoxedValue : Null) + , rawPtr(nullptr) + , boxedValue(value) +#ifndef VCZH_DEBUG_NO_REFLECTION + , typeDescriptor(associatedTypeDescriptor) +#endif + { + } + + vint Value::Compare(const Value& a, const Value& b)const + { + switch (a.GetValueType()) + { + case Value::RawPtr: + case Value::SharedPtr: + switch (b.GetValueType()) + { + case Value::RawPtr: + case Value::SharedPtr: + { + auto pa = a.GetRawPtr(); + auto pb = b.GetRawPtr(); + if (pa < pb) return -1; + if (pa > pb) return 1; + return 0; + } + case Value::BoxedValue: + return -1; + default: + return 1; + } + case Value::BoxedValue: + switch (b.GetValueType()) + { + case Value::RawPtr: + case Value::SharedPtr: + return 1; + case Value::BoxedValue: + { +#ifndef VCZH_DEBUG_NO_REFLECTION + auto aSt = a.GetTypeDescriptor()->GetSerializableType(); + auto bSt = b.GetTypeDescriptor()->GetSerializableType(); + if (aSt) + { + if (bSt) + { + auto aSt = a.GetTypeDescriptor()->GetSerializableType(); + auto bSt = b.GetTypeDescriptor()->GetSerializableType(); + + WString aText; + WString bText; + aSt->Serialize(a, aText); + bSt->Serialize(b, bText); + if (aText < bText) return -1; + if (aText > bText) return 1; + return 0; + } + else + { + return 1; + } + } + else + { + if (bSt) + { + return -1; + } + else + { + if (a.GetTypeDescriptor() != b.GetTypeDescriptor()) + { + auto aText = a.GetTypeDescriptor()->GetTypeName(); + auto bText = b.GetTypeDescriptor()->GetTypeName(); + if (aText < bText) return -1; + if (aText > bText) return 1; + return 0; + } + + switch (a.GetTypeDescriptor()->GetTypeDescriptorFlags()) + { + case TypeDescriptorFlags::Struct: + { + auto td = a.GetTypeDescriptor(); + vint count = td->GetPropertyCount(); + for (vint i = 0; i < count; i++) + { + auto prop = td->GetProperty(i); + auto ap = prop->GetValue(a); + auto bp = prop->GetValue(b); + vint result = Compare(ap, bp); + if (result != 0) + { + return result; + } + } + } + return 0; + case TypeDescriptorFlags::FlagEnum: + case TypeDescriptorFlags::NormalEnum: + { + auto ai = a.GetTypeDescriptor()->GetEnumType()->FromEnum(a); + auto bi = a.GetTypeDescriptor()->GetEnumType()->FromEnum(b); + if (ai < bi) return -1; + if (ai > bi) return 1; + return 0; + } + default: + return 0; + } + } + } +#else + auto pa = a.GetBoxedValue(); + auto pb = b.GetBoxedValue(); + switch (pa->ComparePrimitive(pb)) + { + case IBoxedValue::Smaller: return -1; + case IBoxedValue::Greater: return 1; + case IBoxedValue::Equal: return 0; + default:; + } + if (pa.Obj() < pb.Obj()) return -1; + if (pa.Obj() > pb.Obj()) return 1; + return 0; +#endif + } + default: + return 1; + } + default: + switch (b.GetValueType()) + { + case Value::RawPtr: + case Value::SharedPtr: + case Value::BoxedValue: + return -1; + default: + return 0; + } + } + } + + Value::Value() + :valueType(Null) + ,rawPtr(0) +#ifndef VCZH_DEBUG_NO_REFLECTION + ,typeDescriptor(0) +#endif + { + } + + Value::Value(const Value& value) + :valueType(value.valueType) + ,rawPtr(value.rawPtr) + ,sharedPtr(value.sharedPtr) + ,boxedValue(value.boxedValue ? value.boxedValue->Copy() : nullptr) +#ifndef VCZH_DEBUG_NO_REFLECTION + ,typeDescriptor(value.typeDescriptor) +#endif + { + } + + Value& Value::operator=(const Value& value) + { + valueType = value.valueType; + rawPtr = value.rawPtr; + sharedPtr = value.sharedPtr; + boxedValue = value.boxedValue ? value.boxedValue->Copy() : nullptr; +#ifndef VCZH_DEBUG_NO_REFLECTION + typeDescriptor = value.typeDescriptor; +#endif + return *this; + } + + Value::ValueType Value::GetValueType()const + { + return valueType; + } + + DescriptableObject* Value::GetRawPtr()const + { + return rawPtr; + } + + Ptr Value::GetSharedPtr()const + { + return sharedPtr; + } + + Ptr Value::GetBoxedValue()const + { + return boxedValue; + } + + bool Value::IsNull()const + { + return valueType == Null; + } + +#ifndef VCZH_DEBUG_NO_REFLECTION + + ITypeDescriptor* Value::GetTypeDescriptor()const + { + switch(valueType) + { + case RawPtr: + case SharedPtr: + return rawPtr?rawPtr->GetTypeDescriptor():0; + case BoxedValue: + return typeDescriptor; + default:; + } + return 0; + } + + WString Value::GetTypeFriendlyName()const + { + switch(valueType) + { + case RawPtr: + return GetTypeDescriptor()->GetTypeName()+L"*"; + case SharedPtr: + return L"Ptr<"+GetTypeDescriptor()->GetTypeName()+L">"; + case BoxedValue: + return GetTypeDescriptor()->GetTypeName(); + default: + return L"null"; + } + } + + bool Value::CanConvertTo(ITypeDescriptor* targetType, ValueType targetValueType)const + { + if(targetType==GetGlobalTypeManager()->GetRootType()) + { + return true; + } + switch(valueType) + { + case Null: + return targetValueType != BoxedValue; + case RawPtr: + case SharedPtr: + if (targetValueType != RawPtr && targetValueType != SharedPtr) return false; + break; + case BoxedValue: + return targetValueType == BoxedValue; + } + return GetTypeDescriptor()->CanConvertTo(targetType); + } + + bool Value::CanConvertTo(ITypeInfo* targetType)const + { + if(valueType==Null && targetType->GetDecorator()==ITypeInfo::Nullable) + { + return true; + } + ValueType targetValueType=ValueType::Null; + { + ITypeInfo* currentType=targetType; + while(currentType) + { + switch(targetType->GetDecorator()) + { + case ITypeInfo::RawPtr: + targetValueType=RawPtr; + currentType=0; + break; + case ITypeInfo::SharedPtr: + targetValueType=SharedPtr; + currentType=0; + break; + case ITypeInfo::TypeDescriptor: + case ITypeInfo::Nullable: + targetValueType=BoxedValue; + currentType=0; + break; + default: + currentType=currentType->GetElementType(); + } + } + } + return CanConvertTo(targetType->GetTypeDescriptor(), targetValueType); + } + +#endif + + Value Value::From(DescriptableObject* value) + { + return Value(value); + } + + Value Value::From(Ptr value) + { + return Value(value); + } + + Value Value::From(Ptr value, ITypeDescriptor* type) + { + return Value(value, type); + } + +#ifndef VCZH_DEBUG_NO_REFLECTION + + IMethodInfo* Value::SelectMethod(IMethodGroupInfo* methodGroup, collections::Array& arguments) + { + if(methodGroup->GetMethodCount()==1) + { + return methodGroup->GetMethod(0); + } + + List methods; + for(vint i=0;iGetMethodCount();i++) + { + IMethodInfo* method=methodGroup->GetMethod(i); + if(method->GetParameterCount()==arguments.Count()) + { + methods.Add(method); + } + } + + if(methods.Count()==0) + { + throw ArgumentCountMismtatchException(methodGroup); + } + else if(methods.Count()==1) + { + return methods[0]; + } + else + { + for(vint i=0;iCheckArguments(arguments); + return method; + } + catch(const TypeDescriptorException&) + { + } + } + return methods[0]; + } + } + + Value Value::Create(ITypeDescriptor* type) + { + Array arguments; + return Create(type, arguments); + } + + Value Value::Create(ITypeDescriptor* type, collections::Array& arguments) + { + IMethodGroupInfo* methodGroup=type->GetConstructorGroup(); + if(!methodGroup) throw ConstructorNotExistsException(type); + + IMethodInfo* method=SelectMethod(methodGroup, arguments); + return method->Invoke(Value(), arguments); + } + + Value Value::Create(const WString& typeName) + { + Array arguments; + return Create(typeName, arguments); + } + + Value Value::Create(const WString& typeName, collections::Array& arguments) + { + ITypeDescriptor* type = vl::reflection::description::GetTypeDescriptor(typeName); + if(!type) throw TypeNotExistsException(typeName); + return Create(type, arguments); + } + + Value Value::InvokeStatic(const WString& typeName, const WString& name) + { + Array arguments; + return InvokeStatic(typeName, name, arguments); + } + + Value Value::InvokeStatic(const WString& typeName, const WString& name, collections::Array& arguments) + { + ITypeDescriptor* type=vl::reflection::description::GetTypeDescriptor(typeName); + if(!type) throw TypeNotExistsException(typeName); + + IMethodGroupInfo* methodGroup=type->GetMethodGroupByName(name, true); + if(!methodGroup) throw MemberNotExistsException(name, type); + + IMethodInfo* method=SelectMethod(methodGroup, arguments); + return method->Invoke(Value(), arguments); + } + + Value Value::GetProperty(const WString& name)const + { + ITypeDescriptor* type=GetTypeDescriptor(); + if(!type) throw ArgumentNullException(L"thisObject", name); + + IPropertyInfo* prop=type->GetPropertyByName(name, true); + if(!prop) throw MemberNotExistsException(name, type); + + return prop->GetValue(*this); + } + + void Value::SetProperty(const WString& name, const Value& newValue) + { + ITypeDescriptor* type=GetTypeDescriptor(); + if(!type) throw ArgumentNullException(L"thisObject", name); + + IPropertyInfo* prop=type->GetPropertyByName(name, true); + if(!prop) throw MemberNotExistsException(name, type); + + prop->SetValue(*this, newValue); + } + + Value Value::Invoke(const WString& name)const + { + Array arguments; + return Invoke(name, arguments); + } + + Value Value::Invoke(const WString& name, collections::Array& arguments)const + { + ITypeDescriptor* type=GetTypeDescriptor(); + if(!type) throw ArgumentNullException(L"thisObject", name); + + IMethodGroupInfo* methodGroup=type->GetMethodGroupByName(name, true); + if(!methodGroup) throw MemberNotExistsException(name, type); + + IMethodInfo* method=SelectMethod(methodGroup, arguments); + return method->Invoke(*this, arguments); + } + + Ptr Value::AttachEvent(const WString& name, const Value& function)const + { + ITypeDescriptor* type=GetTypeDescriptor(); + if(!type) throw ArgumentNullException(L"thisObject", name); + + IEventInfo* eventInfo=type->GetEventByName(name, true); + if(!eventInfo) throw MemberNotExistsException(name, type); + + Ptr proxy=UnboxValue>(function, Description::GetAssociatedTypeDescriptor(), L"function"); + return eventInfo->Attach(*this, proxy); + } + + bool Value::DetachEvent(const WString& name, Ptr handler)const + { + ITypeDescriptor* type = GetTypeDescriptor(); + if (!type) throw ArgumentNullException(L"thisObject", name); + + IEventInfo* eventInfo = type->GetEventByName(name, true); + if (!eventInfo) throw MemberNotExistsException(name, type); + + return eventInfo->Detach(*this, handler); + } + +#endif + + bool Value::DeleteRawPtr() + { + if(valueType!=RawPtr) return false; + if(!rawPtr) return false; + rawPtr->Dispose(true); + *this=Value(); + return true; + } + +#ifndef VCZH_DEBUG_NO_REFLECTION + +/*********************************************************************** +description::TypeManager +***********************************************************************/ + + class TypeManager : public Object, public ITypeManager + { + protected: + Dictionary> typeDescriptors; + List> typeLoaders; + ITypeDescriptor* rootType; + bool loaded; + + public: + TypeManager() + :rootType(0) + ,loaded(false) + { + } + + ~TypeManager() + { + Unload(); + } + + vint GetTypeDescriptorCount()override + { + return typeDescriptors.Values().Count(); + } + + ITypeDescriptor* GetTypeDescriptor(vint index)override + { + return typeDescriptors.Values().Get(index).Obj(); + } + + ITypeDescriptor* GetTypeDescriptor(const WString& name)override + { + vint index=typeDescriptors.Keys().IndexOf(name); + return index==-1?0:typeDescriptors.Values().Get(index).Obj(); + } + + bool SetTypeDescriptor(const WString& name, Ptr typeDescriptor)override + { + if(typeDescriptor && name!=typeDescriptor->GetTypeName()) + { + return false; + } + if(!typeDescriptors.Keys().Contains(name)) + { + if(typeDescriptor) + { + typeDescriptors.Add(name, typeDescriptor); + return true; + } + } + else + { + if(!typeDescriptor) + { + typeDescriptors.Remove(name); + return true; + } + } + return false; + } + + bool AddTypeLoader(Ptr typeLoader)override + { + vint index=typeLoaders.IndexOf(typeLoader.Obj()); + if(index==-1) + { + typeLoaders.Add(typeLoader); + if(loaded) + { + typeLoader->Load(this); + } + return true; + } + else + { + return false; + } + } + + bool RemoveTypeLoader(Ptr typeLoader)override + { + vint index=typeLoaders.IndexOf(typeLoader.Obj()); + if(index!=-1) + { + if(loaded) + { + typeLoader->Unload(this); + } + typeLoaders.RemoveAt(index); + return true; + } + else + { + return false; + } + } + + bool Load()override + { + if(!loaded) + { + loaded=true; + for(vint i=0;iLoad(this); + } + return true; + } + else + { + return false; + } + } + + bool Unload()override + { + if(loaded) + { + loaded=false; + rootType=0; + for(vint i=0;iUnload(this); + } + typeDescriptors.Clear(); + return true; + } + else + { + return false; + } + } + + bool Reload()override + { + Unload(); + Load(); + return true; + } + + bool IsLoaded()override + { + return loaded; + } + + ITypeDescriptor* GetRootType()override + { + if (!rootType) + { + rootType=description::GetTypeDescriptor(); + } + return rootType; + } + }; + +/*********************************************************************** +description::TypeManager helper functions +***********************************************************************/ + + ITypeManager* globalTypeManager=0; + bool initializedGlobalTypeManager=false; + + ITypeManager* GetGlobalTypeManager() + { + if(!initializedGlobalTypeManager) + { + initializedGlobalTypeManager=true; + globalTypeManager=new TypeManager; + } + return globalTypeManager; + } + + bool DestroyGlobalTypeManager() + { + if(initializedGlobalTypeManager && globalTypeManager) + { + delete globalTypeManager; + globalTypeManager=0; + return true; + } + else + { + return false; + } + } + + bool ResetGlobalTypeManager() + { + if(!DestroyGlobalTypeManager()) return false; + initializedGlobalTypeManager=false; + return true; + } + + ITypeDescriptor* GetTypeDescriptor(const WString& name) + { + if(globalTypeManager) + { + if(!globalTypeManager->IsLoaded()) + { + globalTypeManager->Load(); + } + return globalTypeManager->GetTypeDescriptor(name); + } + return 0; + } + +/*********************************************************************** +Cpp Helper Functions +***********************************************************************/ + + WString CppGetFullName(ITypeDescriptor* type) + { + if (auto cpp = type->GetCpp()) + { + if (cpp->GetFullName() == L"void" || cpp->GetFullName() == L"vl::reflection::description::VoidValue") + { + return L"void"; + } + else if (cpp->GetFullName() == L"float") + { + return L"float"; + } + else if (cpp->GetFullName() == L"double") + { + return L"double"; + } + else if (cpp->GetFullName() == L"bool") + { + return L"bool"; + } + else if (cpp->GetFullName() == L"wchar_t") + { + return L"wchar_t"; + } + else + { + return L"::" + cpp->GetFullName(); + } + } + else + { + return L"::vl::" + type->GetTypeName(); + } + } + + WString CppGetReferenceTemplate(IPropertyInfo* prop) + { + if (auto cpp = prop->GetCpp()) + { + return cpp->GetReferenceTemplate(); + } + else if ((prop->GetOwnerTypeDescriptor()->GetTypeDescriptorFlags() & TypeDescriptorFlags::ReferenceType) != TypeDescriptorFlags::Undefined) + { + return WString(L"$This->$Name", false); + } + else + { + return WString(L"$This.$Name", false); + } + } + + WString CppGetClosureTemplate(IMethodInfo* method) + { + if (auto cpp = method->GetCpp()) + { + return cpp->GetClosureTemplate(); + } + + if (method->IsStatic()) + { + return WString(L"::vl::Func<$Func>(&$Type::$Name)", false); + } + else + { + return WString(L"::vl::Func<$Func>($This, &$Type::$Name)", false); + } + } + + WString CppGetInvokeTemplate(IMethodInfo* method) + { + if (auto cpp = method->GetCpp()) + { + return cpp->GetInvokeTemplate(); + } + + if (method->GetOwnerMethodGroup() == method->GetOwnerTypeDescriptor()->GetConstructorGroup()) + { + return WString(L"new $Type($Arguments)", false); + } + else if (method->IsStatic()) + { + return WString(L"$Type::$Name($Arguments)", false); + } + else + { + return WString(L"$This->$Name($Arguments)", false); + } + } + + WString CppGetAttachTemplate(IEventInfo* ev) + { + auto cpp = ev->GetCpp(); + return cpp == nullptr ? WString(L"::vl::__vwsn::EventAttach($This->$Name, $Handler)", false) : cpp->GetAttachTemplate(); + } + + WString CppGetDetachTemplate(IEventInfo* ev) + { + auto cpp = ev->GetCpp(); + return cpp == nullptr ? WString(L"::vl::__vwsn::EventDetach($This->$Name, $Handler)", false) : cpp->GetDetachTemplate(); + } + + WString CppGetInvokeTemplate(IEventInfo* ev) + { + auto cpp = ev->GetCpp(); + return cpp == nullptr ? WString(L"::vl::__vwsn::EventInvoke($This->$Name)($Arguments)", false) : cpp->GetInvokeTemplate(); + } + + bool CppExists(ITypeDescriptor* type) + { + auto cpp = type->GetCpp(); + return cpp == nullptr || cpp->GetFullName() != L"*"; + } + + bool CppExists(IPropertyInfo* prop) + { + if (auto cpp = prop->GetCpp()) + { + return cpp->GetReferenceTemplate() != L"*"; + } + else if (auto method = prop->GetGetter()) + { + return CppExists(method); + } + else + { + return true; + } + } + + bool CppExists(IMethodInfo* method) + { + auto cpp = method->GetCpp(); + return cpp == nullptr || cpp->GetInvokeTemplate() != L"*"; + } + + bool CppExists(IEventInfo* ev) + { + auto cpp = ev->GetCpp(); + return cpp == nullptr || cpp->GetInvokeTemplate() != L"*"; + } + +#endif + } + } +} + + +/*********************************************************************** +.\GUITYPEDESCRIPTORBUILDER.CPP +***********************************************************************/ + +namespace vl +{ + using namespace collections; + + namespace reflection + { + namespace description + { + +#ifndef VCZH_DEBUG_NO_REFLECTION + +/*********************************************************************** +TypeDescriptorImplBase +***********************************************************************/ + + const WString& TypeDescriptorImplBase::GetFullName() + { + return cppFullTypeName; + } + + const TypeInfoContent* TypeDescriptorImplBase::GetTypeInfoContentInternal() + { + return typeInfoContent; + } + + TypeDescriptorImplBase::TypeDescriptorImplBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent) + :typeDescriptorFlags(_typeDescriptorFlags) + , typeInfoContent(_typeInfoContent) + , typeName(_typeInfoContent->typeName, false) + { + switch (typeInfoContent->cppName) + { + case TypeInfoContent::VlppType: + break; + case TypeInfoContent::CppType: + cppFullTypeName = WString(typeInfoContent->typeName, false); + break; + case TypeInfoContent::Renamed: + cppFullTypeName = WString(typeInfoContent->cppFullTypeName, false); + break; + } + } + + TypeDescriptorImplBase::~TypeDescriptorImplBase() + { + } + + ITypeDescriptor::ICpp* TypeDescriptorImplBase::GetCpp() + { + return typeInfoContent->cppName == TypeInfoContent::VlppType ? nullptr : this; + } + + TypeDescriptorFlags TypeDescriptorImplBase::GetTypeDescriptorFlags() + { + return typeDescriptorFlags; + } + + const WString& TypeDescriptorImplBase::GetTypeName() + { + return typeName; + } + +/*********************************************************************** +ValueTypeDescriptorBase +***********************************************************************/ + + void ValueTypeDescriptorBase::LoadInternal() + { + } + + void ValueTypeDescriptorBase::Load() + { + if (!loaded) + { + loaded = true; + LoadInternal(); + } + } + + ValueTypeDescriptorBase::ValueTypeDescriptorBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent) + :TypeDescriptorImplBase(_typeDescriptorFlags, _typeInfoContent) + , loaded(false) + { + } + + ValueTypeDescriptorBase::~ValueTypeDescriptorBase() + { + } + + bool ValueTypeDescriptorBase::IsAggregatable() + { + return false; + } + + IValueType* ValueTypeDescriptorBase::GetValueType() + { + Load(); + return valueType.Obj(); + } + + IEnumType* ValueTypeDescriptorBase::GetEnumType() + { + Load(); + return enumType.Obj(); + } + + ISerializableType* ValueTypeDescriptorBase::GetSerializableType() + { + Load(); + return serializableType.Obj(); + } + + vint ValueTypeDescriptorBase::GetBaseTypeDescriptorCount() + { + return 0; + } + + ITypeDescriptor* ValueTypeDescriptorBase::GetBaseTypeDescriptor(vint index) + { + return 0; + } + + bool ValueTypeDescriptorBase::CanConvertTo(ITypeDescriptor* targetType) + { + return this == targetType; + } + + vint ValueTypeDescriptorBase::GetPropertyCount() + { + return 0; + } + + IPropertyInfo* ValueTypeDescriptorBase::GetProperty(vint index) + { + return 0; + } + + bool ValueTypeDescriptorBase::IsPropertyExists(const WString& name, bool inheritable) + { + return false; + } + + IPropertyInfo* ValueTypeDescriptorBase::GetPropertyByName(const WString& name, bool inheritable) + { + return 0; + } + + vint ValueTypeDescriptorBase::GetEventCount() + { + return 0; + } + + IEventInfo* ValueTypeDescriptorBase::GetEvent(vint index) + { + return 0; + } + + bool ValueTypeDescriptorBase::IsEventExists(const WString& name, bool inheritable) + { + return false; + } + + IEventInfo* ValueTypeDescriptorBase::GetEventByName(const WString& name, bool inheritable) + { + return 0; + } + + vint ValueTypeDescriptorBase::GetMethodGroupCount() + { + return 0; + } + + IMethodGroupInfo* ValueTypeDescriptorBase::GetMethodGroup(vint index) + { + return 0; + } + + bool ValueTypeDescriptorBase::IsMethodGroupExists(const WString& name, bool inheritable) + { + return false; + } + + IMethodGroupInfo* ValueTypeDescriptorBase::GetMethodGroupByName(const WString& name, bool inheritable) + { + return 0; + } + + IMethodGroupInfo* ValueTypeDescriptorBase::GetConstructorGroup() + { + return 0; + } + +/*********************************************************************** +TypeDescriptorTypeInfo +***********************************************************************/ + + TypeDescriptorTypeInfo::TypeDescriptorTypeInfo(ITypeDescriptor* _typeDescriptor, TypeInfoHint _hint) + :typeDescriptor(_typeDescriptor) + , hint(_hint) + { + } + + TypeDescriptorTypeInfo::~TypeDescriptorTypeInfo() + { + } + + ITypeInfo::Decorator TypeDescriptorTypeInfo::GetDecorator() + { + return ITypeInfo::TypeDescriptor; + } + + TypeInfoHint TypeDescriptorTypeInfo::GetHint() + { + return hint; + } + + ITypeInfo* TypeDescriptorTypeInfo::GetElementType() + { + return nullptr; + } + + ITypeDescriptor* TypeDescriptorTypeInfo::GetTypeDescriptor() + { + return typeDescriptor; + } + + vint TypeDescriptorTypeInfo::GetGenericArgumentCount() + { + return 0; + } + + ITypeInfo* TypeDescriptorTypeInfo::GetGenericArgument(vint index) + { + return nullptr; + } + + WString TypeDescriptorTypeInfo::GetTypeFriendlyName() + { + return typeDescriptor->GetTypeName(); + } + +/*********************************************************************** +DecoratedTypeInfo +***********************************************************************/ + + DecoratedTypeInfo::DecoratedTypeInfo(Ptr _elementType) + :elementType(_elementType) + { + } + + DecoratedTypeInfo::~DecoratedTypeInfo() + { + } + + TypeInfoHint DecoratedTypeInfo::GetHint() + { + return elementType->GetHint(); + } + + ITypeInfo* DecoratedTypeInfo::GetElementType() + { + return elementType.Obj(); + } + + ITypeDescriptor* DecoratedTypeInfo::GetTypeDescriptor() + { + return elementType->GetTypeDescriptor(); + } + + vint DecoratedTypeInfo::GetGenericArgumentCount() + { + return 0; + } + + ITypeInfo* DecoratedTypeInfo::GetGenericArgument(vint index) + { + return nullptr; + } + +/*********************************************************************** +RawPtrTypeInfo +***********************************************************************/ + + RawPtrTypeInfo::RawPtrTypeInfo(Ptr _elementType) + :DecoratedTypeInfo(_elementType) + { + } + + RawPtrTypeInfo::~RawPtrTypeInfo() + { + } + + ITypeInfo::Decorator RawPtrTypeInfo::GetDecorator() + { + return ITypeInfo::RawPtr; + } + + WString RawPtrTypeInfo::GetTypeFriendlyName() + { + return elementType->GetTypeFriendlyName() + L"*"; + } + +/*********************************************************************** +SharedPtrTypeInfo +***********************************************************************/ + + SharedPtrTypeInfo::SharedPtrTypeInfo(Ptr _elementType) + :DecoratedTypeInfo(_elementType) + { + } + + SharedPtrTypeInfo::~SharedPtrTypeInfo() + { + } + + ITypeInfo::Decorator SharedPtrTypeInfo::GetDecorator() + { + return ITypeInfo::SharedPtr; + } + + WString SharedPtrTypeInfo::GetTypeFriendlyName() + { + return elementType->GetTypeFriendlyName() + L"^"; + } + +/*********************************************************************** +NullableTypeInfo +***********************************************************************/ + + NullableTypeInfo::NullableTypeInfo(Ptr _elementType) + :DecoratedTypeInfo(_elementType) + { + } + + NullableTypeInfo::~NullableTypeInfo() + { + } + + ITypeInfo::Decorator NullableTypeInfo::GetDecorator() + { + return ITypeInfo::Nullable; + } + + WString NullableTypeInfo::GetTypeFriendlyName() + { + return elementType->GetTypeFriendlyName() + L"?"; + } + +/*********************************************************************** +GenericTypeInfo +***********************************************************************/ + + GenericTypeInfo::GenericTypeInfo(Ptr _elementType) + :DecoratedTypeInfo(_elementType) + { + } + + GenericTypeInfo::~GenericTypeInfo() + { + } + + ITypeInfo::Decorator GenericTypeInfo::GetDecorator() + { + return ITypeInfo::Generic; + } + + vint GenericTypeInfo::GetGenericArgumentCount() + { + return genericArguments.Count(); + } + + ITypeInfo* GenericTypeInfo::GetGenericArgument(vint index) + { + return genericArguments[index].Obj(); + } + + WString GenericTypeInfo::GetTypeFriendlyName() + { + WString result = elementType->GetTypeFriendlyName() + L"<"; + FOREACH_INDEXER(Ptr, type, i, genericArguments) + { + WString result = elementType->GetTypeFriendlyName() + L"<"; + FOREACH_INDEXER(Ptr, type, i, genericArguments) + { + if (i>0) result += L", "; + result += type->GetTypeFriendlyName(); + } + result += L">"; + return result; + if (i>0) result += L", "; + result += type->GetTypeFriendlyName(); + } + result += L">"; + return result; + } + + void GenericTypeInfo::AddGenericArgument(Ptr value) + { + genericArguments.Add(value); + } + +/*********************************************************************** +ParameterInfoImpl +***********************************************************************/ + + ParameterInfoImpl::ParameterInfoImpl(IMethodInfo* _ownerMethod, const WString& _name, Ptr _type) + :ownerMethod(_ownerMethod) + ,name(_name) + ,type(_type) + { + } + + ParameterInfoImpl::~ParameterInfoImpl() + { + } + + ITypeDescriptor* ParameterInfoImpl::GetOwnerTypeDescriptor() + { + return ownerMethod->GetOwnerTypeDescriptor(); + } + + const WString& ParameterInfoImpl::GetName() + { + return name; + } + + ITypeInfo* ParameterInfoImpl::GetType() + { + return type.Obj(); + } + + IMethodInfo* ParameterInfoImpl::GetOwnerMethod() + { + return ownerMethod; + } + +/*********************************************************************** +MethodInfoImpl +***********************************************************************/ + + MethodInfoImpl::MethodInfoImpl(IMethodGroupInfo* _ownerMethodGroup, Ptr _return, bool _isStatic) + :ownerMethodGroup(_ownerMethodGroup) + ,ownerProperty(0) + ,returnInfo(_return) + ,isStatic(_isStatic) + { + } + + MethodInfoImpl::~MethodInfoImpl() + { + } + + ITypeDescriptor* MethodInfoImpl::GetOwnerTypeDescriptor() + { + return ownerMethodGroup->GetOwnerTypeDescriptor(); + } + + IPropertyInfo* MethodInfoImpl::GetOwnerProperty() + { + return ownerProperty; + } + + const WString& MethodInfoImpl::GetName() + { + return ownerMethodGroup->GetName(); + } + + IMethodGroupInfo* MethodInfoImpl::GetOwnerMethodGroup() + { + return ownerMethodGroup; + } + + vint MethodInfoImpl::GetParameterCount() + { + return parameters.Count(); + } + + IParameterInfo* MethodInfoImpl::GetParameter(vint index) + { + if(0<=index && index& arguments) + { + if(arguments.Count()!=parameters.Count()) + { + throw ArgumentCountMismtatchException(ownerMethodGroup); + } + for(vint i=0;iGetType())) + { + throw ArgumentTypeMismtatchException(parameters[i]->GetName(), parameters[i]->GetType(), arguments[i]); + } + } + } + + Value MethodInfoImpl::Invoke(const Value& thisObject, collections::Array& arguments) + { + if(thisObject.IsNull()) + { + if(!isStatic) + { + throw ArgumentNullException(L"thisObject", this); + } + } + else if(!thisObject.CanConvertTo(ownerMethodGroup->GetOwnerTypeDescriptor(), Value::RawPtr)) + { + throw ArgumentTypeMismtatchException(L"thisObject", ownerMethodGroup->GetOwnerTypeDescriptor(), Value::RawPtr, thisObject); + } + CheckArguments(arguments); + return InvokeInternal(thisObject, arguments); + } + + Value MethodInfoImpl::CreateFunctionProxy(const Value& thisObject) + { + if(thisObject.IsNull()) + { + if(!isStatic) + { + throw ArgumentNullException(L"thisObject", this); + } + } + else if(!thisObject.CanConvertTo(ownerMethodGroup->GetOwnerTypeDescriptor(), Value::RawPtr)) + { + throw ArgumentTypeMismtatchException(L"thisObject", ownerMethodGroup->GetOwnerTypeDescriptor(), Value::RawPtr, thisObject); + } + return CreateFunctionProxyInternal(thisObject); + } + + bool MethodInfoImpl::AddParameter(Ptr parameter) + { + for(vint i=0;iGetName()==parameter->GetName()) + { + return false; + } + } + parameters.Add(parameter); + return true; + } + + bool MethodInfoImpl::SetOwnerMethodgroup(IMethodGroupInfo* _ownerMethodGroup) + { + if(ownerMethodGroup) return false; + ownerMethodGroup=_ownerMethodGroup; + return true; + } + +/*********************************************************************** +MethodGroupInfoImpl +***********************************************************************/ + + MethodGroupInfoImpl::MethodGroupInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name) + :ownerTypeDescriptor(_ownerTypeDescriptor) + ,name(_name) + { + } + + MethodGroupInfoImpl::~MethodGroupInfoImpl() + { + } + + ITypeDescriptor* MethodGroupInfoImpl::GetOwnerTypeDescriptor() + { + return ownerTypeDescriptor; + } + + const WString& MethodGroupInfoImpl::GetName() + { + return name; + } + + vint MethodGroupInfoImpl::GetMethodCount() + { + return methods.Count(); + } + + IMethodInfo* MethodGroupInfoImpl::GetMethod(vint index) + { + if(0<=index && index _method) + { + methods.Add(_method); + return true; + } + +/*********************************************************************** +EventInfoImpl +***********************************************************************/ + + EventInfoImpl::EventInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name) + :ownerTypeDescriptor(_ownerTypeDescriptor) + ,name(_name) + { + } + + EventInfoImpl::~EventInfoImpl() + { + } + + ITypeDescriptor* EventInfoImpl::GetOwnerTypeDescriptor() + { + return ownerTypeDescriptor; + } + + ITypeInfo* EventInfoImpl::GetHandlerType() + { + if(!handlerType) + { + handlerType=GetHandlerTypeInternal(); + } + return handlerType.Obj(); + } + + vint EventInfoImpl::GetObservingPropertyCount() + { + return observingProperties.Count(); + } + + IPropertyInfo* EventInfoImpl::GetObservingProperty(vint index) + { + return observingProperties[index]; + } + + const WString& EventInfoImpl::GetName() + { + return name; + } + + Ptr EventInfoImpl::Attach(const Value& thisObject, Ptr handler) + { + if(thisObject.IsNull()) + { + throw ArgumentNullException(L"thisObject", this); + } + else if(!thisObject.CanConvertTo(ownerTypeDescriptor, Value::RawPtr)) + { + throw ArgumentTypeMismtatchException(L"thisObject", ownerTypeDescriptor, Value::RawPtr, thisObject); + } + + DescriptableObject* rawThisObject=thisObject.GetRawPtr(); + if(rawThisObject) + { + return AttachInternal(rawThisObject, handler); + } + else + { + return nullptr; + } + } + + bool EventInfoImpl::Detach(const Value& thisObject, Ptr handler) + { + if (thisObject.IsNull()) + { + throw ArgumentNullException(L"thisObject", this); + } + else if (!thisObject.CanConvertTo(ownerTypeDescriptor, Value::RawPtr)) + { + throw ArgumentTypeMismtatchException(L"thisObject", ownerTypeDescriptor, Value::RawPtr, thisObject); + } + + DescriptableObject* rawThisObject = thisObject.GetRawPtr(); + if (rawThisObject) + { + return DetachInternal(rawThisObject, handler); + } + else + { + return false; + } + } + + void EventInfoImpl::Invoke(const Value& thisObject, Ptr arguments) + { + if(thisObject.IsNull()) + { + throw ArgumentNullException(L"thisObject", this); + } + else if(!thisObject.CanConvertTo(ownerTypeDescriptor, Value::RawPtr)) + { + throw ArgumentTypeMismtatchException(L"thisObject", ownerTypeDescriptor, Value::RawPtr, thisObject); + } + + DescriptableObject* rawThisObject=thisObject.GetRawPtr(); + if(rawThisObject) + { + InvokeInternal(rawThisObject, arguments); + } + else + { + return; + } + } + +/*********************************************************************** +PropertyInfoImpl +***********************************************************************/ + + PropertyInfoImpl::PropertyInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, MethodInfoImpl* _getter, MethodInfoImpl* _setter, EventInfoImpl* _valueChangedEvent) + :ownerTypeDescriptor(_ownerTypeDescriptor) + ,name(_name) + ,getter(_getter) + ,setter(_setter) + ,valueChangedEvent(_valueChangedEvent) + { + if(getter) getter->ownerProperty=this; + if(setter) setter->ownerProperty=this; + if(valueChangedEvent) + { + valueChangedEvent->observingProperties.Add(this); + } + } + + PropertyInfoImpl::~PropertyInfoImpl() + { + } + + ITypeDescriptor* PropertyInfoImpl::GetOwnerTypeDescriptor() + { + return ownerTypeDescriptor; + } + + const WString& PropertyInfoImpl::GetName() + { + return name; + } + + IPropertyInfo::ICpp* PropertyInfoImpl::GetCpp() + { + return nullptr; + } + + bool PropertyInfoImpl::IsReadable() + { + return getter!=0; + } + + bool PropertyInfoImpl::IsWritable() + { + return setter!=0; + } + + ITypeInfo* PropertyInfoImpl::GetReturn() + { + return getter?getter->GetReturn():0; + } + + IMethodInfo* PropertyInfoImpl::GetGetter() + { + return getter; + } + + IMethodInfo* PropertyInfoImpl::GetSetter() + { + return setter; + } + + IEventInfo* PropertyInfoImpl::GetValueChangedEvent() + { + return valueChangedEvent; + } + + Value PropertyInfoImpl::GetValue(const Value& thisObject) + { + if(getter) + { + Array arguments; + return getter->Invoke(thisObject, arguments); + } + else + { + throw PropertyIsNotReadableException(this); + } + } + + void PropertyInfoImpl::SetValue(Value& thisObject, const Value& newValue) + { + if(setter) + { + Array arguments(1); + arguments[0]=newValue; + setter->Invoke(thisObject, arguments); + } + else + { + throw PropertyIsNotWritableException(this); + } + } + +/*********************************************************************** +PropertyInfoImpl_StaticCpp +***********************************************************************/ + + const WString& PropertyInfoImpl_StaticCpp::GetReferenceTemplate() + { + return referenceTemplate; + } + + PropertyInfoImpl_StaticCpp::PropertyInfoImpl_StaticCpp(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, MethodInfoImpl* _getter, MethodInfoImpl* _setter, EventInfoImpl* _valueChangedEvent, const WString& _referenceTemplate) + :PropertyInfoImpl(_ownerTypeDescriptor, _name, _getter, _setter, _valueChangedEvent) + , referenceTemplate(_referenceTemplate) + { + } + + PropertyInfoImpl_StaticCpp::~PropertyInfoImpl_StaticCpp() + { + } + + IPropertyInfo::ICpp* PropertyInfoImpl_StaticCpp::GetCpp() + { + return this; + } + +/*********************************************************************** +FieldInfoImpl +***********************************************************************/ + + FieldInfoImpl::FieldInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, Ptr _returnInfo) + :ownerTypeDescriptor(_ownerTypeDescriptor) + ,name(_name) + ,returnInfo(_returnInfo) + { + } + + FieldInfoImpl::~FieldInfoImpl() + { + } + + ITypeDescriptor* FieldInfoImpl::GetOwnerTypeDescriptor() + { + return ownerTypeDescriptor; + } + + const WString& FieldInfoImpl::GetName() + { + return name; + } + + bool FieldInfoImpl::IsReadable() + { + return true; + } + + bool FieldInfoImpl::IsWritable() + { + return true; + } + + ITypeInfo* FieldInfoImpl::GetReturn() + { + return returnInfo.Obj(); + } + + IMethodInfo* FieldInfoImpl::GetGetter() + { + return 0; + } + + IMethodInfo* FieldInfoImpl::GetSetter() + { + return 0; + } + + IEventInfo* FieldInfoImpl::GetValueChangedEvent() + { + return 0; + } + + Value FieldInfoImpl::GetValue(const Value& thisObject) + { + if(thisObject.IsNull()) + { + throw ArgumentNullException(L"thisObject", this); + } + else + { + auto td = thisObject.GetTypeDescriptor(); + auto valueType = td->GetValueType() ? Value::BoxedValue : Value::RawPtr; + if(!thisObject.CanConvertTo(ownerTypeDescriptor, valueType)) + { + throw ArgumentTypeMismtatchException(L"thisObject", ownerTypeDescriptor, valueType, thisObject); + } + } + return GetValueInternal(thisObject); + } + + void FieldInfoImpl::SetValue(Value& thisObject, const Value& newValue) + { + if(thisObject.IsNull()) + { + throw ArgumentNullException(L"thisObject", this); + } + else + { + auto td = thisObject.GetTypeDescriptor(); + auto valueType = td->GetValueType() ? Value::BoxedValue : Value::RawPtr; + if(!thisObject.CanConvertTo(ownerTypeDescriptor, valueType)) + { + throw ArgumentTypeMismtatchException(L"thisObject", ownerTypeDescriptor, valueType, thisObject); + } + } + if(!newValue.CanConvertTo(returnInfo.Obj())) + { + throw ArgumentTypeMismtatchException(L"newValue", returnInfo.Obj(), newValue); + } + SetValueInternal(thisObject, newValue); + } + +/*********************************************************************** +TypeDescriptorImpl +***********************************************************************/ + + MethodGroupInfoImpl* TypeDescriptorImpl::PrepareMethodGroup(const WString& name) + { + vint index=methodGroups.Keys().IndexOf(name); + if(index==-1) + { + Ptr methodGroup=new MethodGroupInfoImpl(this, name); + methodGroups.Add(name, methodGroup); + return methodGroup.Obj(); + } + else + { + return methodGroups.Values().Get(index).Obj(); + } + } + + MethodGroupInfoImpl* TypeDescriptorImpl::PrepareConstructorGroup() + { + if(!constructorGroup) + { + constructorGroup=new MethodGroupInfoImpl(this, L""); + } + return constructorGroup.Obj(); + } + + IPropertyInfo* TypeDescriptorImpl::AddProperty(Ptr value) + { + properties.Add(value->GetName(), value); + return value.Obj(); + } + + IEventInfo* TypeDescriptorImpl::AddEvent(Ptr value) + { + events.Add(value->GetName(), value); + return value.Obj(); + } + + IMethodInfo* TypeDescriptorImpl::AddMethod(const WString& name, Ptr value) + { + MethodGroupInfoImpl* methodGroup=PrepareMethodGroup(name); + value->SetOwnerMethodgroup(methodGroup); + methodGroup->AddMethod(value); + return value.Obj(); + } + + IMethodInfo* TypeDescriptorImpl::AddConstructor(Ptr value) + { + MethodGroupInfoImpl* methodGroup=PrepareConstructorGroup(); + value->SetOwnerMethodgroup(methodGroup); + methodGroup->AddMethod(value); + return value.Obj(); + } + + void TypeDescriptorImpl::AddBaseType(ITypeDescriptor* value) + { + baseTypeDescriptors.Add(value); + } + + void TypeDescriptorImpl::Load() + { + if(!loaded) + { + loaded=true; + LoadInternal(); + } + } + + TypeDescriptorImpl::TypeDescriptorImpl(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent) + :TypeDescriptorImplBase(_typeDescriptorFlags, _typeInfoContent) + ,loaded(false) + { + } + + TypeDescriptorImpl::~TypeDescriptorImpl() + { + } + + bool TypeDescriptorImpl::IsAggregatable() + { + return false; + } + + IValueType* TypeDescriptorImpl::GetValueType() + { + return nullptr; + } + + IEnumType* TypeDescriptorImpl::GetEnumType() + { + return nullptr; + } + + ISerializableType* TypeDescriptorImpl::GetSerializableType() + { + return nullptr; + } + + vint TypeDescriptorImpl::GetBaseTypeDescriptorCount() + { + Load(); + return baseTypeDescriptors.Count(); + } + + ITypeDescriptor* TypeDescriptorImpl::GetBaseTypeDescriptor(vint index) + { + Load(); + if(0<=index && indexCanConvertTo(targetType)) return true; + } + return false; + } + + vint TypeDescriptorImpl::GetPropertyCount() + { + Load(); + return properties.Count(); + } + + IPropertyInfo* TypeDescriptorImpl::GetProperty(vint index) + { + Load(); + if(0<=index && indexIsPropertyExists(name, true)) + { + return true; + } + } + } + return false; + } + + IPropertyInfo* TypeDescriptorImpl::GetPropertyByName(const WString& name, bool inheritable) + { + Load(); + vint index=properties.Keys().IndexOf(name); + if(index!=-1) + { + return properties.Values().Get(index).Obj(); + } + if(inheritable) + { + for(vint i=0;iGetPropertyByName(name, true); + if(result) + { + return result; + } + } + } + return 0; + } + + vint TypeDescriptorImpl::GetEventCount() + { + Load(); + return events.Count(); + } + + IEventInfo* TypeDescriptorImpl::GetEvent(vint index) + { + Load(); + if(0<=index && indexIsEventExists(name, true)) + { + return true; + } + } + } + return false; + } + + IEventInfo* TypeDescriptorImpl::GetEventByName(const WString& name, bool inheritable) + { + Load(); + vint index=events.Keys().IndexOf(name); + if(index!=-1) + { + return events.Values().Get(index).Obj(); + } + if(inheritable) + { + for(vint i=0;iGetEventByName(name, true); + if(result) + { + return result; + } + } + } + return 0; + } + + vint TypeDescriptorImpl::GetMethodGroupCount() + { + Load(); + return methodGroups.Count(); + } + + IMethodGroupInfo* TypeDescriptorImpl::GetMethodGroup(vint index) + { + Load(); + if(0<=index && indexIsMethodGroupExists(name, true)) + { + return true; + } + } + } + return false; + } + + IMethodGroupInfo* TypeDescriptorImpl::GetMethodGroupByName(const WString& name, bool inheritable) + { + Load(); + vint index=methodGroups.Keys().IndexOf(name); + if(index!=-1) + { + return methodGroups.Values().Get(index).Obj(); + } + if(inheritable) + { + for(vint i=0;iGetMethodGroupByName(name, true); + if(result) + { + return result; + } + } + } + return 0; + } + + IMethodGroupInfo* TypeDescriptorImpl::GetConstructorGroup() + { + Load(); + return constructorGroup.Obj(); + } +#endif + +/*********************************************************************** +Function Related +***********************************************************************/ + + namespace internal_helper + { + void UnboxSpecifiedParameter(Ptr arguments, vint index) + { + } + +#ifndef VCZH_DEBUG_NO_REFLECTION + void UnboxSpecifiedParameter(MethodInfoImpl* methodInfo, collections::Array& arguments, vint index) + { + } +#endif + + void AddValueToList(Ptr arguments) + { + } + } + } + } +} + +/*********************************************************************** +.\GUITYPEDESCRIPTORPREDEFINED.CPP +***********************************************************************/ + +namespace vl +{ + using namespace collections; + + namespace reflection + { + namespace description + { + +/*********************************************************************** +IValueEnumerable +***********************************************************************/ + + Ptr IValueEnumerable::Create(collections::LazyList values) + { + Ptr> enumerable = new LazyList(values); + return new ValueEnumerableWrapper>>(enumerable); + } + +/*********************************************************************** +IValueList +***********************************************************************/ + + Ptr IValueList::Create() + { + return Create(LazyList()); + } + + Ptr IValueList::Create(Ptr values) + { + return Create(GetLazyList(values)); + } + + Ptr IValueList::Create(collections::LazyList values) + { + Ptr> list = new List; + CopyFrom(*list.Obj(), values); + return new ValueListWrapper>>(list); + } + +/*********************************************************************** +IObservableList +***********************************************************************/ + + class ReversedObservableList : public ObservableListBase + { + protected: + + void NotifyUpdateInternal(vint start, vint count, vint newCount)override + { + if (observableList) + { + observableList->ItemChanged(start, count, newCount); + } + } + public: + IValueObservableList* observableList = nullptr; + }; + + Ptr IValueObservableList::Create() + { + return Create(LazyList()); + } + + Ptr IValueObservableList::Create(Ptr values) + { + return Create(GetLazyList(values)); + } + + Ptr IValueObservableList::Create(collections::LazyList values) + { + auto list = MakePtr(); + CopyFrom(*list.Obj(), values); + auto wrapper = MakePtr>>(list); + list->observableList = wrapper.Obj(); + return wrapper; + } + +/*********************************************************************** +IValueDictionary +***********************************************************************/ + + Ptr IValueDictionary::Create() + { + Ptr> dictionary = new Dictionary; + return new ValueDictionaryWrapper>>(dictionary); + } + + Ptr IValueDictionary::Create(Ptr values) + { + Ptr> dictionary = new Dictionary; + CopyFrom(*dictionary.Obj(), GetLazyList(values)); + return new ValueDictionaryWrapper>>(dictionary); + } + + Ptr IValueDictionary::Create(collections::LazyList> values) + { + Ptr> dictionary = new Dictionary; + CopyFrom(*dictionary.Obj(), values); + return new ValueDictionaryWrapper>>(dictionary); + } + +/*********************************************************************** +IValueException +***********************************************************************/ + + class DefaultValueException : public Object, public IValueException + { + protected: + WString message; + + public: + DefaultValueException(const WString& _message) + :message(_message) + { + } + +#pragma push_macro("GetMessage") +#if defined GetMessage +#undef GetMessage +#endif + WString GetMessage()override + { + return message; + } +#pragma pop_macro("GetMessage") + + bool GetFatal()override + { + return false; + } + + Ptr GetCallStack()override + { + return nullptr; + } + }; + + Ptr IValueException::Create(const WString& message) + { + return new DefaultValueException(message); + } + } + } +} + + +/*********************************************************************** +.\GUITYPEDESCRIPTORREFLECTION.CPP +***********************************************************************/ +#include +#include + +namespace vl +{ + using namespace collections; + using namespace regex; + + namespace reflection + { + namespace description + { + +/*********************************************************************** +TypeName +***********************************************************************/ + +#ifndef VCZH_DEBUG_NO_REFLECTION + + IMPL_TYPE_INFO_RENAME(void, system::Void) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::VoidValue, system::Void) + IMPL_TYPE_INFO_RENAME(vl::reflection::IDescriptable, system::Interface) + IMPL_TYPE_INFO_RENAME(vl::reflection::DescriptableObject, system::ReferenceType) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::Value, system::Object) + IMPL_TYPE_INFO_RENAME(vl::vuint8_t, system::UInt8) + IMPL_TYPE_INFO_RENAME(vl::vuint16_t, system::UInt16) + IMPL_TYPE_INFO_RENAME(vl::vuint32_t, system::UInt32) + IMPL_TYPE_INFO_RENAME(vl::vuint64_t, system::UInt64) + IMPL_TYPE_INFO_RENAME(vl::vint8_t, system::Int8) + IMPL_TYPE_INFO_RENAME(vl::vint16_t, system::Int16) + IMPL_TYPE_INFO_RENAME(vl::vint32_t, system::Int32) + IMPL_TYPE_INFO_RENAME(vl::vint64_t, system::Int64) + IMPL_TYPE_INFO_RENAME(float, system::Single) + IMPL_TYPE_INFO_RENAME(double, system::Double) + IMPL_TYPE_INFO_RENAME(bool, system::Boolean) + IMPL_TYPE_INFO_RENAME(wchar_t, system::Char) + IMPL_TYPE_INFO_RENAME(vl::WString, system::String) + IMPL_TYPE_INFO_RENAME(vl::DateTime, system::DateTime) + IMPL_TYPE_INFO_RENAME(vl::Locale, system::Locale) + + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueEnumerator, system::Enumerator) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueEnumerable, system::Enumerable) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueReadonlyList, system::ReadonlyList) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueList, system::List) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueObservableList, system::ObservableList) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueReadonlyDictionary, system::ReadonlyDictionary) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueDictionary, system::Dictionary) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueInterfaceProxy, system::InterfaceProxy) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueFunctionProxy, system::Function) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueSubscription, system::Subscription) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueCallStack, system::CallStack) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueException, system::Exception) + + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IBoxedValue, system::reflection::BoxedValue) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IBoxedValue::CompareResult, system::reflection::ValueType::CompareResult) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IValueType, system::reflection::ValueType) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IEnumType, system::reflection::EnumType) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::ISerializableType, system::reflection::SerializableType) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::ITypeInfo, system::reflection::TypeInfo) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::ITypeInfo::Decorator, system::reflection::TypeInfo::Decorator) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IMemberInfo, system::reflection::MemberInfo) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IEventHandler, system::reflection::EventHandler) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IEventInfo, system::reflection::EventInfo) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IPropertyInfo, system::reflection::PropertyInfo) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IParameterInfo, system::reflection::ParameterInfo) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IMethodInfo, system::reflection::MethodInfo) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IMethodGroupInfo, system::reflection::MethodGroupInfo) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::TypeDescriptorFlags, system::reflection::TypeDescriptorFlags) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::ITypeDescriptor, system::reflection::TypeDescriptor) + +#endif + +/*********************************************************************** +TypedValueSerializerProvider +***********************************************************************/ + +#define DEFINE_COMPARE(TYPENAME)\ + IBoxedValue::CompareResult TypedValueSerializerProvider::Compare(const TYPENAME& a, const TYPENAME& b)\ + {\ + if (a < b) return IBoxedValue::Smaller;\ + if (a > b) return IBoxedValue::Greater;\ + return IBoxedValue::Equal;\ + }\ + + REFLECTION_PREDEFINED_PRIMITIVE_TYPES(DEFINE_COMPARE) + +#undef DEFINE_COMPARE + + vuint8_t TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const vuint8_t& input, WString& output) + { + output = u64tow(input); + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, vuint8_t& output) + { + bool success = false; + vuint64_t result = wtou64_test(input, success); + if (!success) return false; + if (result>_UI8_MAX) return false; + output = (vuint8_t)result; + return true; + } + + //--------------------------------------- + + vuint16_t TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const vuint16_t& input, WString& output) + { + output = u64tow(input); + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, vuint16_t& output) + { + bool success = false; + vuint64_t result = wtou64_test(input, success); + if (!success) return false; + if (result>_UI16_MAX) return false; + output = (vuint16_t)result; + return true; + } + + //--------------------------------------- + + vuint32_t TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const vuint32_t& input, WString& output) + { + output = u64tow(input); + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, vuint32_t& output) + { + bool success = false; + vuint64_t result = wtou64_test(input, success); + if (!success) return false; + if (result>_UI32_MAX) return false; + output = (vuint32_t)result; + return true; + } + + //--------------------------------------- + + vuint64_t TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const vuint64_t& input, WString& output) + { + output = u64tow(input); + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, vuint64_t& output) + { + bool success = false; + vuint64_t result = wtou64_test(input, success); + if (!success) return false; + output = result; + return true; + } + + //--------------------------------------- + + vint8_t TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const vint8_t& input, WString& output) + { + output = i64tow(input); + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, vint8_t& output) + { + bool success = false; + vint64_t result = wtoi64_test(input, success); + if (!success) return false; + if (result<_I8_MIN || result>_I8_MAX) return false; + output = (vint8_t)result; + return true; + } + + //--------------------------------------- + + vint16_t TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const vint16_t& input, WString& output) + { + output = i64tow(input); + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, vint16_t& output) + { + bool success = false; + vint64_t result = wtoi64_test(input, success); + if (!success) return false; + if (result<_I16_MIN || result>_I16_MAX) return false; + output = (vint16_t)result; + return true; + } + + //--------------------------------------- + + vint32_t TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const vint32_t& input, WString& output) + { + output = i64tow(input); + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, vint32_t& output) + { + bool success = false; + vint64_t result = wtoi64_test(input, success); + if (!success) return false; + if (result<_I32_MIN || result>_I32_MAX) return false; + output = (vint32_t)result; + return true; + } + + //--------------------------------------- + + vint64_t TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const vint64_t& input, WString& output) + { + output = i64tow(input); + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, vint64_t& output) + { + bool success = false; + vint64_t result = wtoi64_test(input, success); + if (!success) return false; + output = result; + return true; + } + + //--------------------------------------- + + float TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const float& input, WString& output) + { + output = ftow(input); + if (output == L"-0") output = L"0"; + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, float& output) + { + bool success = false; + double result = wtof_test(input, success); + if (!success) return false; + if (result<-FLT_MAX || result>FLT_MAX) return false; + output = (float)result; + return true; + } + + //--------------------------------------- + + double TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const double& input, WString& output) + { + output = ftow(input); + if (output == L"-0") output = L"0"; + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, double& output) + { + bool success = false; + double result = wtof_test(input, success); + if (!success) return false; + output = result; + return true; + } + + //--------------------------------------- + + wchar_t TypedValueSerializerProvider::GetDefaultValue() + { + return 0; + } + + bool TypedValueSerializerProvider::Serialize(const wchar_t& input, WString& output) + { + output = input ? WString(input) : L""; + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, wchar_t& output) + { + if (input.Length()>1) return false; + output = input.Length() == 0 ? 0 : input[0]; + return true; + } + + //--------------------------------------- + + WString TypedValueSerializerProvider::GetDefaultValue() + { + return L""; + } + + bool TypedValueSerializerProvider::Serialize(const WString& input, WString& output) + { + output = input; + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, WString& output) + { + output = input; + return true; + } + + //--------------------------------------- + + bool TypedValueSerializerProvider::GetDefaultValue() + { + return false; + } + + bool TypedValueSerializerProvider::Serialize(const bool& input, WString& output) + { + output = input ? L"true" : L"false"; + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, bool& output) + { + output = input == L"true"; + return input == L"true" || input == L"false"; + } + + //--------------------------------------- + + Locale TypedValueSerializerProvider::GetDefaultValue() + { + return Locale(); + } + + bool TypedValueSerializerProvider::Serialize(const Locale& input, WString& output) + { + output = input.GetName(); + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, Locale& output) + { + output = Locale(input); + return true; + } + +/*********************************************************************** +DateTimeValueSerializer +***********************************************************************/ + + BEGIN_GLOBAL_STORAGE_CLASS(DateTimeSerializerStorage) + Regex* regexDateTime = nullptr; + + INITIALIZE_GLOBAL_STORAGE_CLASS + regexDateTime = new Regex(L"(/d/d/d/d)-(/d/d)-(/d/d) (/d/d):(/d/d):(/d/d).(/d/d/d)"); + + FINALIZE_GLOBAL_STORAGE_CLASS + delete regexDateTime; + regexDateTime = nullptr; + + END_GLOBAL_STORAGE_CLASS(DateTimeSerializerStorage) + + DateTime TypedValueSerializerProvider::GetDefaultValue() + { + return DateTime(); + } + + WString FormatDigits(vint number, vint length) + { + WString result = itow(number); + while (result.Length() < length) + { + result = L"0" + result; + } + return result; + } + + bool TypedValueSerializerProvider::Serialize(const DateTime& input, WString& output) + { + output = + FormatDigits(input.year, 4) + L"-" + FormatDigits(input.month, 2) + L"-" + FormatDigits(input.day, 2) + L" " + + FormatDigits(input.hour, 2) + L":" + FormatDigits(input.minute, 2) + L":" + FormatDigits(input.second, 2) + L"." + + FormatDigits(input.milliseconds, 3); + return true; + } + + bool TypedValueSerializerProvider::Deserialize(const WString& input, DateTime& output) + { + Ptr match = GetDateTimeSerializerStorage().regexDateTime->Match(input); + if (!match) return false; + if (!match->Success()) return false; + if (match->Result().Start() != 0) return false; + if (match->Result().Length() != input.Length()) return false; + + vint year = wtoi(match->Groups()[L"Y"].Get(0).Value()); + vint month = wtoi(match->Groups()[L"M"].Get(0).Value()); + vint day = wtoi(match->Groups()[L"D"].Get(0).Value()); + vint hour = wtoi(match->Groups()[L"h"].Get(0).Value()); + vint minute = wtoi(match->Groups()[L"m"].Get(0).Value()); + vint second = wtoi(match->Groups()[L"s"].Get(0).Value()); + vint milliseconds = wtoi(match->Groups()[L"ms"].Get(0).Value()); + + output = DateTime::FromDateTime(year, month, day, hour, minute, second, milliseconds); + return true; + } + + IBoxedValue::CompareResult TypedValueSerializerProvider::Compare(const DateTime& a, const DateTime& b) + { + auto ta = a.filetime; + auto tb = b.filetime; + if (ta < tb) return IBoxedValue::Smaller; + if (ta > tb) return IBoxedValue::Greater; + return IBoxedValue::Equal; + } + +/*********************************************************************** +Helper Functions +***********************************************************************/ + +#ifndef VCZH_DEBUG_NO_REFLECTION + + vint ITypeDescriptor_GetTypeDescriptorCount() + { + return GetGlobalTypeManager()->GetTypeDescriptorCount(); + } + + ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(vint index) + { + return GetGlobalTypeManager()->GetTypeDescriptor(index); + } + + ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const WString& name) + { + return GetGlobalTypeManager()->GetTypeDescriptor(name); + } + + ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const Value& value) + { + return value.GetTypeDescriptor(); + } + +#else + + vint ITypeDescriptor_GetTypeDescriptorCount() + { + return 0; + } + + ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(vint index) + { + return nullptr; + } + + ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const WString& name) + { + return nullptr; + } + + ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const Value& value) + { + return nullptr; + } + +#endif + +/*********************************************************************** +LoadPredefinedTypes +***********************************************************************/ + +#ifndef VCZH_DEBUG_NO_REFLECTION + +#define _ , + + template<> + struct CustomTypeDescriptorSelector + { + public: + class CustomTypeDescriptorImpl : public TypeDescriptorImpl + { + public: + CustomTypeDescriptorImpl() + :TypeDescriptorImpl(TypeDescriptorFlags::Class, &TypeInfo::content) + { + Description::SetAssociatedTypeDescroptor(this); + } + ~CustomTypeDescriptorImpl() + { + Description::SetAssociatedTypeDescroptor(0); + } + protected: + void LoadInternal()override + { + } + }; + }; + + BEGIN_STRUCT_MEMBER_FLAG(VoidValue, TypeDescriptorFlags::Primitive) + END_STRUCT_MEMBER(VoidValue) + + BEGIN_INTERFACE_MEMBER_NOPROXY_FLAG(IDescriptable, TypeDescriptorFlags::IDescriptable) + END_INTERFACE_MEMBER(IDescriptable) + + BEGIN_STRUCT_MEMBER(DateTime) + valueType = new SerializableValueType(); + serializableType = new SerializableType(); + STRUCT_MEMBER(year) + STRUCT_MEMBER(month) + STRUCT_MEMBER(dayOfWeek) + STRUCT_MEMBER(day) + STRUCT_MEMBER(hour) + STRUCT_MEMBER(minute) + STRUCT_MEMBER(second) + STRUCT_MEMBER(milliseconds) + STRUCT_MEMBER(totalMilliseconds) + STRUCT_MEMBER(filetime) + END_STRUCT_MEMBER(DateTime) + + BEGIN_INTERFACE_MEMBER(IValueEnumerator) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Current) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Index) + CLASS_MEMBER_METHOD(Next, NO_PARAMETER) + END_INTERFACE_MEMBER(IValueEnumerator) + + BEGIN_INTERFACE_MEMBER(IValueEnumerable) + CLASS_MEMBER_METHOD(CreateEnumerator, NO_PARAMETER) + END_INTERFACE_MEMBER(IValueEnumerable) + + BEGIN_INTERFACE_MEMBER(IValueReadonlyList) + CLASS_MEMBER_BASE(IValueEnumerable) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Count) + CLASS_MEMBER_METHOD(Get, { L"index" }) + CLASS_MEMBER_METHOD(Contains, { L"value" }) + CLASS_MEMBER_METHOD(IndexOf, { L"value" }) + END_INTERFACE_MEMBER(IValueReadonlyList) + + BEGIN_INTERFACE_MEMBER(IValueList) + CLASS_MEMBER_BASE(IValueReadonlyList) + CLASS_MEMBER_EXTERNALCTOR(Ptr(), NO_PARAMETER, vl::reflection::description::IValueList::Create) + CLASS_MEMBER_EXTERNALCTOR(Ptr(Ptr), { L"values" }, vl::reflection::description::IValueList::Create) + + CLASS_MEMBER_METHOD(Set, { L"index" _ L"value" }) + CLASS_MEMBER_METHOD(Add, { L"value" }) + CLASS_MEMBER_METHOD(Insert, { L"index" _ L"value" }) + CLASS_MEMBER_METHOD(Remove, { L"value" }) + CLASS_MEMBER_METHOD(RemoveAt, { L"index" }) + CLASS_MEMBER_METHOD(Clear, NO_PARAMETER) + END_INTERFACE_MEMBER(IValueList) + + BEGIN_INTERFACE_MEMBER(IValueObservableList) + CLASS_MEMBER_BASE(IValueList) + CLASS_MEMBER_EXTERNALCTOR(Ptr(), NO_PARAMETER, vl::reflection::description::IValueObservableList::Create) + CLASS_MEMBER_EXTERNALCTOR(Ptr(Ptr), { L"values" }, vl::reflection::description::IValueObservableList::Create) + + CLASS_MEMBER_EVENT(ItemChanged) + END_INTERFACE_MEMBER(IValueObservableList) + + BEGIN_INTERFACE_MEMBER(IValueReadonlyDictionary) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Keys) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Values) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Count) + CLASS_MEMBER_METHOD(Get, { L"key" }) + END_INTERFACE_MEMBER(IValueReadonlyDictionary) + + BEGIN_INTERFACE_MEMBER(IValueDictionary) + CLASS_MEMBER_BASE(IValueReadonlyDictionary) + CLASS_MEMBER_EXTERNALCTOR(Ptr(), NO_PARAMETER, vl::reflection::description::IValueDictionary::Create) + CLASS_MEMBER_EXTERNALCTOR(Ptr(Ptr), { L"values" }, vl::reflection::description::IValueDictionary::Create) + CLASS_MEMBER_METHOD(Set, { L"key" _ L"value" }) + CLASS_MEMBER_METHOD(Remove, { L"key" }) + CLASS_MEMBER_METHOD(Clear, NO_PARAMETER) + END_INTERFACE_MEMBER(IValueDictionary) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IValueInterfaceProxy) + CLASS_MEMBER_METHOD(Invoke, { L"methodInfo" _ L"arguments" }) + END_INTERFACE_MEMBER(IValueInterfaceProxy) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IValueFunctionProxy) + CLASS_MEMBER_METHOD(Invoke, { L"arguments" }) + END_INTERFACE_MEMBER(IValueFunctionProxy) + + BEGIN_INTERFACE_MEMBER(IValueSubscription) + CLASS_MEMBER_EVENT(ValueChanged) + CLASS_MEMBER_METHOD(Open, NO_PARAMETER) + CLASS_MEMBER_METHOD(Update, NO_PARAMETER) + CLASS_MEMBER_METHOD(Close, NO_PARAMETER) + END_CLASS_MEMBER(IValueSubscription) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IValueCallStack) + CLASS_MEMBER_PROPERTY_READONLY_FAST(LocalVariables) + CLASS_MEMBER_PROPERTY_READONLY_FAST(LocalArguments) + CLASS_MEMBER_PROPERTY_READONLY_FAST(CapturedVariables) + CLASS_MEMBER_PROPERTY_READONLY_FAST(GlobalVariables) + CLASS_MEMBER_PROPERTY_READONLY_FAST(FunctionName) + CLASS_MEMBER_PROPERTY_READONLY_FAST(SourceCodeBeforeCodegen) + CLASS_MEMBER_PROPERTY_READONLY_FAST(SourceCodeAfterCodegen) + CLASS_MEMBER_PROPERTY_READONLY_FAST(RowBeforeCodegen) + CLASS_MEMBER_PROPERTY_READONLY_FAST(RowAfterCodegen) + END_INTERFACE_MEMBER(IValueCallStack) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IValueException) +#pragma push_macro("GetMessage") +#if defined GetMessage +#undef GetMessage +#endif + CLASS_MEMBER_PROPERTY_READONLY_FAST(Message) +#pragma pop_macro("GetMessage") + CLASS_MEMBER_PROPERTY_READONLY_FAST(Fatal) + CLASS_MEMBER_PROPERTY_READONLY_FAST(CallStack) + END_INTERFACE_MEMBER(IValueException) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IBoxedValue) + CLASS_MEMBER_METHOD(Copy, NO_PARAMETER) + END_INTERFACE_MEMBER(IBoxedValue) + + BEGIN_ENUM_ITEM(IBoxedValue::CompareResult) + ENUM_ITEM_NAMESPACE(IBoxedValue) + + ENUM_NAMESPACE_ITEM(Smaller) + ENUM_NAMESPACE_ITEM(Greater) + ENUM_NAMESPACE_ITEM(Equal) + ENUM_NAMESPACE_ITEM(NotComparable) + END_ENUM_ITEM(ITypeInfo::Decorator) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IValueType) + CLASS_MEMBER_METHOD(CreateDefault, NO_PARAMETER) + CLASS_MEMBER_METHOD(Compare, { L"a" _ L"b" }) + END_INTERFACE_MEMBER(IValueType) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IEnumType) + CLASS_MEMBER_METHOD(IsFlagEnum, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetItemCount, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetItemName, { L"index" }) + CLASS_MEMBER_METHOD(GetItemValue, { L"index" }) + CLASS_MEMBER_METHOD(IndexOfItem, { L"name" }) + CLASS_MEMBER_METHOD(ToEnum, { L"value" }) + CLASS_MEMBER_METHOD(FromEnum, { L"value" }) + END_INTERFACE_MEMBER(IEnumType) + + BEGIN_INTERFACE_MEMBER_NOPROXY(ISerializableType) + CLASS_MEMBER_METHOD(Serialize, { L"input" _ L"output" }) + CLASS_MEMBER_METHOD(Deserialize, { L"input" _ L"output" }) + END_INTERFACE_MEMBER(ISerializableType) + + BEGIN_INTERFACE_MEMBER_NOPROXY(ITypeInfo) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Decorator) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ElementType) + CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeDescriptor) + CLASS_MEMBER_PROPERTY_READONLY_FAST(GenericArgumentCount) + CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeFriendlyName) + + CLASS_MEMBER_METHOD(GetGenericArgument, { L"index" }) + END_INTERFACE_MEMBER(ITypeInfo) + + BEGIN_ENUM_ITEM(ITypeInfo::Decorator) + ENUM_ITEM_NAMESPACE(ITypeInfo) + + ENUM_NAMESPACE_ITEM(RawPtr) + ENUM_NAMESPACE_ITEM(SharedPtr) + ENUM_NAMESPACE_ITEM(Nullable) + ENUM_NAMESPACE_ITEM(TypeDescriptor) + ENUM_NAMESPACE_ITEM(Generic) + END_ENUM_ITEM(ITypeInfo::Decorator) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IMemberInfo) + CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerTypeDescriptor) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Name) + END_INTERFACE_MEMBER(IMemberInfo) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IEventHandler) + CLASS_MEMBER_METHOD(IsAttached, NO_PARAMETER) + END_INTERFACE_MEMBER(IEventHandler) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IEventInfo) + CLASS_MEMBER_BASE(IMemberInfo) + + CLASS_MEMBER_PROPERTY_READONLY_FAST(HandlerType) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ObservingPropertyCount) + + CLASS_MEMBER_METHOD(GetObservingProperty, { L"index" }) + CLASS_MEMBER_METHOD(Attach, { L"thisObject" _ L"handler" }) + CLASS_MEMBER_METHOD(Invoke, { L"thisObject" _ L"arguments" }) + END_INTERFACE_MEMBER(IEventInfo) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IPropertyInfo) + CLASS_MEMBER_BASE(IMemberInfo) + + CLASS_MEMBER_PROPERTY_READONLY_FAST(Return) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Getter) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Setter) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ValueChangedEvent) + + CLASS_MEMBER_METHOD(IsReadable, NO_PARAMETER) + CLASS_MEMBER_METHOD(IsWritable, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetValue, { L"thisObject" }) + CLASS_MEMBER_METHOD(SetValue, { L"thisObject" _ L"newValue" }) + END_INTERFACE_MEMBER(IPropertyInfo) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IParameterInfo) + CLASS_MEMBER_BASE(IMemberInfo) + + CLASS_MEMBER_PROPERTY_READONLY_FAST(Type) + CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerMethod) + END_CLASS_MEMBER(IParameterInfo) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IMethodInfo) + CLASS_MEMBER_BASE(IMemberInfo) + + CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerMethodGroup) + CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerProperty) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ParameterCount) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Return) + + CLASS_MEMBER_METHOD(GetParameter, { L"index" }) + CLASS_MEMBER_METHOD(IsStatic, NO_PARAMETER) + CLASS_MEMBER_METHOD(CheckArguments, { L"arguments" }) + CLASS_MEMBER_METHOD(Invoke, { L"thisObject" _ L"arguments" }) + CLASS_MEMBER_BASE(IMemberInfo) + END_INTERFACE_MEMBER(IMethodInfo) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IMethodGroupInfo) + CLASS_MEMBER_BASE(IMemberInfo) + + CLASS_MEMBER_PROPERTY_READONLY_FAST(MethodCount) + + CLASS_MEMBER_METHOD(GetMethod, { L"index" }) + END_INTERFACE_MEMBER(IMethodGroupInfo) + + BEGIN_ENUM_ITEM_MERGABLE(TypeDescriptorFlags) + ENUM_CLASS_ITEM(Object) + ENUM_CLASS_ITEM(IDescriptable) + ENUM_CLASS_ITEM(Class) + ENUM_CLASS_ITEM(Interface) + ENUM_CLASS_ITEM(Primitive) + ENUM_CLASS_ITEM(Struct) + ENUM_CLASS_ITEM(FlagEnum) + ENUM_CLASS_ITEM(NormalEnum) + END_ENUM_ITEM(TypeDescriptorFlags) + + BEGIN_INTERFACE_MEMBER_NOPROXY(ITypeDescriptor) + CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeDescriptorFlags) + CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeName) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ValueType) + CLASS_MEMBER_PROPERTY_READONLY_FAST(EnumType) + CLASS_MEMBER_PROPERTY_READONLY_FAST(SerializableType) + CLASS_MEMBER_PROPERTY_READONLY_FAST(BaseTypeDescriptorCount) + CLASS_MEMBER_PROPERTY_READONLY_FAST(PropertyCount) + CLASS_MEMBER_PROPERTY_READONLY_FAST(EventCount) + CLASS_MEMBER_PROPERTY_READONLY_FAST(MethodGroupCount) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ConstructorGroup) + + CLASS_MEMBER_METHOD(GetBaseTypeDescriptor, { L"index" }) + CLASS_MEMBER_METHOD(CanConvertTo, { L"targetType" }) + CLASS_MEMBER_METHOD(GetProperty, { L"index" }) + CLASS_MEMBER_METHOD(IsPropertyExists, { L"name" _ L"inheritable" }) + CLASS_MEMBER_METHOD(GetPropertyByName, { L"name" _ L"inheritable" }) + CLASS_MEMBER_METHOD(GetEvent, { L"index" }) + CLASS_MEMBER_METHOD(IsEventExists, { L"name" _ L"inheritable" }) + CLASS_MEMBER_METHOD(GetEventByName, { L"name" _ L"inheritable" }) + CLASS_MEMBER_METHOD(GetMethodGroup, { L"index" }) + CLASS_MEMBER_METHOD(IsMethodGroupExists, { L"name" _ L"inheritable" }) + CLASS_MEMBER_METHOD(GetMethodGroupByName, { L"name" _ L"inheritable" }) + + CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptorCount, NO_PARAMETER, vint(*)(), vl::reflection::description::ITypeDescriptor_GetTypeDescriptorCount) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptor, { L"index" }, ITypeDescriptor*(*)(vint), vl::reflection::description::ITypeDescriptor_GetTypeDescriptor) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptor, { L"name" }, ITypeDescriptor*(*)(const WString&), vl::reflection::description::ITypeDescriptor_GetTypeDescriptor) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetTypeDescriptor, { L"value" }, ITypeDescriptor*(*)(const Value&), vl::reflection::description::ITypeDescriptor_GetTypeDescriptor) + END_INTERFACE_MEMBER(ITypeDescriptor) +#undef _ + + class PredefinedTypeLoader : public Object, public ITypeLoader + { + public: + void Load(ITypeManager* manager)override + { + manager->SetTypeDescriptor(TypeInfo::content.typeName, new TypedValueTypeDescriptorBase); +#define ADD_PRIMITIVE_TYPE(TYPE) manager->SetTypeDescriptor(TypeInfo::content.typeName, new PrimitiveTypeDescriptor()); + REFLECTION_PREDEFINED_PRIMITIVE_TYPES(ADD_PRIMITIVE_TYPE) +#undef ADD_PRIMITIVE_TYPE + REFLECTION_PREDEFINED_COMPLEX_TYPES(ADD_TYPE_INFO, VoidValue) + } + + void Unload(ITypeManager* manager)override + { + } + }; + +#endif + + bool LoadPredefinedTypes() + { +#ifndef VCZH_DEBUG_NO_REFLECTION + ITypeManager* manager = GetGlobalTypeManager(); + if (manager) + { + Ptr loader = new PredefinedTypeLoader; + return manager->AddTypeLoader(loader); + } +#endif + return false; + } + } + } +} + + +/*********************************************************************** +.\GUITYPEDESCRIPTOR_LOG.CPP +***********************************************************************/ + +namespace vl +{ + namespace reflection + { + namespace description + { + using namespace collections; + +#ifndef VCZH_DEBUG_NO_REFLECTION + +/*********************************************************************** +LogTypeManager (enum) +***********************************************************************/ + + void LogTypeManager_Enum(stream::TextWriter& writer, ITypeDescriptor* type) + { + writer.WriteLine((type->GetTypeDescriptorFlags() == TypeDescriptorFlags::FlagEnum ? L"flags " : L"enum ") + type->GetTypeName()); + writer.WriteLine(L"{"); + + auto enumType = type->GetEnumType(); + for (vint j = 0; j < enumType->GetItemCount(); j++) + { + writer.WriteLine(L" " + enumType->GetItemName(j) + L" = " + u64tow(enumType->GetItemValue(j)) + L","); + } + + writer.WriteLine(L"}"); + } + +/*********************************************************************** +LogTypeManager (struct) +***********************************************************************/ + + void LogTypeManager_Struct(stream::TextWriter& writer, ITypeDescriptor* type) + { + writer.WriteLine(L"struct " + type->GetTypeName()); + writer.WriteLine(L"{"); + for (vint j = 0; jGetPropertyCount(); j++) + { + IPropertyInfo* info = type->GetProperty(j); + writer.WriteLine(L" " + info->GetReturn()->GetTypeFriendlyName() + L" " + info->GetName() + L";"); + } + writer.WriteLine(L"}"); + } + +/*********************************************************************** +LogTypeManager (data) +***********************************************************************/ + + void LogTypeManager_Data(stream::TextWriter& writer, ITypeDescriptor* type) + { + writer.WriteLine(L"primitive " + type->GetTypeName() + L";"); + } + +/*********************************************************************** +LogTypeManager (class) +***********************************************************************/ + + void LogTypeManager_PrintEvents(stream::TextWriter& writer, ITypeDescriptor* type) + { + bool printed = false; + for (vint j = 0; jGetEventCount(); j++) + { + printed = true; + IEventInfo* info = type->GetEvent(j); + writer.WriteString(L" event " + info->GetHandlerType()->GetTypeFriendlyName() + L" " + info->GetName() + L"{"); + if (info->GetObservingPropertyCount()>0) + { + writer.WriteString(L" observing "); + vint count = +info->GetObservingPropertyCount(); + for (vint i = 0; i0) writer.WriteString(L", "); + writer.WriteString(info->GetObservingProperty(i)->GetName()); + } + writer.WriteString(L";"); + } + writer.WriteLine(L"};"); + } + if (printed) + { + writer.WriteLine(L""); + } + } + + void LogTypeManager_PrintProperties(stream::TextWriter& writer, ITypeDescriptor* type, List& propertyAccessors) + { + bool printed = false; + for (vint j = 0; jGetPropertyCount(); j++) + { + printed = true; + IPropertyInfo* info = type->GetProperty(j); + writer.WriteString(L" property " + info->GetReturn()->GetTypeFriendlyName() + L" " + info->GetName() + L"{"); + if (info->GetGetter()) + { + propertyAccessors.Add(info->GetGetter()); + writer.WriteString(L" getter " + info->GetGetter()->GetName() + L";"); + } + if (info->GetSetter()) + { + propertyAccessors.Add(info->GetSetter()); + writer.WriteString(L" setter " + info->GetSetter()->GetName() + L";"); + } + if (info->GetValueChangedEvent()) + { + writer.WriteString(L" raising " + info->GetValueChangedEvent()->GetName() + L";"); + } + writer.WriteLine(L"}"); + } + if (printed) + { + writer.WriteLine(L""); + } + } + + void LogTypeManager_PrintMethods(stream::TextWriter& writer, ITypeDescriptor* type, const List& propertyAccessors, bool isPropertyAccessor) + { + bool printed = false; + for (vint j = 0; jGetMethodGroupCount(); j++) + { + IMethodGroupInfo* group = type->GetMethodGroup(j); + for (vint k = 0; kGetMethodCount(); k++) + { + IMethodInfo* info = group->GetMethod(k); + if (propertyAccessors.Contains(info) == isPropertyAccessor) + { + printed = true; + writer.WriteString(WString(L" ") + (info->IsStatic() ? L"static " : L"") + (isPropertyAccessor ? L"accessor " : L"function ") + info->GetReturn()->GetTypeFriendlyName()); + writer.WriteString(L" " + info->GetName() + L"("); + for (vint l = 0; lGetParameterCount(); l++) + { + if (l>0) writer.WriteString(L", "); + IParameterInfo* parameter = info->GetParameter(l); + writer.WriteString(parameter->GetType()->GetTypeFriendlyName() + L" " + parameter->GetName()); + } + writer.WriteLine(L");"); + } + } + } + if (printed) + { + writer.WriteLine(L""); + } + } + + void LogTypeManager_PrintConstructors(stream::TextWriter& writer, ITypeDescriptor* type) + { + if (IMethodGroupInfo* group = type->GetConstructorGroup()) + { + for (vint k = 0; kGetMethodCount(); k++) + { + IMethodInfo* info = group->GetMethod(k); + writer.WriteString(L" constructor " + info->GetReturn()->GetTypeFriendlyName()); + writer.WriteString(L" " + info->GetName() + L"("); + for (vint l = 0; lGetParameterCount(); l++) + { + if (l>0) writer.WriteString(L", "); + IParameterInfo* parameter = info->GetParameter(l); + writer.WriteString(parameter->GetType()->GetTypeFriendlyName() + L" " + parameter->GetName()); + } + writer.WriteLine(L");"); + } + } + } + + void LogTypeManager_Class(stream::TextWriter& writer, ITypeDescriptor* type) + { + bool acceptProxy = false; + bool isInterface = (type->GetTypeDescriptorFlags() & TypeDescriptorFlags::InterfaceType) != TypeDescriptorFlags::Undefined; + writer.WriteString((isInterface ? L"interface " : L"class ") + type->GetTypeName()); + for (vint j = 0; jGetBaseTypeDescriptorCount(); j++) + { + writer.WriteString(j == 0 ? L" : " : L", "); + writer.WriteString(type->GetBaseTypeDescriptor(j)->GetTypeName()); + } + writer.WriteLine(L""); + writer.WriteLine(L"{"); + + List propertyAccessors; + LogTypeManager_PrintEvents(writer, type); + LogTypeManager_PrintProperties(writer, type, propertyAccessors); + LogTypeManager_PrintMethods(writer, type, propertyAccessors, false); + LogTypeManager_PrintMethods(writer, type, propertyAccessors, true); + LogTypeManager_PrintConstructors(writer, type); + + writer.WriteLine(L"}"); + } + +/*********************************************************************** +LogTypeManager +***********************************************************************/ + + bool IsInterfaceType(ITypeDescriptor* typeDescriptor, bool& acceptProxy) + { + bool containsConstructor = false; + if (IMethodGroupInfo* group = typeDescriptor->GetConstructorGroup()) + { + containsConstructor = group->GetMethodCount() > 0; + if (group->GetMethodCount() == 1) + { + if (IMethodInfo* info = group->GetMethod(0)) + { + if (info->GetParameterCount() == 1 && info->GetParameter(0)->GetType()->GetTypeDescriptor()->GetTypeName() == TypeInfo::content.typeName) + { + acceptProxy = true; + return true; + } + } + } + } + + if (!containsConstructor) + { + if (typeDescriptor->GetTypeName() == TypeInfo::content.typeName) + { + return true; + } + else + { + for (vint i = 0; i < typeDescriptor->GetBaseTypeDescriptorCount(); i++) + { + bool _acceptProxy = false; + if (!IsInterfaceType(typeDescriptor->GetBaseTypeDescriptor(i), _acceptProxy)) + { + return false; + } + } + const wchar_t* name = typeDescriptor->GetTypeName().Buffer(); + while (const wchar_t* next = ::wcschr(name, L':')) + { + name = next + 1; + } + return name[0] == L'I' && (L'A' <= name[1] && name[1] <= L'Z'); + } + } + return false; + } + + void LogTypeManager(stream::TextWriter& writer) + { + for (vint i = 0; i < GetGlobalTypeManager()->GetTypeDescriptorCount(); i++) + { + ITypeDescriptor* type = GetGlobalTypeManager()->GetTypeDescriptor(i); + + switch (type->GetTypeDescriptorFlags()) + { + case TypeDescriptorFlags::Object: + case TypeDescriptorFlags::IDescriptable: + case TypeDescriptorFlags::Class: + case TypeDescriptorFlags::Interface: + LogTypeManager_Class(writer, type); + break; + case TypeDescriptorFlags::FlagEnum: + case TypeDescriptorFlags::NormalEnum: + LogTypeManager_Enum(writer, type); + break; + case TypeDescriptorFlags::Primitive: + LogTypeManager_Data(writer, type); + break; + case TypeDescriptorFlags::Struct: + LogTypeManager_Struct(writer, type); + break; + default:; + } + writer.WriteLine(L""); + } + } + +#endif + } + } +} + diff --git a/Import/VlppReflection.h b/Import/VlppReflection.h new file mode 100644 index 00000000..6df1486f --- /dev/null +++ b/Import/VlppReflection.h @@ -0,0 +1,5469 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" + +/*********************************************************************** +.\GUITYPEDESCRIPTOR.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Reflection + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTOR +#define VCZH_REFLECTION_GUITYPEDESCRIPTOR + + +namespace vl +{ + namespace reflection + { + +/*********************************************************************** +Attribute +***********************************************************************/ + + namespace description + { + class ITypeDescriptor; + class ITypeInfo; + class IEventHandler; + class IEventInfo; + class IPropertyInfo; + class IParameterInfo; + class IMethodInfo; + class IMethodGroupInfo; + + class IValueFunctionProxy; + class IValueInterfaceProxy; + class IValueSubscription; + + class IValueEnumerable; + class IValueEnumerator; + class IValueReadonlyList; + class IValueList; + class IValueObservableList; + class IValueReadonlyDictionary; + class IValueDictionary; + + class IValueCallStack; + class IValueException; + + template + struct TypedValueSerializerProvider + { + }; + } + + /// Base class of all reflectable object. You can use pointer or smart pointer to DescriptableObject to define variables, but if you want to create a reflectable class, you should inherit from [T:vl.reflection.Description`1]. + class DescriptableObject + { + template + friend struct vl::ReferenceCounterOperator; + template + friend class Description; + + typedef collections::Dictionary> InternalPropertyMap; + typedef bool(*DestructorProc)(DescriptableObject* obj, bool forceDisposing); + private: + volatile vint referenceCounter; + +#ifndef VCZH_DEBUG_NO_REFLECTION + size_t objectSize; + description::ITypeDescriptor** typeDescriptor; +#endif + Ptr internalProperties; + +#ifndef VCZH_DEBUG_NO_REFLECTION + bool destructing; + DescriptableObject** aggregationInfo; + vint aggregationSize; +#endif + + protected: + DestructorProc sharedPtrDestructorProc; + + protected: + +#ifndef VCZH_DEBUG_NO_REFLECTION + bool IsAggregated(); + vint GetAggregationSize(); + DescriptableObject* GetAggregationRoot(); + void SetAggregationRoot(DescriptableObject* value); + DescriptableObject* GetAggregationParent(vint index); + void SetAggregationParent(vint index, DescriptableObject* value); + void SetAggregationParent(vint index, Ptr& value); + void InitializeAggregation(vint size); +#endif + void FinalizeAggregation(); + +#ifndef VCZH_DEBUG_NO_REFLECTION + template + void SafeAggregationCast(T*& result) + { + auto expected = dynamic_cast(this); + if (expected) + { + CHECK_ERROR(result == nullptr, L"vl::reflection::DescriptableObject::SafeAggregationCast()#Found multiple ways to do aggregation cast."); + result = expected; + } + if (IsAggregated()) + { + for (vint i = 0; i < aggregationSize; i++) + { + if (auto parent = GetAggregationParent(i)) + { + parent->SafeAggregationCast(result); + } + } + } + } +#endif + public: + DescriptableObject(); + virtual ~DescriptableObject(); + +#ifndef VCZH_DEBUG_NO_REFLECTION + /// Get the type descriptor that describe the real type of this object. + /// The real type. + description::ITypeDescriptor* GetTypeDescriptor(); +#endif + + /// Get an internal property of this object. This map is totally for customization. + /// Value of the internal property of this object. + /// Name of the property. + Ptr GetInternalProperty(const WString& name); + /// Set an internal property of this object. This map is totally for customization. + /// Name of the property. + /// Value of the internal property of this object. + void SetInternalProperty(const WString& name, Ptr value); + /// Try to delete this object. + /// Returns true if this operation succeeded. Returns false if the object refuces to be dispose. + /// Set to true to force disposing this object. If the reference counter is not 0 if you force disposing it, it will raise a [T:vl.reflection.description.ValueNotDisposableException]. + bool Dispose(bool forceDisposing); + +#ifndef VCZH_DEBUG_NO_REFLECTION + /// Get the aggregation root object. + /// The aggregation root object. If this object is not aggregated, or it is the root object of others, than this function return itself. + DescriptableObject* SafeGetAggregationRoot(); + +#endif + /// Cast the object to another type, considered aggregation. + /// The object with the expected type in all aggregated objects. + /// The expected type to cast. + template + T* SafeAggregationCast() + { +#ifndef VCZH_DEBUG_NO_REFLECTION + T* result = nullptr; + SafeGetAggregationRoot()->SafeAggregationCast(result); + return result; +#else + return dynamic_cast(this); +#endif + } + }; + + /// + /// { + /// ... + /// }; + /// + /// If you want YourClass to be inheritable in scripts, instead of using Description, you should use AggregatableDescription, like this: + /// class YourClass : public AggregatableDescription + /// { + /// ~YourClass() + /// { + /// FinalizeAggregation(); + /// } + /// }; + /// + /// After you have complete your type, use the following macros and functions to register your class into the global type table. Everything should be defined in vl::reflection::description namespaces. + /// Some of the predefined type has already been registered, if your types depend on these types, you should load those types by calling some or all of them: + /// [F:vl.reflection.description.LoadPredefinedTypes] + /// [F:vl.reflection.description.LoadParsingTypes] + /// [F:vl.reflection.description.JsonLoadTypes] + /// [F:vl.reflection.description.XmlLoadTypes] + /// + /// 1) (in header files) Create a macro that contains all types that you want to register. Content in the list will become the registered type names, so it is strongly recommended to use the full name. + /// #define MY_TYPELIST(F)\ + /// F(mynamespaces::MyClass1)\ + /// F(mynamespaces::MyClass2)\ + /// + /// 2) (in header files) Connect type names and types: + /// MY_TYPELIST(DECL_TYPE_INFO) + /// + /// 3) (in cpp files) Connect type names and types: + /// MY_TYPELIST(IMPL_VL_TYPE_INFO) + /// + /// 4) (in cpp files) Register all members: + /// + /// #define _ , + /// + /// a) enum: + /// use BEGIN_ENUM_ITEM_MERGABLE instead of BEGIN_ENUM_ITEM if enum items are consider mergable using "|". + /// + /// BEGIN_ENUM_ITEM(Season) + /// ENUM_ITEM(Spring) + /// ENUM_ITEM(Summer) + /// ENUM_ITEM(Autumn) + /// ENUM_ITEM(Winter) + /// END_ENUM_ITEM(Season) + /// + /// b) enum class: + /// use BEGIN_ENUM_ITEM_MERGABLE instead of BEGIN_ENUM_ITEM if enum items are consider mergable using "|". + /// + /// BEGIN_ENUM_ITEM(Season) + /// ENUM_CLASS_ITEM(Spring) + /// ENUM_CLASS_ITEM(Summer) + /// ENUM_CLASS_ITEM(Autumn) + /// ENUM_CLASS_ITEM(Winter) + /// END_ENUM_ITEM(Season) + /// + /// c) struct (pure data structure): + /// BEGIN_STRUCT_MEMBER(Point) + /// STRUCT_MEMBER(x) + /// STRUCT_MEMBER(y) + /// END_STRUCT_MEMBER(Point) + /// + /// d) class: + /// BEGIN_CLASS_MEMBER(MyClass) + /// + /// I) declare a base class (can have multiple base classes): + /// CLASS_MEMBER_BASE(MyBaseClass) + /// + /// II) declare a field: + /// CLASS_MEMBER_FIELD(myField) + /// + /// III) Empty constructor that results in a raw pointer: + /// CLASS_MEMBER_CONSTRUCTIOR(MyClass*(), NO_PARAMETER) + /// + /// IV) Empty constructor that results in a smart pointer: + /// CLASS_MEMBER_CONSTRUCTIOR(Ptr(), NO_PARAMETER) + /// + /// V) Constructor with arguments: + /// CLASS_MEMBER_CONSTRUCTOR(Ptr(int, const WString&), {L"numberParameter" _ L"stringParameter"}) + /// + /// VI) Inject a global function as a constructor + /// CLASS_MEMBER_EXTERNALCTOR(Ptr(int, const WString&), {L"numberParameter" _ L"stringParameter"}, mynamespace::CreateMyClass) + /// CLASS_MEMBER_EXTERNALCTOR_TEMPLATE(Ptr(int, const WString&), {L"numberParameter" _ L"stringParameter"}, CreateMyClass, L"mynamespace::GetMyClass($Arguments)", L"::vl::Func<$Func>(&mynamespace::GetMyClass)") + /// CLASS_MEMBER_EXTERNALCTOR_TEMPLATE(Ptr(), NO_PARAMETER, []()->Ptr{return nullptr;}, L"*", L"*") + /// + /// VII) Add unoverloaded functions + /// CLASS_MEMBER_METHOD(MyFunction1, NO_PARAMETER) + /// CLASS_MEMBER_METHOD(MyFunction2, {L"parameter1" _ L"parameter2"}) + /// + /// VIII) Add unoverloaded function but give a different names + /// CLASS_MEMBER_METHOD_RENAME(MyNewName1, MyFunction1, NO_PARAMETER) + /// CLASS_MEMBER_METHOD_RENAME(MyNewName2, MyFunction2, {L"parameter1" _ L"parameter2"}) + /// + /// IX) Add overloaded functions + /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction3, NO_PARAMETER, int(MyClass::*)()) + /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction3, {L"parameter"}, int(MyClass::*)(int)) + /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction3, {L"parameter1" _ L"parameter2"}, int(MyClass::*)(int, const WString&)) + /// + /// IX) Add overloaded functions but give different names + /// CLASS_MEMBER_METHOD_OVERLOAD_RENAME(MyNewName3, MyFunction3, NO_PARAMETER, int(MyClass::*)()) + /// CLASS_MEMBER_METHOD_OVERLOAD_RENAME(MyNewName4, MyFunction3, {L"parameter"}, int(MyClass::*)(int)) + /// CLASS_MEMBER_METHOD_OVERLOAD_RENAME(MyNewName4, MyFunction3, {L"parameter1" _ L"parameter2"}, int(MyClass::*)(int, const WString&)) + /// + /// X) Inject global functions as methods: + /// CLASS_MEMBER_EXTERNALMETHOD(MyNewName5, {L"parameter"}, int(MyClass::*)(int), mynamespace::AGlobalFunction) + /// CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(MyNewName5, {L"parameter1" _ L"parameter2"}, int(MyClass::*)(int, const WString&), [](MyClass* a, int b, const WString& c){return 0;}, L"*", L"*") + /// + /// XI) Add unoverloaded static functions + /// CLASS_MEMBER_STATIC_METHOD(MyFunction4, NO_PARAMETER) + /// CLASS_MEMBER_STATIC_METHOD(MyFunction5, {L"parameter1" _ L"parameter2"}) + /// + /// XII) Add overloaded static functions + /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction6, NO_PARAMETER, int(*)()) + /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction6, {L"parameter"}, int(*)(int)) + /// CLASS_MEMBER_METHOD_OVERLOAD(MyFunction6, {L"parameter1" _ L"parameter2"}, int(*)(int, const WString&)) + /// + /// XIII) Inject global functions as static methods: + /// CLASS_MEMBER_STATIC_EXTERNALMETHOD(MyNewName6, {L"parameter"}, int(*)(int), mynamespace::AGlobalFunction2) + /// CLASS_MEMBER_STATIC_EXTERNALMETHOD_INVOKETEMPLATE(MyNewName6, {L"parameter1" _ L"parameter2"}, int(*)(int, const WString&), [](int b, const WString& c){return 0;}, L"*") + /// + /// XIV) Add a getter function as a property + /// CLASS_MEMBER_PROPERTY_READONLY_FAST(X) + /// which is short for + /// CLASS_MEMBER_METHOD(GetX, NO_PARAMETER) + /// CLASS_MEMBER_PROPERTY_READONLY(X, GetX) + /// + /// XV) Add a pair of getter and setter functions as a property + /// CLASS_MEMBER_PROPERTY_FAST(X) + /// which is short for + /// CLASS_MEMBER_METHOD(GetX, NO_PARAMETER) + /// CLASS_MEMBER_METHOD(SetX, {L"value"}) + /// CLASS_MEMBER_PROPERTY(X, GetX, SetX) + /// + /// XVI) Add a getter function as a property with a property changed event + /// CLASS_MEMBER_EVENT(XChanged) + /// CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(X) + /// which is short for + /// CLASS_MEMBER_EVENT(XChanged) + /// CLASS_MEMBER_METHOD(GetX, NO_PARAMETER) + /// CLASS_MEMBER_PROPERTY_EVENT_READONLY(X, GetX, XChanged) + /// + /// XVII) Add a pair of getter and setter functions as a property with a property changed event + /// CLASS_MEMBER_EVENT(XChanged) + /// CLASS_MEMBER_PROPERTY_EVENT_FAST(X) + /// which is short for + /// CLASS_MEMBER_EVENT(XChanged) + /// CLASS_MEMBER_METHOD(GetX, NO_PARAMETER) + /// CLASS_MEMBER_METHOD(SetX, {L"value"}) + /// CLASS_MEMBER_PROPERTY_EVENT(X, GetX, SetX, XChanged) + /// + /// END_CLASS_MEMBER(MyClass) + /// + /// If the code compiles, the class should look like this: + /// class MyClass : public Description + /// { + /// public: + /// MyClass(); + /// MyClass(int numberParameter, const WString& stringParameter); + /// + /// int MyFunction1(); + /// int MyFunction2(int parameter1, const WString& parameter2); + /// int MyFunction3(); + /// int MyFunction3(int parameter); + /// int MyFunction3(int parameter1, const WString& parameter2); + /// + /// static int MyFunction4(); + /// static int MyFunction5(int parameter1, const WString& parameter2); + /// static int MyFunction6(); + /// static int MyFunction6(int parameter); + /// static int MyFunction6(int parameter1, const WString& parameter2); + /// + /// Event XChanged; + /// int GetX(); + /// void SetX(int value); + /// }; + /// + /// Ptr CreateMyClass(int numberParameter, const WString7 stringParameter); + /// int GlobalFunction(MyClass* self, int parameter); + /// + /// e) interface: + /// An interface is defined by + /// I) Directly or indirectly inherits [T:vl.reflection.IDescriptable] + /// II) The only registered constructor (if exists) should use Ptr<[T:vl.reflection.description.IValueInterfaceProxy]> as a parameter + /// + /// Suppose you have an interface like this: + /// class IMyInterface : public virtual IDescriptable, public Description + /// { + /// public: + /// int GetX(); + /// void SetX(int value); + /// }; + /// + /// If you want this interface implementable by Workflow script, you should first add a proxy like this: + /// #pragma warning(push) + /// #pragma warning(disable:4250) + /// BEGIN_INTERFACE_PROXY_NOPARENT_RAWPTR(IMyInterface) + /// or BEGIN_INTERFACE_PROXY_RAWPTR(IMyInterface, baseInterfaces...) + /// or BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IMyInterface) + /// or BEGIN_INTERFACE_PROXY_SHAREDPTR(IMyInterface, baseInterfaces...) + /// int GetX()override + /// { + /// INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetX) + /// } + /// + /// void SetX(int value)override + /// { + /// INVOKE_INTERFACE_PROXY(SetX, value) + /// } + /// END_INTERFACE_PROXY(IMyInterface) + /// #pragma warning(pop) + /// + /// And then use this code to register the interface: + /// BEGIN_INTERFACE_MEMBER(IMyInterface) + /// ... + /// END_INTERFACE_MEMBER(IMyInterface) + /// + /// Everything else is the same as registering classes. Use BEGIN_INTERFACE_MEMBER_NOPROXY to register an interface without a proxy, which means you cannot implement it in runtime dynamically. + /// + /// #undef _ + /// + /// 5) (in cpp files) Create a type loader: + /// class MyTypeLoader : public Object, public ITypeLoader + /// { + /// public: + /// void Load(ITypeManager* manager) + /// { + /// MY_TYPELIST(ADD_TYPE_INFO) + /// } + /// + /// void Unload(ITypeManager* manager) + /// { + /// } + /// }; + /// + /// 6) Load types when you think is a good timing using this code: + /// vl::reflection::description::GetGlobalTypeManager()->AddTypeLoader(new MyTypeLoader); + /// + /// ]]> + /// Type of your created reflection class. + template + class Description : public virtual DescriptableObject + { + protected: +#ifndef VCZH_DEBUG_NO_REFLECTION + static description::ITypeDescriptor* associatedTypeDescriptor; +#endif + public: + Description() + { +#ifndef VCZH_DEBUG_NO_REFLECTION + + if(objectSize + class AggregatableDescription : public Description + { + }; + +#ifndef VCZH_DEBUG_NO_REFLECTION + template + description::ITypeDescriptor* Description::associatedTypeDescriptor=0; +#endif + + /// Base types of all reflectable interfaces. All reflectable interface types should be virtual inherited. + class IDescriptable : public virtual Interface, public Description + { + public: + ~IDescriptable(){} + }; + +/*********************************************************************** +ReferenceCounterOperator +***********************************************************************/ + } + + template + struct ReferenceCounterOperator::YesNoType> + { + static __forceinline volatile vint* CreateCounter(T* reference) + { + reflection::DescriptableObject* obj=reference; +#ifndef VCZH_DEBUG_NO_REFLECTION + if (obj->IsAggregated()) + { + if (auto root = obj->GetAggregationRoot()) + { + return &root->referenceCounter; + } + } +#endif + return &obj->referenceCounter; + } + + static __forceinline void DeleteReference(volatile vint* counter, void* reference) + { + reflection::DescriptableObject* obj=(T*)reference; + obj->Dispose(false); + } + }; + + namespace reflection + { + + namespace description + { + +/*********************************************************************** +Value +***********************************************************************/ + + class IBoxedValue : public virtual IDescriptable, public Description + { + public: + enum CompareResult + { + Smaller, + Greater, + Equal, + NotComparable, + }; + + virtual Ptr Copy() = 0; + virtual CompareResult ComparePrimitive(Ptr boxedValue) = 0; + }; + + /// A type to store all values of reflectable types. + class Value : public Object + { + public: + /// Representing how the value is stored. + enum ValueType + { + /// The value is null. + Null, + /// The value stored using a raw pointer. + RawPtr, + /// The value stored using a smart pointer. + SharedPtr, + /// The value stored using a boxed value. + BoxedValue, + }; + protected: + ValueType valueType; + DescriptableObject* rawPtr; + Ptr sharedPtr; + Ptr boxedValue; +#ifndef VCZH_DEBUG_NO_REFLECTION + ITypeDescriptor* typeDescriptor; +#endif + + Value(DescriptableObject* value); + Value(Ptr value); + Value(Ptr value, ITypeDescriptor* associatedTypeDescriptor); + + vint Compare(const Value& a, const Value& b)const; + public: + Value(); + Value(const Value& value); + Value& operator=(const Value& value); + bool operator==(const Value& value)const { return Compare(*this, value) == 0; } + bool operator!=(const Value& value)const { return Compare(*this, value) != 0; } + bool operator<(const Value& value)const { return Compare(*this, value)<0; } + bool operator<=(const Value& value)const { return Compare(*this, value) <= 0; } + bool operator>(const Value& value)const { return Compare(*this, value)>0; } + bool operator>=(const Value& value)const { return Compare(*this, value) >= 0; } + + /// Get how the value is stored. + /// How the value is stored. + ValueType GetValueType()const; + /// Get the stored raw pointer if possible. + /// The stored raw pointer. Returns null if failed. + DescriptableObject* GetRawPtr()const; + /// Get the stored shared pointer if possible. + /// The stored shared pointer. Returns null if failed. + Ptr GetSharedPtr()const; + /// Get the stored text if possible. + /// The stored text. Returns empty if failed. + Ptr GetBoxedValue()const; + /// Get the real type of the stored object. + /// The real type. Returns null if the value is null. + + bool IsNull()const; +#ifndef VCZH_DEBUG_NO_REFLECTION + ITypeDescriptor* GetTypeDescriptor()const; + WString GetTypeFriendlyName()const; + bool CanConvertTo(ITypeDescriptor* targetType, ValueType targetValueType)const; + bool CanConvertTo(ITypeInfo* targetType)const; +#endif + + /// Store a raw pointer. + /// The boxed value. + /// The raw pointer to store. + static Value From(DescriptableObject* value); + /// Store a shared pointer. + /// The boxed value. + /// The shared pointer to store. + static Value From(Ptr value); + /// Store a text. + /// The boxed value. + /// The text to store. + /// The type that you expect to interpret the text. + static Value From(Ptr value, ITypeDescriptor* type); + +#ifndef VCZH_DEBUG_NO_REFLECTION + static IMethodInfo* SelectMethod(IMethodGroupInfo* methodGroup, collections::Array& arguments); + static Value Create(ITypeDescriptor* type); + static Value Create(ITypeDescriptor* type, collections::Array& arguments); + static Value Create(const WString& typeName); + static Value Create(const WString& typeName, collections::Array& arguments); + static Value InvokeStatic(const WString& typeName, const WString& name); + static Value InvokeStatic(const WString& typeName, const WString& name, collections::Array& arguments); + Value GetProperty(const WString& name)const; + void SetProperty(const WString& name, const Value& newValue); + Value Invoke(const WString& name)const; + Value Invoke(const WString& name, collections::Array& arguments)const; + Ptr AttachEvent(const WString& name, const Value& function)const; + bool DetachEvent(const WString& name, Ptr handler)const; +#endif + + /// Dispose the object is it is stored as a raw pointer. + /// Returns true if the object is disposed. Returns false if the object cannot be disposed. An exception will be thrown if the reference counter is not 0. + bool DeleteRawPtr(); + }; + +/*********************************************************************** +ValueType +***********************************************************************/ + + class IValueType : public virtual IDescriptable, public Description + { + public: + template + class TypedBox : public IBoxedValue + { + private: + template + static CompareResult ComparePrimitiveInternal(const U& a, const U& b, typename AcceptAlways::Compare)>::Type) + { + return TypedValueSerializerProvider::Compare(a, b); + } + + template + static CompareResult ComparePrimitiveInternal(const U& a, const U& b, double) + { +#if defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdynamic-class-memaccess" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdynamic-class-memaccess" +#endif + auto result = memcmp(&a, &b, sizeof(U)); +#if defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(__clang__) +#pragma clang diagnostic pop +#endif + if (result < 0) return IBoxedValue::Smaller; + if (result > 0) return IBoxedValue::Greater; + return IBoxedValue::Equal; + } + public: + T value; + + TypedBox() + :value{} + { + } + + TypedBox(const T& _value) + :value(_value) + { + } + + Ptr Copy()override + { + return new TypedBox(value); + } + + CompareResult ComparePrimitive(Ptr boxedValue)override + { + if (auto typedBox = boxedValue.Cast>()) + { + return ComparePrimitiveInternal(value, typedBox->value, (vint)0); + } + else + { + return IBoxedValue::NotComparable; + } + } + }; + + virtual Value CreateDefault() = 0; + virtual IBoxedValue::CompareResult Compare(const Value& a, const Value& b) = 0; + }; + + class IEnumType : public virtual IDescriptable, public Description + { + public: + virtual bool IsFlagEnum() = 0; + virtual vint GetItemCount() = 0; + virtual WString GetItemName(vint index) = 0; + virtual vuint64_t GetItemValue(vint index) = 0; + virtual vint IndexOfItem(WString name) = 0; + + virtual Value ToEnum(vuint64_t value) = 0; + virtual vuint64_t FromEnum(const Value& value) = 0; + }; + + class ISerializableType : public virtual IDescriptable, public Description + { + public: + virtual bool Serialize(const Value& input, WString& output) = 0; + virtual bool Deserialize(const WString& input, Value& output) = 0; + }; + +/*********************************************************************** +ITypeDescriptor (type) +***********************************************************************/ + + enum class TypeInfoHint + { + Normal, + LazyList, + Array, + List, + SortedList, + ObservableList, + Dictionary, + NativeCollectionReference, + }; + + class ITypeInfo : public virtual IDescriptable, public Description + { + public: + enum Decorator + { + RawPtr, + SharedPtr, + Nullable, + TypeDescriptor, + Generic, + }; + + virtual Decorator GetDecorator() = 0; + virtual TypeInfoHint GetHint() = 0; + virtual ITypeInfo* GetElementType() = 0; + virtual ITypeDescriptor* GetTypeDescriptor() = 0; + virtual vint GetGenericArgumentCount() = 0; + virtual ITypeInfo* GetGenericArgument(vint index) = 0; + virtual WString GetTypeFriendlyName() = 0; + }; + +/*********************************************************************** +ITypeDescriptor (basic) +***********************************************************************/ + + class IMemberInfo : public virtual IDescriptable, public Description + { + public: + virtual ITypeDescriptor* GetOwnerTypeDescriptor()=0; + virtual const WString& GetName()=0; + }; + +/*********************************************************************** +ITypeDescriptor (event) +***********************************************************************/ + + class IEventHandler : public virtual IDescriptable, public Description + { + public: + virtual bool IsAttached()=0; + }; + + class IEventInfo : public virtual IMemberInfo, public Description + { + public: + class ICpp : public virtual IDescriptable, public Description + { + public: + /* + Arguments: + $Name: Event name + $This: Expression for the "this" argument + $Handler: Event handler function / Event handler object + $Arguments: Expressions for arguments separated by ", " + Default (for Vlpp Event): + Attach: ::vl::__vwsn::EventAttach($This->$Name, $Handler) + Detach: ::vl::__vwsn::EventDetach($This->$Name, $Handler) + Invoke: ::vl::__vwsn::EventInvoke($This->$Name)($Arguments) + + GetInvokeTemplate() == L"*": + This event does not exist in C++ + */ + virtual const WString& GetAttachTemplate() = 0; + virtual const WString& GetDetachTemplate() = 0; + virtual const WString& GetInvokeTemplate() = 0; + }; + /* + Priority: + 1. Use ICpp + 2. Use Default + */ + virtual ICpp* GetCpp() = 0; + + virtual ITypeInfo* GetHandlerType()=0; + virtual vint GetObservingPropertyCount()=0; + virtual IPropertyInfo* GetObservingProperty(vint index)=0; + virtual Ptr Attach(const Value& thisObject, Ptr handler)=0; + virtual bool Detach(const Value& thisObject, Ptr handler)=0; + virtual void Invoke(const Value& thisObject, Ptr arguments)=0; + }; + +/*********************************************************************** +ITypeDescriptor (property) +***********************************************************************/ + + class IPropertyInfo : public virtual IMemberInfo, public Description + { + public: + class ICpp : public virtual IDescriptable, public Description + { + public: + /* + Arguments: + $Type: C++ full type name + $Name: Property name + $This: Expression for the "this" argument + Default: + Struct: $This.$Name + Class: $This->$Name + Example: + Token in syntax tree: $This->$Name.value + + GetReferenceTemplate() == L"*": + This property does not exist in C++ + */ + virtual const WString& GetReferenceTemplate() = 0; + }; + /* + Priority: + 1. Use ICpp + 2. Use ICpp from getter and setter + 3. Use default + */ + virtual ICpp* GetCpp() = 0; + + virtual bool IsReadable()=0; + virtual bool IsWritable()=0; + virtual ITypeInfo* GetReturn()=0; + virtual IMethodInfo* GetGetter()=0; + virtual IMethodInfo* GetSetter()=0; + virtual IEventInfo* GetValueChangedEvent()=0; + virtual Value GetValue(const Value& thisObject)=0; + virtual void SetValue(Value& thisObject, const Value& newValue)=0; + }; + +/*********************************************************************** +ITypeDescriptor (method) +***********************************************************************/ + + class IParameterInfo : public virtual IMemberInfo, public Description + { + public: + virtual ITypeInfo* GetType()=0; + virtual IMethodInfo* GetOwnerMethod()=0; + }; + + class IMethodInfo : public virtual IMemberInfo, public Description + { + public: + class ICpp : public virtual IDescriptable, public Description + { + public: + /* + Arguments: + $Type: C++ full type name + $Func: C++ function type (e.g. void(int)), object type not included for method + $Name: Method name + $This: Expression for the "this" argument; + $Arguments: Expressions for arguments separated by ", " + Default: + Constructor: new $Type($Arguments) + Static: $Type::$Name($Arguments) + Normal: $This->$Name($Arguments) + Example: + External constructor: ($Arguments) + External method: ($This, $Arguments) + Renamed method: $This->($Arguments) + + GetInvokeTemplate() == L"*": + This method does not exist in C++ + */ + virtual const WString& GetInvokeTemplate() = 0; + virtual const WString& GetClosureTemplate() = 0; + }; + /* + Priority: + 1. Use ICpp + 2. Use default + */ + virtual ICpp* GetCpp() = 0; + + virtual IMethodGroupInfo* GetOwnerMethodGroup()=0; + virtual IPropertyInfo* GetOwnerProperty()=0; + virtual vint GetParameterCount()=0; + virtual IParameterInfo* GetParameter(vint index)=0; + virtual ITypeInfo* GetReturn()=0; + virtual bool IsStatic()=0; + virtual void CheckArguments(collections::Array& arguments)=0; + virtual Value Invoke(const Value& thisObject, collections::Array& arguments)=0; + virtual Value CreateFunctionProxy(const Value& thisObject) = 0; + }; + + class IMethodGroupInfo : public virtual IMemberInfo, public Description + { + public: + virtual vint GetMethodCount()=0; + virtual IMethodInfo* GetMethod(vint index)=0; + }; + +/*********************************************************************** +ITypeDescriptor +***********************************************************************/ + + enum class TypeDescriptorFlags : vint + { + Undefined = 0, + Object = 1<<0, + IDescriptable = 1<<1, + Class = 1<<2, + Interface = 1<<3, + Primitive = 1<<4, + Struct = 1<<5, + FlagEnum = 1<<6, + NormalEnum = 1<<7, + + ClassType = Object | Class, + InterfaceType = IDescriptable | Interface, + ReferenceType = ClassType | InterfaceType, + EnumType = FlagEnum | NormalEnum, + StructType = Primitive | Struct, + }; + + inline TypeDescriptorFlags operator&(TypeDescriptorFlags a, TypeDescriptorFlags b) + { + return (TypeDescriptorFlags)((vint)a & (vint)b); + } + + inline TypeDescriptorFlags operator|(TypeDescriptorFlags a, TypeDescriptorFlags b) + { + return (TypeDescriptorFlags)((vint)a | (vint)b); + } + + class ITypeDescriptor : public virtual IDescriptable, public Description + { + public: + class ICpp : public virtual IDescriptable, public Description + { + public: + /* + Default: refer to TypeInfoContent::VlppType + + GetFullName() == L"*": + This type does not exist in C++ + */ + virtual const WString& GetFullName() = 0; + }; + /* + Priority: + 1. Use ICpp + 2. Use default + */ + virtual ICpp* GetCpp() = 0; + + virtual TypeDescriptorFlags GetTypeDescriptorFlags() = 0; + virtual bool IsAggregatable() = 0; + virtual const WString& GetTypeName() = 0; + + virtual IValueType* GetValueType() = 0; + virtual IEnumType* GetEnumType() = 0; + virtual ISerializableType* GetSerializableType() = 0; + + virtual vint GetBaseTypeDescriptorCount() = 0; + virtual ITypeDescriptor* GetBaseTypeDescriptor(vint index) = 0; + virtual bool CanConvertTo(ITypeDescriptor* targetType) = 0; + + virtual vint GetPropertyCount() = 0; + virtual IPropertyInfo* GetProperty(vint index) = 0; + virtual bool IsPropertyExists(const WString& name, bool inheritable) = 0; + virtual IPropertyInfo* GetPropertyByName(const WString& name, bool inheritable) = 0; + + virtual vint GetEventCount() = 0; + virtual IEventInfo* GetEvent(vint index) = 0; + virtual bool IsEventExists(const WString& name, bool inheritable) = 0; + virtual IEventInfo* GetEventByName(const WString& name, bool inheritable) = 0; + + virtual vint GetMethodGroupCount() = 0; + virtual IMethodGroupInfo* GetMethodGroup(vint index) = 0; + virtual bool IsMethodGroupExists(const WString& name, bool inheritable) = 0; + virtual IMethodGroupInfo* GetMethodGroupByName(const WString& name, bool inheritable) = 0; + virtual IMethodGroupInfo* GetConstructorGroup() = 0; + }; + +#ifndef VCZH_DEBUG_NO_REFLECTION + +/*********************************************************************** +ITypeManager +***********************************************************************/ + + class ITypeManager; + + class ITypeLoader : public virtual Interface + { + public: + virtual void Load(ITypeManager* manager)=0; + virtual void Unload(ITypeManager* manager)=0; + }; + + class ITypeManager : public virtual Interface + { + public: + virtual vint GetTypeDescriptorCount()=0; + virtual ITypeDescriptor* GetTypeDescriptor(vint index)=0; + virtual ITypeDescriptor* GetTypeDescriptor(const WString& name)=0; + virtual bool SetTypeDescriptor(const WString& name, Ptr typeDescriptor)=0; + + virtual bool AddTypeLoader(Ptr typeLoader)=0; + virtual bool RemoveTypeLoader(Ptr typeLoader)=0; + virtual bool Load()=0; + virtual bool Unload()=0; + virtual bool Reload()=0; + virtual bool IsLoaded()=0; + virtual ITypeDescriptor* GetRootType()=0; + }; + + extern ITypeManager* GetGlobalTypeManager(); + extern bool DestroyGlobalTypeManager(); + extern bool ResetGlobalTypeManager(); + extern ITypeDescriptor* GetTypeDescriptor(const WString& name); + extern bool IsInterfaceType(ITypeDescriptor* typeDescriptor, bool& acceptProxy); + extern void LogTypeManager(stream::TextWriter& writer); + +/*********************************************************************** +Cpp Helper Functions +***********************************************************************/ + + extern WString CppGetFullName(ITypeDescriptor* type); + extern WString CppGetReferenceTemplate(IPropertyInfo* prop); + extern WString CppGetClosureTemplate(IMethodInfo* method); + extern WString CppGetInvokeTemplate(IMethodInfo* method); + extern WString CppGetAttachTemplate(IEventInfo* ev); + extern WString CppGetDetachTemplate(IEventInfo* ev); + extern WString CppGetInvokeTemplate(IEventInfo* ev); + + extern bool CppExists(ITypeDescriptor* type); + extern bool CppExists(IPropertyInfo* prop); + extern bool CppExists(IMethodInfo* method); + extern bool CppExists(IEventInfo* ev); + +#endif + +/*********************************************************************** +Exceptions +***********************************************************************/ + + class TypeDescriptorException abstract : public Exception + { + public: + TypeDescriptorException(const WString& message) + :Exception(message) + { + } + }; + + class ValueNotDisposableException : public TypeDescriptorException + { + public: + ValueNotDisposableException() + :TypeDescriptorException(L"Cannot dispose an object whose reference counter is not 0.") + { + } + }; + +#ifndef VCZH_DEBUG_NO_REFLECTION + + class TypeNotExistsException : public TypeDescriptorException + { + public: + TypeNotExistsException(const WString& name) + :TypeDescriptorException(L"Cannot find the type \""+name+L"\".") + { + } + }; + + class ConstructorNotExistsException : public TypeDescriptorException + { + public: + ConstructorNotExistsException(ITypeDescriptor* type) + :TypeDescriptorException(L"Cannot find any constructor in type \"" + type->GetTypeName() + L"\".") + { + } + }; + + class MemberNotExistsException : public TypeDescriptorException + { + public: + MemberNotExistsException(const WString& name, ITypeDescriptor* type) + :TypeDescriptorException(L"Cannot find the member \"" + name + L"\" in type \"" + type->GetTypeName() + L"\".") + { + } + }; + + class PropertyIsNotReadableException : public TypeDescriptorException + { + public: + PropertyIsNotReadableException(IPropertyInfo* propertyInfo) + :TypeDescriptorException(L"Cannot read value from a property \"" + propertyInfo->GetName() + L"\" that is not readable in type \"" + propertyInfo->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") + { + } + }; + + class PropertyIsNotWritableException : public TypeDescriptorException + { + public: + PropertyIsNotWritableException(IPropertyInfo* propertyInfo) + :TypeDescriptorException(L"Cannot write value to a property \"" + propertyInfo->GetName() + L"\" that is not writable in type \"" + propertyInfo->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") + { + } + }; + + class ArgumentNullException : public TypeDescriptorException + { + public: + ArgumentNullException(const WString& name, const WString& member) + :TypeDescriptorException(L"Argument \"" + name + L"\" cannot be null when accessing its member \"" + member + L"\".") + { + } + + ArgumentNullException(const WString& name, IMethodInfo* target) + :TypeDescriptorException(L"Argument \"" + name + L"\" cannot be null when invoking method \"" + target->GetName() + L"\" in type \"" + target->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") + { + } + + ArgumentNullException(const WString& name, IEventInfo* target) + :TypeDescriptorException(L"Argument \"" + name + L"\" cannot be null when accessing event \"" + target->GetName() + L"\" in type \"" + target->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") + { + } + + ArgumentNullException(const WString& name, IPropertyInfo* target) + :TypeDescriptorException(L"Argument \"" + name + L"\" cannot be null when invoking property \"" + target->GetName() + L"\" in type \"" + target->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") + { + } + }; + + class ArgumentTypeMismtatchException : public TypeDescriptorException + { + public: + ArgumentTypeMismtatchException(const WString& name, ITypeInfo* expected, const Value& actual) + :TypeDescriptorException(L"Argument \"" + name + L"\" cannot convert from \"" + actual.GetTypeFriendlyName() + L"\" to \"" + expected->GetTypeFriendlyName() + L"\".") + { + } + + ArgumentTypeMismtatchException(const WString& name, ITypeDescriptor* type, Value::ValueType valueType, const Value& actual) + :TypeDescriptorException(L"Argument \"" + name + L"\" cannot convert from \"" + actual.GetTypeFriendlyName() + L"\" to \"" + + (valueType == Value::SharedPtr ? L"Ptr<" : L"") + type->GetTypeName() + (valueType == Value::SharedPtr ? L">" : valueType == Value::RawPtr ? L"*" : L"") + + L"\".") + { + } + }; + + class ArgumentCountMismtatchException : public TypeDescriptorException + { + public: + ArgumentCountMismtatchException() + :TypeDescriptorException(L"Argument count does not match the definition.") + { + } + + ArgumentCountMismtatchException(IMethodGroupInfo* target) + :TypeDescriptorException(L"Argument count does not match the definition when invoking method \"" + target->GetName() + L"\" in type \"" + target->GetOwnerTypeDescriptor()->GetTypeName() + L"\".") + { + } + }; + +#endif + } + } +} + +#endif + +/*********************************************************************** +.\GUITYPEDESCRIPTORPREDEFINED.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Reflection + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORPREDEFINED +#define VCZH_REFLECTION_GUITYPEDESCRIPTORPREDEFINED + +#include + +namespace vl +{ + namespace reflection + { + namespace description + { + struct VoidValue {}; + +/*********************************************************************** +Collections +***********************************************************************/ + + class IValueEnumerator : public virtual IDescriptable, public Description + { + public: + virtual Value GetCurrent() = 0; + virtual vint GetIndex() = 0; + virtual bool Next() = 0; + }; + + class IValueEnumerable : public virtual IDescriptable, public Description + { + public: + virtual Ptr CreateEnumerator() = 0; + + static Ptr Create(collections::LazyList values); + }; + + class IValueReadonlyList : public virtual IValueEnumerable, public Description + { + public: + virtual vint GetCount() = 0; + virtual Value Get(vint index) = 0; + virtual bool Contains(const Value& value) = 0; + virtual vint IndexOf(const Value& value) = 0; + }; + + class IValueList : public virtual IValueReadonlyList, public Description + { + public: + virtual void Set(vint index, const Value& value) = 0; + virtual vint Add(const Value& value) = 0; + virtual vint Insert(vint index, const Value& value) = 0; + virtual bool Remove(const Value& value) = 0; + virtual bool RemoveAt(vint index) = 0; + virtual void Clear() = 0; + + static Ptr Create(); + static Ptr Create(Ptr values); + static Ptr Create(collections::LazyList values); + }; + + class IValueObservableList : public virtual IValueList, public Description + { + typedef void ItemChangedProc(vint index, vint oldCount, vint newCount); + public: + Event ItemChanged; + + static Ptr Create(); + static Ptr Create(Ptr values); + static Ptr Create(collections::LazyList values); + }; + + class IValueReadonlyDictionary : public virtual IDescriptable, public Description + { + public: + virtual Ptr GetKeys() = 0; + virtual Ptr GetValues() = 0; + virtual vint GetCount() = 0; + virtual Value Get(const Value& key) = 0; + }; + + class IValueDictionary : public virtual IValueReadonlyDictionary, public Description + { + public: + virtual void Set(const Value& key, const Value& value) = 0; + virtual bool Remove(const Value& key) = 0; + virtual void Clear() = 0; + + static Ptr Create(); + static Ptr Create(Ptr values); + static Ptr Create(collections::LazyList> values); + }; + +/*********************************************************************** +Interface Implementation Proxy +***********************************************************************/ + + class IValueInterfaceProxy : public virtual IDescriptable, public Description + { + public: + virtual Value Invoke(IMethodInfo* methodInfo, Ptr arguments) = 0; + }; + + class IValueFunctionProxy : public virtual IDescriptable, public Description + { + public: + virtual Value Invoke(Ptr arguments) = 0; + }; + + class IValueSubscription : public virtual IDescriptable, public Description + { + typedef void ValueChangedProc(const Value& newValue); + public: + Event ValueChanged; + + virtual bool Open() = 0; + virtual bool Update() = 0; + virtual bool Close() = 0; + }; + +/*********************************************************************** +Interface Implementation Proxy (Implement) +***********************************************************************/ + + class ValueInterfaceRoot : public virtual IDescriptable + { + protected: + Ptr proxy; + + void SetProxy(Ptr value) + { + proxy = value; + } + public: + Ptr GetProxy() + { + return proxy; + } + }; + + template + class ValueInterfaceProxy + { + }; + +#pragma warning(push) +#pragma warning(disable:4250) + template + class ValueInterfaceImpl : public virtual ValueInterfaceRoot, public virtual TInterface, public ValueInterfaceProxy... + { + public: + ~ValueInterfaceImpl() + { + FinalizeAggregation(); + } + }; +#pragma warning(pop) + +/*********************************************************************** +Runtime Exception +***********************************************************************/ + + class IValueCallStack : public virtual IDescriptable, public Description + { + public: + virtual Ptr GetLocalVariables() = 0; + virtual Ptr GetLocalArguments() = 0; + virtual Ptr GetCapturedVariables() = 0; + virtual Ptr GetGlobalVariables() = 0; + virtual WString GetFunctionName() = 0; + virtual WString GetSourceCodeBeforeCodegen() = 0; + virtual WString GetSourceCodeAfterCodegen() = 0; + virtual vint GetRowBeforeCodegen() = 0; + virtual vint GetRowAfterCodegen() = 0; + }; + + class IValueException : public virtual IDescriptable, public Description + { + public: +#pragma push_macro("GetMessage") +#if defined GetMessage +#undef GetMessage +#endif + virtual WString GetMessage() = 0; +#pragma pop_macro("GetMessage") + virtual bool GetFatal() = 0; + virtual Ptr GetCallStack() = 0; + + static Ptr Create(const WString& message); + }; + } + } +} + +#endif + + +/*********************************************************************** +.\GUITYPEDESCRIPTORBUILDER.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Reflection + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER +#define VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER + + +namespace vl +{ + namespace collections + { + template + class ObservableList; + } + + namespace reflection + { + namespace description + { + +#ifndef VCZH_DEBUG_NO_REFLECTION + +/*********************************************************************** +TypeInfo +***********************************************************************/ + +#define DECL_TYPE_INFO(TYPENAME) template<>struct TypeInfo{ static const TypeInfoContent content; }; +#define IMPL_VL_TYPE_INFO(TYPENAME) const TypeInfoContent TypeInfo::content = { L ## #TYPENAME, nullptr, TypeInfoContent::VlppType }; +#define IMPL_CPP_TYPE_INFO(TYPENAME) const TypeInfoContent TypeInfo::content = { L ## #TYPENAME, nullptr, TypeInfoContent::CppType }; +#define IMPL_TYPE_INFO_RENAME(TYPENAME, EXPECTEDNAME) const TypeInfoContent TypeInfo::content = { L ## #EXPECTEDNAME, L ## #TYPENAME, TypeInfoContent::Renamed }; + + struct TypeInfoContent + { + enum TypeInfoCppName + { + VlppType, // vl:: + CppType, // + Renamed, // CppFullTypeName + }; + + const wchar_t* typeName; + const wchar_t* cppFullTypeName; + TypeInfoCppName cppName; + }; + + template + struct TypeInfo + { + }; + + template + ITypeDescriptor* GetTypeDescriptor() + { + return GetTypeDescriptor(TypeInfo::content.typeName); + } + +/*********************************************************************** +SerializableTypeDescriptor +***********************************************************************/ + + class TypeDescriptorImplBase : public Object, public ITypeDescriptor, private ITypeDescriptor::ICpp + { + private: + TypeDescriptorFlags typeDescriptorFlags; + const TypeInfoContent* typeInfoContent; + WString typeName; + WString cppFullTypeName; + + const WString& GetFullName()override; + + protected: + const TypeInfoContent* GetTypeInfoContentInternal(); + + public: + TypeDescriptorImplBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent); + ~TypeDescriptorImplBase(); + + ITypeDescriptor::ICpp* GetCpp()override; + TypeDescriptorFlags GetTypeDescriptorFlags()override; + const WString& GetTypeName()override; + }; + + class ValueTypeDescriptorBase : public TypeDescriptorImplBase + { + protected: + bool loaded; + Ptr valueType; + Ptr enumType; + Ptr serializableType; + + virtual void LoadInternal();; + void Load(); + public: + ValueTypeDescriptorBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent); + ~ValueTypeDescriptorBase(); + + bool IsAggregatable()override; + IValueType* GetValueType()override; + IEnumType* GetEnumType()override; + ISerializableType* GetSerializableType()override; + + vint GetBaseTypeDescriptorCount()override; + ITypeDescriptor* GetBaseTypeDescriptor(vint index)override; + bool CanConvertTo(ITypeDescriptor* targetType)override; + vint GetPropertyCount()override; + IPropertyInfo* GetProperty(vint index)override; + bool IsPropertyExists(const WString& name, bool inheritable)override; + IPropertyInfo* GetPropertyByName(const WString& name, bool inheritable)override; + vint GetEventCount()override; + IEventInfo* GetEvent(vint index)override; + bool IsEventExists(const WString& name, bool inheritable)override; + IEventInfo* GetEventByName(const WString& name, bool inheritable)override; + vint GetMethodGroupCount()override; + IMethodGroupInfo* GetMethodGroup(vint index)override; + bool IsMethodGroupExists(const WString& name, bool inheritable)override; + IMethodGroupInfo* GetMethodGroupByName(const WString& name, bool inheritable)override; + IMethodGroupInfo* GetConstructorGroup()override; + }; + + template + class TypedValueTypeDescriptorBase : public ValueTypeDescriptorBase + { + public: + TypedValueTypeDescriptorBase() + :ValueTypeDescriptorBase(TDFlags, &TypeInfo::content) + { + } + }; + +/*********************************************************************** +TypeInfoImp +***********************************************************************/ + + class TypeDescriptorTypeInfo : public Object, public ITypeInfo + { + protected: + ITypeDescriptor* typeDescriptor; + TypeInfoHint hint; + + public: + TypeDescriptorTypeInfo(ITypeDescriptor* _typeDescriptor, TypeInfoHint _hint); + ~TypeDescriptorTypeInfo(); + + Decorator GetDecorator()override; + TypeInfoHint GetHint()override; + ITypeInfo* GetElementType()override; + ITypeDescriptor* GetTypeDescriptor()override; + vint GetGenericArgumentCount()override; + ITypeInfo* GetGenericArgument(vint index)override; + WString GetTypeFriendlyName()override; + }; + + class DecoratedTypeInfo : public Object, public ITypeInfo + { + protected: + Ptr elementType; + + public: + DecoratedTypeInfo(Ptr _elementType); + ~DecoratedTypeInfo(); + + TypeInfoHint GetHint()override; + ITypeInfo* GetElementType()override; + ITypeDescriptor* GetTypeDescriptor()override; + vint GetGenericArgumentCount()override; + ITypeInfo* GetGenericArgument(vint index)override; + }; + + class RawPtrTypeInfo : public DecoratedTypeInfo + { + public: + RawPtrTypeInfo(Ptr _elementType); + ~RawPtrTypeInfo(); + + Decorator GetDecorator()override; + WString GetTypeFriendlyName()override; + }; + + class SharedPtrTypeInfo : public DecoratedTypeInfo + { + public: + SharedPtrTypeInfo(Ptr _elementType); + ~SharedPtrTypeInfo(); + + Decorator GetDecorator()override; + WString GetTypeFriendlyName()override; + }; + + class NullableTypeInfo : public DecoratedTypeInfo + { + public: + NullableTypeInfo(Ptr _elementType); + ~NullableTypeInfo(); + + Decorator GetDecorator()override; + WString GetTypeFriendlyName()override; + }; + + class GenericTypeInfo : public DecoratedTypeInfo + { + protected: + collections::List> genericArguments; + + public: + GenericTypeInfo(Ptr _elementType); + ~GenericTypeInfo(); + + Decorator GetDecorator()override; + vint GetGenericArgumentCount()override; + ITypeInfo* GetGenericArgument(vint index)override; + WString GetTypeFriendlyName()override; + + void AddGenericArgument(Ptr value); + }; + +/*********************************************************************** +ParameterInfoImpl +***********************************************************************/ + + class ParameterInfoImpl : public Object, public IParameterInfo + { + protected: + IMethodInfo* ownerMethod; + WString name; + Ptr type; + public: + ParameterInfoImpl(IMethodInfo* _ownerMethod, const WString& _name, Ptr _type); + ~ParameterInfoImpl(); + + ITypeDescriptor* GetOwnerTypeDescriptor()override; + const WString& GetName()override; + ITypeInfo* GetType()override; + IMethodInfo* GetOwnerMethod()override; + }; + +/*********************************************************************** +MethodInfoImpl +***********************************************************************/ + + class MethodInfoImpl : public Object, public IMethodInfo + { + friend class PropertyInfoImpl; + protected: + IMethodGroupInfo* ownerMethodGroup; + IPropertyInfo* ownerProperty; + collections::List> parameters; + Ptr returnInfo; + bool isStatic; + + virtual Value InvokeInternal(const Value& thisObject, collections::Array& arguments)=0; + virtual Value CreateFunctionProxyInternal(const Value& thisObject) = 0; + public: + MethodInfoImpl(IMethodGroupInfo* _ownerMethodGroup, Ptr _return, bool _isStatic); + ~MethodInfoImpl(); + + ITypeDescriptor* GetOwnerTypeDescriptor()override; + IPropertyInfo* GetOwnerProperty()override; + const WString& GetName()override; + IMethodGroupInfo* GetOwnerMethodGroup()override; + vint GetParameterCount()override; + IParameterInfo* GetParameter(vint index)override; + ITypeInfo* GetReturn()override; + bool IsStatic()override; + void CheckArguments(collections::Array& arguments)override; + Value Invoke(const Value& thisObject, collections::Array& arguments)override; + Value CreateFunctionProxy(const Value& thisObject)override; + bool AddParameter(Ptr parameter); + bool SetOwnerMethodgroup(IMethodGroupInfo* _ownerMethodGroup); + }; + +/*********************************************************************** +MethodGroupInfoImpl +***********************************************************************/ + + class MethodGroupInfoImpl : public Object, public IMethodGroupInfo + { + protected: + ITypeDescriptor* ownerTypeDescriptor; + WString name; + collections::List> methods; + public: + MethodGroupInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name); + ~MethodGroupInfoImpl(); + + ITypeDescriptor* GetOwnerTypeDescriptor()override; + const WString& GetName()override; + vint GetMethodCount()override; + IMethodInfo* GetMethod(vint index)override; + bool AddMethod(Ptr _method); + }; + +/*********************************************************************** +EventInfoImpl +***********************************************************************/ + + class EventInfoImpl : public Object, public IEventInfo + { + friend class PropertyInfoImpl; + + protected: + ITypeDescriptor* ownerTypeDescriptor; + collections::List observingProperties; + WString name; + Ptr handlerType; + + virtual Ptr AttachInternal(DescriptableObject* thisObject, Ptr handler)=0; + virtual bool DetachInternal(DescriptableObject* thisObject, Ptr handler)=0; + virtual void InvokeInternal(DescriptableObject* thisObject, Ptr arguments)=0; + virtual Ptr GetHandlerTypeInternal()=0; + public: + EventInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name); + ~EventInfoImpl(); + + ITypeDescriptor* GetOwnerTypeDescriptor()override; + const WString& GetName()override; + ITypeInfo* GetHandlerType()override; + vint GetObservingPropertyCount()override; + IPropertyInfo* GetObservingProperty(vint index)override; + Ptr Attach(const Value& thisObject, Ptr handler)override; + bool Detach(const Value& thisObject, Ptr handler)override; + void Invoke(const Value& thisObject, Ptr arguments)override; + }; + +/*********************************************************************** +TypeDescriptorImpl +***********************************************************************/ + + class PropertyInfoImpl : public Object, public IPropertyInfo + { + protected: + ITypeDescriptor* ownerTypeDescriptor; + WString name; + Ptr cpp; + MethodInfoImpl* getter; + MethodInfoImpl* setter; + EventInfoImpl* valueChangedEvent; + + public: + PropertyInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, MethodInfoImpl* _getter, MethodInfoImpl* _setter, EventInfoImpl* _valueChangedEvent); + ~PropertyInfoImpl(); + + ITypeDescriptor* GetOwnerTypeDescriptor()override; + const WString& GetName()override; + IPropertyInfo::ICpp* GetCpp()override; + + bool IsReadable()override; + bool IsWritable()override; + ITypeInfo* GetReturn()override; + IMethodInfo* GetGetter()override; + IMethodInfo* GetSetter()override; + IEventInfo* GetValueChangedEvent()override; + Value GetValue(const Value& thisObject)override; + void SetValue(Value& thisObject, const Value& newValue)override; + }; + + class PropertyInfoImpl_StaticCpp : public PropertyInfoImpl, private IPropertyInfo::ICpp + { + private: + WString referenceTemplate; + + const WString& GetReferenceTemplate()override; + + public: + PropertyInfoImpl_StaticCpp(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, MethodInfoImpl* _getter, MethodInfoImpl* _setter, EventInfoImpl* _valueChangedEvent, const WString& _referenceTemplate); + ~PropertyInfoImpl_StaticCpp(); + + IPropertyInfo::ICpp* GetCpp()override; + }; + +/*********************************************************************** +FieldInfoImpl +***********************************************************************/ + + class FieldInfoImpl : public Object, public IPropertyInfo + { + protected: + ITypeDescriptor* ownerTypeDescriptor; + Ptr returnInfo; + WString name; + + virtual Value GetValueInternal(const Value& thisObject)=0; + virtual void SetValueInternal(Value& thisObject, const Value& newValue)=0; + public: + FieldInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, Ptr _returnInfo); + ~FieldInfoImpl(); + + ITypeDescriptor* GetOwnerTypeDescriptor()override; + const WString& GetName()override; + bool IsReadable()override; + bool IsWritable()override; + ITypeInfo* GetReturn()override; + IMethodInfo* GetGetter()override; + IMethodInfo* GetSetter()override; + IEventInfo* GetValueChangedEvent()override; + Value GetValue(const Value& thisObject)override; + void SetValue(Value& thisObject, const Value& newValue)override; + }; + +/*********************************************************************** +TypeDescriptorImpl +***********************************************************************/ + + class TypeDescriptorImpl : public TypeDescriptorImplBase + { + private: + bool loaded; + collections::List baseTypeDescriptors; + collections::Dictionary> properties; + collections::Dictionary> events; + collections::Dictionary> methodGroups; + Ptr constructorGroup; + + protected: + MethodGroupInfoImpl* PrepareMethodGroup(const WString& name); + MethodGroupInfoImpl* PrepareConstructorGroup(); + IPropertyInfo* AddProperty(Ptr value); + IEventInfo* AddEvent(Ptr value); + IMethodInfo* AddMethod(const WString& name, Ptr value); + IMethodInfo* AddConstructor(Ptr value); + void AddBaseType(ITypeDescriptor* value); + + virtual void LoadInternal()=0; + void Load(); + public: + TypeDescriptorImpl(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent); + ~TypeDescriptorImpl(); + + bool IsAggregatable()override; + IValueType* GetValueType()override; + IEnumType* GetEnumType()override; + ISerializableType* GetSerializableType()override; + + vint GetBaseTypeDescriptorCount()override; + ITypeDescriptor* GetBaseTypeDescriptor(vint index)override; + bool CanConvertTo(ITypeDescriptor* targetType)override; + + vint GetPropertyCount()override; + IPropertyInfo* GetProperty(vint index)override; + bool IsPropertyExists(const WString& name, bool inheritable)override; + IPropertyInfo* GetPropertyByName(const WString& name, bool inheritable)override; + + vint GetEventCount()override; + IEventInfo* GetEvent(vint index)override; + bool IsEventExists(const WString& name, bool inheritable)override; + IEventInfo* GetEventByName(const WString& name, bool inheritable)override; + + vint GetMethodGroupCount()override; + IMethodGroupInfo* GetMethodGroup(vint index)override; + bool IsMethodGroupExists(const WString& name, bool inheritable)override; + IMethodGroupInfo* GetMethodGroupByName(const WString& name, bool inheritable)override; + IMethodGroupInfo* GetConstructorGroup()override; + }; + +#endif + +/*********************************************************************** +TypeFlagTester +***********************************************************************/ + + enum class TypeFlags + { + NonGenericType =0, + FunctionType =1<<0, + EnumerableType =1<<1, + ReadonlyListType =1<<2, + ListType =1<<3, + ObservableListType =1<<4, + ReadonlyDictionaryType =1<<5, + DictionaryType =1<<6, + }; + + template + struct ValueRetriver + { + T* pointer; + }; + + template + struct ValueRetriver + { + T* pointer; + }; + + template + struct TypeFlagTester + { + static const TypeFlags Result=TypeFlags::NonGenericType; + }; + + template + struct TypeFlagTester + { + template + static void* Inherit(const Func* source){} + static char Inherit(void* source){} + static char Inherit(const void* source){} + + static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::FunctionType:TypeFlags::NonGenericType; + }; + + template + struct TypeFlagTester + { + template + static void* Inherit(const collections::LazyList* source){} + static char Inherit(void* source){} + static char Inherit(const void* source){} + + static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::EnumerableType:TypeFlags::NonGenericType; + }; + + template + struct TypeFlagTester + { + template + static void* Inherit(const collections::IEnumerable* source){} + static char Inherit(void* source){} + static char Inherit(const void* source){} + + static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::ReadonlyListType:TypeFlags::NonGenericType; + }; + + template + struct TypeFlagTester + { + template + static void* Inherit(collections::IEnumerable* source){} + static char Inherit(void* source){} + static char Inherit(const void* source){} + + static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::ListType:TypeFlags::NonGenericType; + }; + + template + struct TypeFlagTester + { + template + static void* Inherit(collections::ObservableList* source) {} + static char Inherit(void* source) {} + static char Inherit(const void* source) {} + + static const TypeFlags Result = sizeof(Inherit(((ValueRetriver*)0)->pointer)) == sizeof(void*) ? TypeFlags::ObservableListType : TypeFlags::NonGenericType; + }; + + template + struct TypeFlagTester + { + template + static void* Inherit(const collections::Dictionary* source){} + static char Inherit(void* source){} + static char Inherit(const void* source){} + + static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::ReadonlyDictionaryType:TypeFlags::NonGenericType; + }; + + template + struct TypeFlagTester + { + template + static void* Inherit(collections::Dictionary* source){} + static char Inherit(void* source){} + static char Inherit(const void* source){} + + static const TypeFlags Result=sizeof(Inherit(((ValueRetriver*)0)->pointer))==sizeof(void*)?TypeFlags::DictionaryType:TypeFlags::NonGenericType; + }; + +/*********************************************************************** +TypeFlagSelector +***********************************************************************/ + + template + struct TypeFlagSelectorCase + { + static const TypeFlags Result=TypeFlags::NonGenericType; + }; + + template + struct TypeFlagSelectorCase + { + static const TypeFlags Result=TypeFlags::FunctionType; + }; + + template + struct TypeFlagSelectorCase + { + static const TypeFlags Result=TypeFlags::EnumerableType; + }; + + template + struct TypeFlagSelectorCase + { + static const TypeFlags Result=TypeFlags::EnumerableType; + }; + + template + struct TypeFlagSelectorCase + { + static const TypeFlags Result=TypeFlags::ListType; + }; + + template + struct TypeFlagSelectorCase + { + static const TypeFlags Result = TypeFlags::ObservableListType; + }; + + template + struct TypeFlagSelectorCase + { + static const TypeFlags Result=TypeFlags::ReadonlyListType; + }; + + template + struct TypeFlagSelectorCase + { + static const TypeFlags Result=TypeFlags::DictionaryType; + }; + + template + struct TypeFlagSelectorCase + { + static const TypeFlags Result=TypeFlags::ReadonlyDictionaryType; + }; + + template + struct TypeFlagSelector + { + static const TypeFlags Result = + TypeFlagSelectorCase< + T, + (TypeFlags) + ( (vint)TypeFlagTester::Result + | (vint)TypeFlagTester::Result + | (vint)TypeFlagTester::Result + | (vint)TypeFlagTester::Result + | (vint)TypeFlagTester::Result + | (vint)TypeFlagTester::Result + | (vint)TypeFlagTester::Result + ) + >::Result; + }; + +/*********************************************************************** +TypeHintTester +***********************************************************************/ + + template + struct TypeHintTester + { + static const TypeInfoHint Result = TypeInfoHint::Normal; + }; + + template + struct TypeHintTesterForReference + { + static const TypeInfoHint Result = TypeInfoHint::NativeCollectionReference; + }; + + template<> + struct TypeHintTesterForReference + { + static const TypeInfoHint Result = TypeInfoHint::Normal; + }; + + template<> + struct TypeHintTesterForReference + { + static const TypeInfoHint Result = TypeInfoHint::Normal; + }; + + template + struct TypeHintTester + { + static const TypeInfoHint Result = TypeHintTester::Result; + }; + + template + struct TypeHintTester + { + static const TypeInfoHint Result = TypeHintTester::Result == TypeInfoHint::Normal + ? TypeHintTesterForReference::Result>::Result + : TypeHintTester::Result + ; + }; + + template + struct TypeHintTester + { + static const TypeInfoHint Result = TypeHintTester::Result; + }; + + template + struct TypeHintTester> + { + static const TypeInfoHint Result = TypeInfoHint::LazyList; + }; + + template + struct TypeHintTester> + { + static const TypeInfoHint Result = TypeInfoHint::Array; + }; + + template + struct TypeHintTester> + { + static const TypeInfoHint Result = TypeInfoHint::List; + }; + + template + struct TypeHintTester> + { + static const TypeInfoHint Result = TypeInfoHint::SortedList; + }; + + template + struct TypeHintTester> + { + static const TypeInfoHint Result = TypeInfoHint::ObservableList; + }; + + template + struct TypeHintTester> + { + static const TypeInfoHint Result = TypeInfoHint::Dictionary; + }; + +/*********************************************************************** +TypeInfoRetriver +***********************************************************************/ + + template + struct DetailTypeInfoRetriver + { + static const ITypeInfo::Decorator Decorator=ITypeInfo::TypeDescriptor; + typedef void Type; + typedef void TempValueType; + typedef void ResultReferenceType; + typedef void ResultNonReferenceType; + }; + + template + struct TypeInfoRetriver + { + static const TypeFlags TypeFlag = TypeFlagSelector::Result; + static const TypeInfoHint Hint = TypeHintTester::Result; + static const ITypeInfo::Decorator Decorator = DetailTypeInfoRetriver::Decorator; + + typedef typename DetailTypeInfoRetriver::Type Type; + typedef typename DetailTypeInfoRetriver::TempValueType TempValueType; + typedef typename DetailTypeInfoRetriver::ResultReferenceType ResultReferenceType; + typedef typename DetailTypeInfoRetriver::ResultNonReferenceType ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo() + { + return DetailTypeInfoRetriver::Type, TypeFlag>::CreateTypeInfo(Hint); + } +#endif + }; + +/*********************************************************************** +TypeInfoRetriver Helper Functions (BoxValue, UnboxValue) +***********************************************************************/ + + template + struct ValueAccessor + { + }; + + /// Box an reflectable object. Its type cannot be generic. + /// The boxed value. + /// Type of the object. + /// The object to box. + /// The type descriptor of the object (optional). + template + Value BoxValue(const T& object, ITypeDescriptor* typeDescriptor=0) + { + using Type = typename RemoveCVR::Type; + return ValueAccessor::Decorator>::BoxValue(object, typeDescriptor); + } + + /// Unbox an reflectable object. Its type cannot be generic. + /// The unboxed object. + /// Type of the object. + /// The value to unbox. + /// The type descriptor of the object (optional). + /// The name of the object to provide a friendly exception message if the conversion is failed (optional). + template + T UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor=0, const WString& valueName=L"value") + { + using Type = typename RemoveCVR::Type; + return ValueAccessor::Decorator>::UnboxValue(value, typeDescriptor, valueName); + } + +/*********************************************************************** +TypeInfoRetriver Helper Functions (UnboxParameter) +***********************************************************************/ + + template + struct ParameterAccessor + { + }; + + /// Box an reflectable object. It supports generic types such as containers, functions, etc. + /// The boxed value. + /// Type of the object. + /// The object to box. + /// The type descriptor of the object (optional). + template + Value BoxParameter(typename TypeInfoRetriver::ResultReferenceType object, ITypeDescriptor* typeDescriptor=0) + { + return ParameterAccessor::ResultNonReferenceType, TypeInfoRetriver::TypeFlag>::BoxParameter(object, typeDescriptor); + } + + /// Box an reflectable object. It supports generic types such as containers, functions, etc. + /// Type of the object. + /// The value to unbox. + /// The unboxed object. + /// The type descriptor of the object (optional). + /// The name of the object to provide a friendly exception message if the conversion is failed (optional). + template + void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor=0, const WString& valueName=L"value") + { + ParameterAccessor::TypeFlag>::UnboxParameter(value, result, typeDescriptor, valueName); + } + +#ifndef VCZH_DEBUG_NO_REFLECTION + +/*********************************************************************** +Value_xs +***********************************************************************/ + + class Value_xs + { + protected: + collections::Array arguments; + public: + Value_xs() + { + } + + template + Value_xs& operator,(T& value) + { + arguments.Resize(arguments.Count() + 1); + arguments[arguments.Count() - 1] = BoxParameter(value); + return *this; + } + + template + Value_xs& operator,(const T& value) + { + arguments.Resize(arguments.Count() + 1); + arguments[arguments.Count() - 1] = BoxParameter(value); + return *this; + } + + Value_xs& operator,(const Value& value) + { + arguments.Resize(arguments.Count()+1); + arguments[arguments.Count()-1]=value; + return *this; + } + + operator collections::Array&() + { + return arguments; + } + }; + +/*********************************************************************** +CustomFieldInfoImpl +***********************************************************************/ + + template + class CustomFieldInfoImpl : public FieldInfoImpl + { + protected: + TField TClass::* fieldRef; + + Value GetValueInternal(const Value& thisObject)override + { + TClass* object=UnboxValue(thisObject); + if(object) + { + return BoxParameter(object->*fieldRef, GetReturn()->GetTypeDescriptor()); + } + return Value(); + } + + void SetValueInternal(Value& thisObject, const Value& newValue)override + { + TClass* object=UnboxValue(thisObject); + if(object) + { + UnboxParameter(newValue, object->*fieldRef, GetReturn()->GetTypeDescriptor(), L"newValue"); + } + } + public: + CustomFieldInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, TField TClass::* _fieldRef) + :FieldInfoImpl(_ownerTypeDescriptor, _name, TypeInfoRetriver::CreateTypeInfo()) + , fieldRef(_fieldRef) + { + } + + IPropertyInfo::ICpp* GetCpp()override + { + return nullptr; + } + }; + +/*********************************************************************** +PrimitiveTypeDescriptor +***********************************************************************/ + + template + class SerializableValueType : public Object, public virtual IValueType + { + public: + Value CreateDefault()override + { + return BoxValue(TypedValueSerializerProvider::GetDefaultValue()); + } + + IBoxedValue::CompareResult Compare(const Value& a, const Value& b)override + { + auto va = UnboxValue(a); + auto vb = UnboxValue(b); + return TypedValueSerializerProvider::Compare(va, vb); + } + }; + + template + class SerializableType : public Object, public virtual ISerializableType + { + public: + bool Serialize(const Value& input, WString& output)override + { + return TypedValueSerializerProvider::Serialize(UnboxValue(input), output); + } + + bool Deserialize(const WString& input, Value& output)override + { + T value; + if (!TypedValueSerializerProvider::Deserialize(input, value)) + { + return false; + } + output = BoxValue(value); + return true; + } + }; + + template + class PrimitiveTypeDescriptor : public TypedValueTypeDescriptorBase + { + protected: + void LoadInternal()override + { + this->valueType = new SerializableValueType(); + this->serializableType = new SerializableType(); + } + }; + +/*********************************************************************** +EnumTypeDescriptor +***********************************************************************/ + + template + class EnumValueType : public Object, public virtual IValueType + { + public: + Value CreateDefault()override + { + return BoxValue(static_cast(0)); + } + + IBoxedValue::CompareResult Compare(const Value& a, const Value& b)override + { + auto ea = static_cast(UnboxValue(a)); + auto eb = static_cast(UnboxValue(b)); + if (ea < eb) return IBoxedValue::Smaller; + if (ea > eb)return IBoxedValue::Greater; + return IBoxedValue::Equal; + } + }; + + template + class EnumType : public Object, public virtual IEnumType + { + protected: + collections::Dictionary candidates; + + public: + void AddItem(WString name, T value) + { + candidates.Add(name, value); + } + + bool IsFlagEnum()override + { + return Flag; + } + + vint GetItemCount()override + { + return candidates.Count(); + } + + WString GetItemName(vint index)override + { + if (index < 0 || index >= candidates.Count()) + { + return L""; + } + return candidates.Keys()[index]; + } + + vuint64_t GetItemValue(vint index)override + { + if (index < 0 || index >= candidates.Count()) + { + return 0; + } + return static_cast(candidates.Values()[index]); + } + + vint IndexOfItem(WString name)override + { + return candidates.Keys().IndexOf(name); + } + + Value ToEnum(vuint64_t value)override + { + return BoxValue(static_cast(value)); + } + + vuint64_t FromEnum(const Value& value)override + { + return static_cast(UnboxValue(value)); + } + }; + + template + class EnumTypeDescriptor : public TypedValueTypeDescriptorBase + { + using TEnumType = EnumType; + protected: + Ptr enumType; + + void LoadInternal()override + { + this->enumType = new TEnumType; + this->valueType = new EnumValueType(); + TypedValueTypeDescriptorBase::enumType = enumType; + } + }; + +/*********************************************************************** +StructTypeDescriptor +***********************************************************************/ + + template + class StructValueType : public Object, public virtual IValueType + { + public: + Value CreateDefault()override + { + return BoxValue(T{}); + } + + IBoxedValue::CompareResult Compare(const Value& a, const Value& b)override + { + return IBoxedValue::NotComparable; + } + }; + + template + class StructTypeDescriptor : public TypedValueTypeDescriptorBase + { + protected: + template + class StructFieldInfo : public FieldInfoImpl + { + protected: + TField T::* field; + + Value GetValueInternal(const Value& thisObject)override + { + auto structValue = thisObject.GetBoxedValue().Cast>(); + if (!structValue) + { + throw ArgumentTypeMismtatchException(L"thisObject", GetOwnerTypeDescriptor(), Value::BoxedValue, thisObject); + } + return BoxValue(structValue->value.*field); + } + + void SetValueInternal(Value& thisObject, const Value& newValue)override + { + auto structValue = thisObject.GetBoxedValue().Cast>(); + if (!structValue) + { + throw ArgumentTypeMismtatchException(L"thisObject", GetOwnerTypeDescriptor(), Value::BoxedValue, thisObject); + } + (structValue->value.*field) = UnboxValue(newValue); + } + public: + StructFieldInfo(ITypeDescriptor* _ownerTypeDescriptor, TField T::* _field, const WString& _name) + :field(_field) + , FieldInfoImpl(_ownerTypeDescriptor, _name, TypeInfoRetriver::CreateTypeInfo()) + { + } + + IPropertyInfo::ICpp* GetCpp()override + { + return nullptr; + } + }; + + protected: + collections::Dictionary> fields; + + public: + StructTypeDescriptor() + { + this->valueType = new StructValueType(); + } + + vint GetPropertyCount()override + { + this->Load(); + return fields.Count(); + } + + IPropertyInfo* GetProperty(vint index)override + { + this->Load(); + if (index < 0 || index >= fields.Count()) + { + return nullptr; + } + return fields.Values()[index].Obj(); + } + + bool IsPropertyExists(const WString& name, bool inheritable)override + { + this->Load(); + return fields.Keys().Contains(name); + } + + IPropertyInfo* GetPropertyByName(const WString& name, bool inheritable)override + { + this->Load(); + vint index = fields.Keys().IndexOf(name); + if (index == -1) return nullptr; + return fields.Values()[index].Obj(); + } + }; +#endif + } + } +} + +#endif + + +/*********************************************************************** +.\GUITYPEDESCRIPTORBUILDER_CONTAINER.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Reflection + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_CONTAINER +#define VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_CONTAINER + + +namespace vl +{ + namespace reflection + { + namespace description + { + +/*********************************************************************** +Enumerable Wrappers +***********************************************************************/ + + template + class TypedEnumerator : public Object, public collections::IEnumerator + { + private: + Ptr enumerable; + Ptr enumerator; + vint index; + T value; + + public: + TypedEnumerator(Ptr _enumerable, vint _index, const T& _value) + :enumerable(_enumerable) + ,index(_index) + ,value(_value) + { + enumerator=enumerable->CreateEnumerator(); + vint current=-1; + while(current++Next(); + } + } + + TypedEnumerator(Ptr _enumerable) + :enumerable(_enumerable) + ,index(-1) + { + Reset(); + } + + collections::IEnumerator* Clone()const override + { + return new TypedEnumerator(enumerable, index, value); + } + + const T& Current()const override + { + return value; + } + + vint Index()const override + { + return index; + } + + bool Next() override + { + if(enumerator->Next()) + { + index++; + value=UnboxValue(enumerator->GetCurrent()); + return true; + } + else + { + return false; + } + } + + void Reset() override + { + index=-1; + enumerator=enumerable->CreateEnumerator(); + } + }; + + template + collections::LazyList GetLazyList(Ptr value) + { + return collections::LazyList(new TypedEnumerator(value)); + } + + template + collections::LazyList GetLazyList(Ptr value) + { + return collections::Range(0, value->GetCount()) + .Select([value](vint i) + { + return UnboxValue(value->Get(i)); + }); + } + + template + collections::LazyList GetLazyList(Ptr value) + { + return GetLazyList(Ptr(value)); + } + + template + collections::LazyList GetLazyList(Ptr value) + { + return GetLazyList(Ptr(value)); + } + + template + collections::LazyList> GetLazyList(Ptr value) + { + return collections::Range(0, value->GetCount()) + .Select([value](vint i) + { + return collections::Pair(UnboxValue(value->GetKeys()->Get(i)), UnboxValue(value->GetValues()->Get(i))); + }); + } + + template + collections::LazyList> GetLazyList(Ptr value) + { + return GetLazyList(Ptr(value)); + } + +/*********************************************************************** +Collection Wrappers +***********************************************************************/ + + namespace trait_helper + { + template + struct RemovePtr + { + typedef T Type; + }; + + template + struct RemovePtr + { + typedef T Type; + }; + + template + struct RemovePtr> + { + typedef T Type; + }; + } + +#pragma warning(push) +#pragma warning(disable:4250) + template + class ValueEnumeratorWrapper : public Object, public virtual IValueEnumerator + { + protected: + typedef typename trait_helper::RemovePtr::Type ContainerType; + typedef typename ContainerType::ElementType ElementType; + + T wrapperPointer; + public: + ValueEnumeratorWrapper(const T& _wrapperPointer) + :wrapperPointer(_wrapperPointer) + { + } + + Value GetCurrent()override + { + return BoxValue(wrapperPointer->Current()); + } + + vint GetIndex()override + { + return wrapperPointer->Index(); + } + + bool Next()override + { + return wrapperPointer->Next(); + } + }; + + template + class ValueEnumerableWrapper : public Object, public virtual IValueEnumerable + { + protected: + typedef typename trait_helper::RemovePtr::Type ContainerType; + typedef typename ContainerType::ElementType ElementType; + + T wrapperPointer; + public: + ValueEnumerableWrapper(const T& _wrapperPointer) + :wrapperPointer(_wrapperPointer) + { + } + + Ptr CreateEnumerator()override + { + return new ValueEnumeratorWrapper>>(wrapperPointer->CreateEnumerator()); + } + }; + +#define WRAPPER_POINTER this->wrapperPointer + + template + class ValueReadonlyListWrapper : public ValueEnumerableWrapper, public virtual IValueReadonlyList + { + protected: + typedef typename trait_helper::RemovePtr::Type ContainerType; + typedef typename ContainerType::ElementType ElementType; + typedef typename KeyType::Type ElementKeyType; + + public: + ValueReadonlyListWrapper(const T& _wrapperPointer) + :ValueEnumerableWrapper(_wrapperPointer) + { + } + + vint GetCount()override + { + return WRAPPER_POINTER->Count(); + } + + Value Get(vint index)override + { + return BoxValue(WRAPPER_POINTER->Get(index)); + } + + bool Contains(const Value& value)override + { + ElementKeyType item=UnboxValue(value); + return WRAPPER_POINTER->Contains(item); + } + + vint IndexOf(const Value& value)override + { + ElementKeyType item=UnboxValue(value); + return WRAPPER_POINTER->IndexOf(item); + } + }; + + template + class ValueListWrapper : public ValueReadonlyListWrapper, public virtual IValueList + { + protected: + typedef typename trait_helper::RemovePtr::Type ContainerType; + typedef typename ContainerType::ElementType ElementType; + typedef typename KeyType::Type ElementKeyType; + + public: + ValueListWrapper(const T& _wrapperPointer) + :ValueReadonlyListWrapper(_wrapperPointer) + { + } + + void Set(vint index, const Value& value)override + { + ElementType item=UnboxValue(value); + WRAPPER_POINTER->Set(index, item); + } + + vint Add(const Value& value)override + { + ElementType item=UnboxValue(value); + return WRAPPER_POINTER->Add(item); + } + + vint Insert(vint index, const Value& value)override + { + ElementType item=UnboxValue(value); + return WRAPPER_POINTER->Insert(index, item); + } + + bool Remove(const Value& value)override + { + ElementKeyType item=UnboxValue(value); + return WRAPPER_POINTER->Remove(item); + } + + bool RemoveAt(vint index)override + { + return WRAPPER_POINTER->RemoveAt(index); + } + + void Clear()override + { + WRAPPER_POINTER->Clear(); + } + }; + + template + class ValueListWrapper*> : public ValueReadonlyListWrapper*>, public virtual IValueList + { + protected: + typedef collections::Array ContainerType; + typedef T ElementType; + typedef K ElementKeyType; + + public: + ValueListWrapper(collections::Array* _wrapperPointer) + :ValueReadonlyListWrapper*>(_wrapperPointer) + { + } + + void Set(vint index, const Value& value)override + { + ElementType item = UnboxValue(value); + WRAPPER_POINTER->Set(index, item); + } + + vint Add(const Value& value)override + { + throw Exception(L"Array doesn't have Add method."); + } + + vint Insert(vint index, const Value& value)override + { + throw Exception(L"Array doesn't have Insert method."); + } + + bool Remove(const Value& value)override + { + throw Exception(L"Array doesn't have Remove method."); + } + + bool RemoveAt(vint index)override + { + throw Exception(L"Array doesn't have RemoveAt method."); + } + + void Clear()override + { + throw Exception(L"Array doesn't have Clear method."); + } + }; + + template + class ValueListWrapper*> : public ValueReadonlyListWrapper*>, public virtual IValueList + { + protected: + typedef collections::SortedList ContainerType; + typedef T ElementType; + typedef K ElementKeyType; + + public: + ValueListWrapper(collections::SortedList* _wrapperPointer) + :ValueReadonlyListWrapper*>(_wrapperPointer) + { + } + + void Set(vint index, const Value& value)override + { + throw Exception(L"SortedList doesn't have Set method."); + } + + vint Add(const Value& value)override + { + ElementType item = UnboxValue(value); + return WRAPPER_POINTER->Add(item); + } + + vint Insert(vint index, const Value& value)override + { + throw Exception(L"SortedList doesn't have Insert method."); + } + + bool Remove(const Value& value)override + { + ElementKeyType item = UnboxValue(value); + return WRAPPER_POINTER->Remove(item); + } + + bool RemoveAt(vint index)override + { + return WRAPPER_POINTER->RemoveAt(index); + } + + void Clear()override + { + WRAPPER_POINTER->Clear(); + } + }; + + template + class ValueObservableListWrapper : public ValueListWrapper, public virtual IValueObservableList + { + public: + ValueObservableListWrapper(const T& _wrapperPointer) + :ValueListWrapper(_wrapperPointer) + { + } + }; + +#undef WRAPPER_POINTER + + template + class ValueReadonlyDictionaryWrapper : public virtual Object, public virtual IValueReadonlyDictionary + { + protected: + typedef typename trait_helper::RemovePtr::Type ContainerType; + typedef typename ContainerType::KeyContainer KeyContainer; + typedef typename ContainerType::ValueContainer ValueContainer; + typedef typename KeyContainer::ElementType KeyValueType; + typedef typename KeyType::Type KeyKeyType; + typedef typename ValueContainer::ElementType ValueType; + + T wrapperPointer; + Ptr keys; + Ptr values; + public: + ValueReadonlyDictionaryWrapper(const T& _wrapperPointer) + :wrapperPointer(_wrapperPointer) + { + } + + Ptr GetKeys()override + { + if(!keys) + { + keys=new ValueReadonlyListWrapper(&wrapperPointer->Keys()); + } + return keys; + } + + Ptr GetValues()override + { + if(!values) + { + values=new ValueReadonlyListWrapper(&wrapperPointer->Values()); + } + return values; + } + + vint GetCount()override + { + return wrapperPointer->Count(); + } + + Value Get(const Value& key)override + { + KeyKeyType item=UnboxValue(key); + ValueType result=wrapperPointer->Get(item); + return BoxValue(result); + } + }; + +#define WRAPPER_POINTER ValueReadonlyDictionaryWrapper::wrapperPointer +#define KEY_VALUE_TYPE typename ValueReadonlyDictionaryWrapper::KeyValueType +#define VALUE_TYPE typename ValueReadonlyDictionaryWrapper::ValueType +#define KEY_KEY_TYPE typename ValueReadonlyDictionaryWrapper::KeyKeyType + + template + class ValueDictionaryWrapper : public virtual ValueReadonlyDictionaryWrapper, public virtual IValueDictionary + { + public: + ValueDictionaryWrapper(const T& _wrapperPointer) + :ValueReadonlyDictionaryWrapper(_wrapperPointer) + { + } + + void Set(const Value& key, const Value& value)override + { + KEY_VALUE_TYPE item=UnboxValue(key); + VALUE_TYPE result=UnboxValue(value); + WRAPPER_POINTER->Set(item, result); + } + + bool Remove(const Value& key)override + { + KEY_KEY_TYPE item=UnboxValue(key); + return WRAPPER_POINTER->Remove(item); + } + + void Clear()override + { + WRAPPER_POINTER->Clear(); + } + }; +#undef WRAPPER_POINTER +#undef KEY_VALUE_TYPE +#undef VALUE_TYPE +#undef KEY_KEY_TYPE +#pragma warning(pop) + +/*********************************************************************** +DetailTypeInfoRetriver +***********************************************************************/ + + template + struct DetailTypeInfoRetriver + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; + typedef IValueEnumerable Type; + typedef typename UpLevelRetriver::TempValueType TempValueType; + typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; + typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + typedef typename DetailTypeInfoRetriver::Type ContainerType; + typedef typename ContainerType::ElementType ElementType; + + auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); + + auto genericType = MakePtr(arrayType); + genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); + + auto type = MakePtr(genericType); + return type; + } +#endif + }; + + template + struct DetailTypeInfoRetriver + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; + typedef IValueReadonlyList Type; + typedef typename UpLevelRetriver::TempValueType TempValueType; + typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; + typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + typedef typename DetailTypeInfoRetriver::Type ContainerType; + typedef typename ContainerType::ElementType ElementType; + + auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); + + auto genericType = MakePtr(arrayType); + genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); + + auto type = MakePtr(genericType); + return type; + } +#endif + }; + + template + struct DetailTypeInfoRetriver + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; + typedef IValueList Type; + typedef typename UpLevelRetriver::TempValueType TempValueType; + typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; + typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + typedef typename DetailTypeInfoRetriver::Type ContainerType; + typedef typename ContainerType::ElementType ElementType; + + auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); + + auto genericType = MakePtr(arrayType); + genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); + + auto type = MakePtr(genericType); + return type; + } +#endif + }; + + template + struct DetailTypeInfoRetriver + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator = UpLevelRetriver::Decorator; + typedef IValueObservableList Type; + typedef typename UpLevelRetriver::TempValueType TempValueType; + typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; + typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + typedef typename DetailTypeInfoRetriver::Type ContainerType; + typedef typename ContainerType::ElementType ElementType; + + auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); + + auto genericType = MakePtr(arrayType); + genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); + + auto type = MakePtr(genericType); + return type; + } +#endif + }; + + template + struct DetailTypeInfoRetriver + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; + typedef IValueReadonlyList Type; + typedef typename UpLevelRetriver::TempValueType TempValueType; + typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; + typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + typedef typename DetailTypeInfoRetriver::Type ContainerType; + typedef typename ContainerType::KeyContainer KeyContainer; + typedef typename ContainerType::ValueContainer ValueContainer; + typedef typename KeyContainer::ElementType KeyType; + typedef typename ValueContainer::ElementType ValueType; + + auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); + + auto genericType = MakePtr(arrayType); + genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); + genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); + + auto type = MakePtr(genericType); + return type; + } +#endif + }; + + template + struct DetailTypeInfoRetriver + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; + typedef IValueReadonlyList Type; + typedef typename UpLevelRetriver::TempValueType TempValueType; + typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; + typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + typedef typename DetailTypeInfoRetriver::Type ContainerType; + typedef typename ContainerType::KeyContainer KeyContainer; + typedef typename ContainerType::ValueContainer ValueContainer; + typedef typename KeyContainer::ElementType KeyType; + typedef typename ValueContainer::ElementType ValueType; + + auto arrayType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); + + auto genericType = MakePtr(arrayType); + genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); + genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); + + auto type = MakePtr(genericType); + return type; + } +#endif + }; + +/*********************************************************************** +ParameterAccessor +***********************************************************************/ + + template + struct ParameterAccessor, TypeFlags::EnumerableType> + { + static Value BoxParameter(collections::LazyList& object, ITypeDescriptor* typeDescriptor) + { + Ptr result=IValueEnumerable::Create( + collections::From(object) + .Select([](const T& item) + { + return BoxValue(item); + }) + ); + + ITypeDescriptor* td = nullptr; +#ifndef VCZH_DEBUG_NO_REFLECTION + td = Description::GetAssociatedTypeDescriptor(); +#endif + return BoxValue>(result, td); + } + + static void UnboxParameter(const Value& value, collections::LazyList& result, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + typedef typename collections::LazyList::ElementType ElementType; + Ptr listProxy=UnboxValue>(value, typeDescriptor, valueName); + result=GetLazyList(listProxy); + } + }; + + template + struct ParameterAccessor + { + static Value BoxParameter(T& object, ITypeDescriptor* typeDescriptor) + { + Ptr result=new ValueReadonlyListWrapper(&object); + + ITypeDescriptor* td = nullptr; +#ifndef VCZH_DEBUG_NO_REFLECTION + td = Description::GetAssociatedTypeDescriptor(); +#endif + return BoxValue>(result, td); + } + + static void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + typedef typename T::ElementType ElementType; + Ptr listProxy=UnboxValue>(value, typeDescriptor, valueName); + collections::LazyList lazyList=GetLazyList(listProxy); + collections::CopyFrom(result, lazyList); + } + }; + + template + struct ParameterAccessor + { + static Value BoxParameter(T& object, ITypeDescriptor* typeDescriptor) + { + Ptr result=new ValueListWrapper(&object); + + ITypeDescriptor* td = nullptr; +#ifndef VCZH_DEBUG_NO_REFLECTION + td = Description::GetAssociatedTypeDescriptor(); +#endif + return BoxValue>(result, td); + } + + static void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + typedef typename T::ElementType ElementType; + Ptr listProxy=UnboxValue>(value, typeDescriptor, valueName); + collections::LazyList lazyList=GetLazyList(listProxy); + collections::CopyFrom(result, lazyList); + } + }; + + template + struct ParameterAccessor, TypeFlags::ObservableListType> + { + static Value BoxParameter(collections::ObservableList& object, ITypeDescriptor* typeDescriptor) + { + ITypeDescriptor* td = nullptr; +#ifndef VCZH_DEBUG_NO_REFLECTION + td = Description::GetAssociatedTypeDescriptor(); +#endif + return BoxValue>(object.GetWrapper(), td); + } + }; + + template + struct ParameterAccessor + { + static Value BoxParameter(T& object, ITypeDescriptor* typeDescriptor) + { + Ptr result=new ValueReadonlyDictionaryWrapper(&object); + + ITypeDescriptor* td = nullptr; +#ifndef VCZH_DEBUG_NO_REFLECTION + td = Description::GetAssociatedTypeDescriptor(); +#endif + return BoxValue>(result, td); + } + + static void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + typedef typename T::KeyContainer KeyContainer; + typedef typename T::ValueContainer ValueContainer; + typedef typename KeyContainer::ElementType KeyType; + typedef typename ValueContainer::ElementType ValueType; + + Ptr dictionaryProxy=UnboxValue>(value, typeDescriptor, valueName); + collections::LazyList> lazyList=GetLazyList(dictionaryProxy); + collections::CopyFrom(result, lazyList); + } + }; + + template + struct ParameterAccessor + { + static Value BoxParameter(T& object, ITypeDescriptor* typeDescriptor) + { + Ptr result=new ValueDictionaryWrapper(&object); + + ITypeDescriptor* td = nullptr; +#ifndef VCZH_DEBUG_NO_REFLECTION + td = Description::GetAssociatedTypeDescriptor(); +#endif + return BoxValue>(result, td); + } + + static void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + typedef typename T::KeyContainer KeyContainer; + typedef typename T::ValueContainer ValueContainer; + typedef typename KeyContainer::ElementType KeyType; + typedef typename ValueContainer::ElementType ValueType; + + Ptr dictionaryProxy=UnboxValue>(value, typeDescriptor, valueName); + collections::LazyList> lazyList=GetLazyList(dictionaryProxy); + collections::CopyFrom(result, lazyList); + } + }; + } + } + + namespace collections + { + template::Type> + class ObservableListBase : public Object, public virtual collections::IEnumerable + { + protected: + collections::List items; + + virtual void NotifyUpdateInternal(vint start, vint count, vint newCount) + { + } + + virtual bool QueryInsert(vint index, const T& value) + { + return true; + } + + virtual void BeforeInsert(vint index, const T& value) + { + } + + virtual void AfterInsert(vint index, const T& value) + { + } + + virtual bool QueryRemove(vint index, const T& value) + { + return true; + } + + virtual void BeforeRemove(vint index, const T& value) + { + } + + virtual void AfterRemove(vint index, vint count) + { + } + + public: + ObservableListBase() + { + } + + ~ObservableListBase() + { + } + + collections::IEnumerator* CreateEnumerator()const + { + return items.CreateEnumerator(); + } + + bool NotifyUpdate(vint start, vint count = 1) + { + if (start<0 || start >= items.Count() || count <= 0 || start + count>items.Count()) + { + return false; + } + else + { + NotifyUpdateInternal(start, count, count); + return true; + } + } + + bool Contains(const K& item)const + { + return items.Contains(item); + } + + vint Count()const + { + return items.Count(); + } + + vint Count() + { + return items.Count(); + } + + const T& Get(vint index)const + { + return items.Get(index); + } + + const T& operator[](vint index)const + { + return items.Get(index); + } + + vint IndexOf(const K& item)const + { + return items.IndexOf(item); + } + + vint Add(const T& item) + { + return Insert(items.Count(), item); + } + + bool Remove(const K& item) + { + vint index = items.IndexOf(item); + if (index == -1) return false; + return RemoveAt(index); + } + + bool RemoveAt(vint index) + { + if (0 <= index && index < items.Count() && QueryRemove(index, items[index])) + { + BeforeRemove(index, items[index]); + T item = items[index]; + items.RemoveAt(index); + AfterRemove(index, 1); + NotifyUpdateInternal(index, 1, 0); + return true; + } + return false; + } + + bool RemoveRange(vint index, vint count) + { + if (count <= 0) return false; + if (0 <= index && index + class ObservableList : public ObservableListBase + { + protected: + Ptr observableList; + + void NotifyUpdateInternal(vint start, vint count, vint newCount)override + { + if (observableList) + { + observableList->ItemChanged(start, count, newCount); + } + } + public: + + Ptr GetWrapper() + { + if (!observableList) + { + observableList = new reflection::description::ValueObservableListWrapper*>(this); + } + return observableList; + } + }; + + namespace randomaccess_internal + { + template + struct RandomAccessable> + { + static const bool CanRead = true; + static const bool CanResize = false; + }; + + template + struct RandomAccessable> + { + static const bool CanRead = true; + static const bool CanResize = false; + }; + } + } +} + +#endif + +/*********************************************************************** +.\GUITYPEDESCRIPTORBUILDER_FUNCTION.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Reflection + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_FUNCTION +#define VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_FUNCTION + + +namespace vl +{ + namespace reflection + { + namespace description + { + template + struct EventHelper + { + using Handler = const Func&; + + class EventHandlerImpl : public Object, public reflection::description::IEventHandler + { + public: + Ptr handler; + + EventHandlerImpl(Ptr _handler) + :handler(_handler) + { + } + + bool IsAttached()override + { + return handler->IsAttached(); + } + }; + + static Ptr Attach(Event& e, Handler handler) + { + return MakePtr(e.Add(handler)); + } + + static bool Detach(Event& e, Ptr handler) + { + auto impl = handler.Cast(); + if (!impl) return false; + return e.Remove(impl->handler); + } + + static Event& Invoke(Event& e) + { + return e; + } + }; + +/*********************************************************************** +DetailTypeInfoRetriver> +***********************************************************************/ + +#ifndef VCZH_DEBUG_NO_REFLECTION + namespace internal_helper + { + template + struct GenericArgumentAdder + { + static void Add(Ptr genericType) + { + } + }; + + template + struct GenericArgumentAdder> + { + static void Add(Ptr genericType) + { + genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); + GenericArgumentAdder>::Add(genericType); + } + }; + } +#endif + + template + struct DetailTypeInfoRetriver, TypeFlags::FunctionType> + { + typedef DetailTypeInfoRetriver, TypeFlags::NonGenericType> UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; + typedef IValueList Type; + typedef typename UpLevelRetriver::TempValueType TempValueType; + typedef typename UpLevelRetriver::ResultReferenceType ResultReferenceType; + typedef typename UpLevelRetriver::ResultNonReferenceType ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + auto functionType = MakePtr(Description::GetAssociatedTypeDescriptor(), hint); + + auto genericType = MakePtr(functionType); + genericType->AddGenericArgument(TypeInfoRetriver::CreateTypeInfo()); + internal_helper::GenericArgumentAdder>::Add(genericType); + + auto type = MakePtr(genericType); + return type; + } +#endif + }; + + template + struct DetailTypeInfoRetriver, TypeFlags::FunctionType> + : DetailTypeInfoRetriver, TypeFlags::FunctionType> + { + }; + +/*********************************************************************** +ValueFunctionProxyWrapper> +***********************************************************************/ + + template + class ValueFunctionProxyWrapper + { + }; + + namespace internal_helper + { + extern void UnboxSpecifiedParameter(Ptr arguments, vint index); + + template + void UnboxSpecifiedParameter(Ptr arguments, vint index, T0& p0, TArgs& ...args) + { + UnboxParameter::TempValueType>(arguments->Get(index), p0, 0, itow(index + 1) + L"-th argument"); + UnboxSpecifiedParameter(arguments, index + 1, args...); + } + + template + struct BoxedFunctionInvoker + { + static Value Invoke(const Func& function, Ptr arguments, typename RemoveCVR::Type&& ...args) + { + UnboxSpecifiedParameter(arguments, 0, args...); + R result = function(args...); + return BoxParameter(result); + } + }; + + template + struct BoxedFunctionInvoker + { + static Value Invoke(const Func& function, Ptr arguments, typename RemoveCVR::Type&& ...args) + { + UnboxSpecifiedParameter(arguments, 0, args...); + function(args...); + return Value(); + } + }; + } + + template + class ValueFunctionProxyWrapper : public Object, public virtual IValueFunctionProxy + { + typedef Func FunctionType; + protected: + FunctionType function; + + public: + ValueFunctionProxyWrapper(const FunctionType& _function) + :function(_function) + { + } + + FunctionType GetFunction() + { + return function; + } + + Value Invoke(Ptr arguments)override + { + if (!arguments || arguments->GetCount() != sizeof...(TArgs)) + { +#ifndef VCZH_DEBUG_NO_REFLECTION + throw ArgumentCountMismtatchException(); +#else + CHECK_FAIL(L"Argument count mismatch."); +#endif + } + return internal_helper::BoxedFunctionInvoker::Invoke(function, arguments, typename RemoveCVR::Type()...); + } + }; + +/*********************************************************************** +ParameterAccessor> +***********************************************************************/ + + namespace internal_helper + { + extern void AddValueToList(Ptr arguments); + + template + void AddValueToList(Ptr arguments, T0&& p0, TArgs&& ...args) + { + arguments->Add(description::BoxParameter(p0)); + AddValueToList(arguments, args...); + } + } + + template + struct ParameterAccessor, TypeFlags::FunctionType> + { + static Value BoxParameter(const Func& object, ITypeDescriptor* typeDescriptor) + { + typedef R(RawFunctionType)(TArgs...); + Ptr result=new ValueFunctionProxyWrapper(object); + + ITypeDescriptor* td = nullptr; +#ifndef VCZH_DEBUG_NO_REFLECTION + td = Description::GetAssociatedTypeDescriptor(); +#endif + return BoxValue>(result, td); + } + + static void UnboxParameter(const Value& value, Func& result, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + typedef R(RawFunctionType)(TArgs...); + typedef ValueFunctionProxyWrapper ProxyType; + Ptr functionProxy=UnboxValue>(value, typeDescriptor, valueName); + if(functionProxy) + { + if(Ptr proxy=functionProxy.Cast()) + { + result=proxy->GetFunction(); + } + else + { + result=[functionProxy](TArgs ...args) + { + Ptr arguments = IValueList::Create(); + internal_helper::AddValueToList(arguments, ForwardValue(args)...); + typedef typename TypeInfoRetriver::TempValueType ResultType; + ResultType proxyResult; + description::UnboxParameter(functionProxy->Invoke(arguments), proxyResult); + return proxyResult; + }; + } + } + } + }; + + template + struct ParameterAccessor, TypeFlags::FunctionType> : ParameterAccessor, TypeFlags::FunctionType> + { + }; + +#ifndef VCZH_DEBUG_NO_REFLECTION + +/*********************************************************************** +MethodInfoImpl +***********************************************************************/ + + template + class CustomConstructorInfoImpl{}; + + template + class CustomMethodInfoImpl{}; + + template + class CustomExternalMethodInfoImpl{}; + + template + class CustomStaticMethodInfoImpl{}; + + template + class CustomEventInfoImpl{}; + +/*********************************************************************** +CustomConstructorInfoImpl +***********************************************************************/ + + namespace internal_helper + { + extern void UnboxSpecifiedParameter(MethodInfoImpl* methodInfo, collections::Array& arguments, vint index); + + template + void UnboxSpecifiedParameter(MethodInfoImpl* methodInfo, collections::Array& arguments, vint index, T0& p0, TArgs& ...args) + { + UnboxParameter::TempValueType>(arguments[index], p0, methodInfo->GetParameter(index)->GetType()->GetTypeDescriptor(), itow(index) + L"-th argument"); + UnboxSpecifiedParameter(methodInfo, arguments, index + 1, args...); + } + + template + struct BoxedConstructorInvoker + { + static Value Invoke(MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) + { + UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); + R result = new typename TypeInfoRetriver::Type(args...); + return BoxParameter(result); + } + }; + + template + struct ConstructorArgumentAdder + { + static void Add(MethodInfoImpl* methodInfo, const wchar_t* parameterNames[], vint index) + { + } + }; + + template + struct ConstructorArgumentAdder> + { + static void Add(MethodInfoImpl* methodInfo, const wchar_t* parameterNames[], vint index) + { + methodInfo->AddParameter(new ParameterInfoImpl(methodInfo, parameterNames[index], TypeInfoRetriver::CreateTypeInfo())); + ConstructorArgumentAdder>::Add(methodInfo, parameterNames, index + 1); + } + }; + } + + template + class CustomConstructorInfoImpl : public MethodInfoImpl + { + protected: + Value InvokeInternal(const Value& thisObject, collections::Array& arguments)override + { + return internal_helper::BoxedConstructorInvoker::Invoke(this, arguments, typename RemoveCVR::Type()...); + } + + Value CreateFunctionProxyInternal(const Value& thisObject)override + { + Func proxy( + LAMBDA([](TArgs ...args)->R + { + R result = new typename TypeInfoRetriver::Type(args...); + return result; + }) + ); + return BoxParameter>(proxy); + } + public: + CustomConstructorInfoImpl(const wchar_t* parameterNames[]) + :MethodInfoImpl(0, TypeInfoRetriver::CreateTypeInfo(), true) + { + internal_helper::ConstructorArgumentAdder>::Add(this, parameterNames, 0); + } + + IMethodInfo::ICpp* GetCpp()override + { + return nullptr; + } + }; + +/*********************************************************************** +CustomMethodInfoImpl +CustomStaticMethodInfoImpl +***********************************************************************/ + + namespace internal_helper + { + template + struct BoxedMethodInvoker + { + static Value Invoke(TClass* object, R(__thiscall TClass::* method)(TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) + { + UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); + R result = (object->*method)(args...); + return BoxParameter(result, methodInfo->GetReturn()->GetTypeDescriptor()); + } + }; + + template + struct BoxedMethodInvoker + { + static Value Invoke(TClass* object, void(__thiscall TClass::* method)(TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) + { + UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); + (object->*method)(args...); + return Value(); + } + }; + + template + struct BoxedExternalMethodInvoker + { + static Value Invoke(TClass* object, R(*method)(TClass*, TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) + { + UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); + R result = method(object, args...); + return BoxParameter(result, methodInfo->GetReturn()->GetTypeDescriptor()); + } + }; + + template + struct BoxedExternalMethodInvoker + { + static Value Invoke(TClass* object, void(*method)(TClass*, TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) + { + UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); + method(object, args...); + return Value(); + } + }; + } + class MethodInfoImpl_StaticCpp : public MethodInfoImpl, private IMethodInfo::ICpp + { + private: + WString invokeTemplate; + WString closureTemplate; + + const WString& GetInvokeTemplate()override + { + return invokeTemplate; + } + + const WString& GetClosureTemplate()override + { + return closureTemplate; + } + public: + MethodInfoImpl_StaticCpp(IMethodGroupInfo* _ownerMethodGroup, Ptr _return, bool _isStatic, const wchar_t* _invokeTemplate, const wchar_t* _closureTemplate) + :MethodInfoImpl(_ownerMethodGroup, _return, _isStatic) + { + CHECK_ERROR((_invokeTemplate == nullptr) == (_closureTemplate == nullptr), L"MethodInfoImpl_StaticCpp::MethodInfoImpl_StaticCpp()#Templates should all be set or default at the same time."); + if (_invokeTemplate) + { + invokeTemplate = WString(_invokeTemplate, false); + } + if (_closureTemplate) + { + closureTemplate = WString(_closureTemplate, false); + } + } + + IMethodInfo::ICpp* GetCpp()override + { + return invokeTemplate.Length() == 0 || closureTemplate.Length() == 0 ? nullptr : this; + } + }; + + template + class CustomMethodInfoImpl : public MethodInfoImpl_StaticCpp + { + protected: + R(__thiscall TClass::* method)(TArgs...); + + Value InvokeInternal(const Value& thisObject, collections::Array& arguments)override + { + TClass* object=UnboxValue(thisObject, GetOwnerTypeDescriptor(), L"thisObject"); + return internal_helper::BoxedMethodInvoker::Invoke(object, method, this, arguments, typename RemoveCVR::Type()...); + } + + Value CreateFunctionProxyInternal(const Value& thisObject)override + { + TClass* object=UnboxValue(thisObject, GetOwnerTypeDescriptor(), L"thisObject"); + Func proxy(object, method); + return BoxParameter>(proxy); + } + public: + CustomMethodInfoImpl(const wchar_t* parameterNames[], R(__thiscall TClass::* _method)(TArgs...), const wchar_t* _invokeTemplate, const wchar_t* _closureTemplate) + :MethodInfoImpl_StaticCpp(0, TypeInfoRetriver::CreateTypeInfo(), false, _invokeTemplate, _closureTemplate) + ,method(_method) + { + internal_helper::ConstructorArgumentAdder>::Add(this, parameterNames, 0); + } + }; + + template + class CustomExternalMethodInfoImpl : public MethodInfoImpl_StaticCpp + { + protected: + R(*method)(TClass*, TArgs...); + + Value InvokeInternal(const Value& thisObject, collections::Array& arguments)override + { + TClass* object=UnboxValue(thisObject, GetOwnerTypeDescriptor(), L"thisObject"); + return internal_helper::BoxedExternalMethodInvoker::Invoke(object, method, this, arguments, typename RemoveCVR::Type()...); + } + + Value CreateFunctionProxyInternal(const Value& thisObject)override + { + TClass* object=UnboxValue(thisObject, GetOwnerTypeDescriptor(), L"thisObject"); + Func proxy = Curry(Func(method))(object); + return BoxParameter>(proxy); + } + public: + CustomExternalMethodInfoImpl(const wchar_t* parameterNames[], R(*_method)(TClass*, TArgs...), const wchar_t* _invokeTemplate, const wchar_t* _closureTemplate) + :MethodInfoImpl_StaticCpp(0, TypeInfoRetriver::CreateTypeInfo(), false, _invokeTemplate, _closureTemplate) + ,method(_method) + { + internal_helper::ConstructorArgumentAdder>::Add(this, parameterNames, 0); + } + }; + +/*********************************************************************** +CustomStaticMethodInfoImpl +***********************************************************************/ + + namespace internal_helper + { + template + struct BoxedStaticMethodInvoker + { + static Value Invoke(R(* method)(TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) + { + UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); + R result = method(args...); + return BoxParameter(result, methodInfo->GetReturn()->GetTypeDescriptor()); + } + }; + + template + struct BoxedStaticMethodInvoker + { + static Value Invoke(void(* method)(TArgs...), MethodInfoImpl* methodInfo, collections::Array& arguments, typename RemoveCVR::Type&& ...args) + { + UnboxSpecifiedParameter(methodInfo, arguments, 0, args...); + method(args...); + return Value(); + } + }; + } + + template + class CustomStaticMethodInfoImpl : public MethodInfoImpl_StaticCpp + { + protected: + R(* method)(TArgs...); + + Value InvokeInternal(const Value& thisObject, collections::Array& arguments)override + { + return internal_helper::BoxedStaticMethodInvoker::Invoke(method, this, arguments, typename RemoveCVR::Type()...); + } + + Value CreateFunctionProxyInternal(const Value& thisObject)override + { + Func proxy(method); + return BoxParameter>(proxy); + } + public: + CustomStaticMethodInfoImpl(const wchar_t* parameterNames[], R(* _method)(TArgs...), const wchar_t* _invokeTemplate, const wchar_t* _closureTemplate) + :MethodInfoImpl_StaticCpp(0, TypeInfoRetriver::CreateTypeInfo(), true, _invokeTemplate, _closureTemplate) + ,method(_method) + { + internal_helper::ConstructorArgumentAdder>::Add(this, parameterNames, 0); + } + }; + +/*********************************************************************** +CustomEventInfoImpl +***********************************************************************/ + + namespace internal_helper + { + template + struct BoxedEventInvoker + { + static void Invoke(Event& eventObject, Ptr arguments, typename RemoveCVR::Type&& ...args) + { + UnboxSpecifiedParameter(arguments, 0, args...); + eventObject(args...); + } + }; + } + + template + class CustomEventInfoImpl : public EventInfoImpl + { + protected: + Event TClass::* eventRef; + + Ptr AttachInternal(DescriptableObject* thisObject, Ptr handler)override + { + TClass* object = UnboxValue(Value::From(thisObject), GetOwnerTypeDescriptor(), L"thisObject"); + Event& eventObject = object->*eventRef; + auto func = Func([=](TArgs ...args) + { + auto arguments = IValueList::Create(); + internal_helper::AddValueToList(arguments, ForwardValue(args)...); + handler->Invoke(arguments); + }); + return EventHelper::Attach(eventObject, func); + } + + bool DetachInternal(DescriptableObject* thisObject, Ptr handler)override + { + TClass* object = UnboxValue(Value::From(thisObject), GetOwnerTypeDescriptor(), L"thisObject"); + Event& eventObject = object->*eventRef; + return EventHelper::Detach(eventObject, handler); + } + + void InvokeInternal(DescriptableObject* thisObject, Ptr arguments)override + { + TClass* object = UnboxValue(Value::From(thisObject), GetOwnerTypeDescriptor(), L"thisObject"); + Event& eventObject = object->*eventRef; + internal_helper::BoxedEventInvoker::Invoke(eventObject, arguments, typename RemoveCVR::Type()...); + } + + Ptr GetHandlerTypeInternal()override + { + return TypeInfoRetriver>::CreateTypeInfo(); + } + public: + CustomEventInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name, Event TClass::* _eventRef) + :EventInfoImpl(_ownerTypeDescriptor, _name) + , eventRef(_eventRef) + { + } + + ~CustomEventInfoImpl() + { + } + + IEventInfo::ICpp* GetCpp()override + { + return nullptr; + } + }; + + template + struct CustomEventFunctionTypeRetriver + { + typedef vint Type; + }; + + template + struct CustomEventFunctionTypeRetriver TClass::*> + { + typedef TEvent Type; + }; +#endif + } + } +} + +#endif + +/*********************************************************************** +.\GUITYPEDESCRIPTORBUILDER_STRUCT.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Reflection + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_STRUCT +#define VCZH_REFLECTION_GUITYPEDESCRIPTORBUILDER_STRUCT + + +namespace vl +{ + namespace reflection + { + namespace description + { + +/*********************************************************************** +DetailTypeInfoRetriver +***********************************************************************/ + + template + struct DetailTypeInfoRetriver + { + static const ITypeInfo::Decorator Decorator=ITypeInfo::TypeDescriptor; + typedef T Type; + typedef T TempValueType; + typedef T& ResultReferenceType; + typedef T ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + return MakePtr(GetTypeDescriptor(), hint); + } +#endif + }; + + template + struct DetailTypeInfoRetriver + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; + typedef typename UpLevelRetriver::Type Type; + typedef T TempValueType; + typedef const T& ResultReferenceType; + typedef const T ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + return TypeInfoRetriver::CreateTypeInfo(); + } +#endif + }; + + template + struct DetailTypeInfoRetriver + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; + typedef typename UpLevelRetriver::Type Type; + typedef T TempValueType; + typedef T& ResultReferenceType; + typedef T ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + return TypeInfoRetriver::CreateTypeInfo(); + } +#endif + }; + + template + struct DetailTypeInfoRetriver + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=ITypeInfo::RawPtr; + typedef typename UpLevelRetriver::Type Type; + typedef T* TempValueType; + typedef T*& ResultReferenceType; + typedef T* ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + return MakePtr(TypeInfoRetriver::CreateTypeInfo()); + } +#endif + }; + + template + struct DetailTypeInfoRetriver, TypeFlags::NonGenericType> + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=ITypeInfo::SharedPtr; + typedef typename UpLevelRetriver::Type Type; + typedef Ptr TempValueType; + typedef Ptr& ResultReferenceType; + typedef Ptr ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + return MakePtr(TypeInfoRetriver::CreateTypeInfo()); + } +#endif + }; + + template + struct DetailTypeInfoRetriver, TypeFlags::NonGenericType> + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=ITypeInfo::Nullable; + typedef typename UpLevelRetriver::Type Type; + typedef Nullable TempValueType; + typedef Nullable& ResultReferenceType; + typedef Nullable ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + return MakePtr(TypeInfoRetriver::CreateTypeInfo()); + } +#endif + }; + + template + struct DetailTypeInfoRetriver + { + typedef DetailTypeInfoRetriver UpLevelRetriver; + + static const ITypeInfo::Decorator Decorator=UpLevelRetriver::Decorator; + typedef typename UpLevelRetriver::Type Type; + typedef typename UpLevelRetriver::TempValueType TempValueType; + typedef T& ResultReferenceType; + typedef T ResultNonReferenceType; + +#ifndef VCZH_DEBUG_NO_REFLECTION + static Ptr CreateTypeInfo(TypeInfoHint hint) + { + return TypeInfoRetriver::CreateTypeInfo(); + } +#endif + }; + + template<> + struct TypeInfoRetriver : public TypeInfoRetriver + { + }; + +/*********************************************************************** +ParameterAccessor +***********************************************************************/ + + template + struct ParameterAccessor + { + static Value BoxParameter(const T& object, ITypeDescriptor* typeDescriptor) + { + return BoxValue(object, typeDescriptor); + } + + static void UnboxParameter(const Value& value, T& result, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + result=UnboxValue(value, typeDescriptor, valueName); + } + }; + + template + struct ValueAccessor + { + static Value BoxValue(T* object, ITypeDescriptor* typeDescriptor) + { + return Value::From(object); + } + + static T* UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + if(value.IsNull()) return nullptr; + T* result = nullptr; + if (value.GetRawPtr()) + { + result = value.GetRawPtr()->SafeAggregationCast(); + } + if(!result) + { +#ifndef VCZH_DEBUG_NO_REFLECTION + if(!typeDescriptor) + { + typeDescriptor=GetTypeDescriptor(); + } + throw ArgumentTypeMismtatchException(valueName, typeDescriptor, Value::RawPtr, value); +#else + CHECK_FAIL(L"vl::reflection::description::UnboxValue()#Argument type mismatch."); +#endif + } + return result; + } + }; + + template + struct ValueAccessor, ITypeInfo::SharedPtr> + { + static Value BoxValue(Ptr object, ITypeDescriptor* typeDescriptor) + { + return Value::From(object); + } + + static Ptr UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + if (value.IsNull()) return nullptr; + Ptr result; + if(value.GetValueType()==Value::RawPtr || value.GetValueType()==Value::SharedPtr) + { + result = value.GetRawPtr()->SafeAggregationCast(); + } + if(!result) + { +#ifndef VCZH_DEBUG_NO_REFLECTION + if(!typeDescriptor) + { + typeDescriptor=GetTypeDescriptor(); + } + throw ArgumentTypeMismtatchException(valueName, typeDescriptor, Value::SharedPtr, value); +#else + CHECK_FAIL(L"vl::reflection::description::UnboxValue()#Argument type mismatch."); +#endif + } + return result; + } + }; + + template + struct ValueAccessor, ITypeInfo::Nullable> + { + static Value BoxValue(Nullable object, ITypeDescriptor* typeDescriptor) + { + return object?ValueAccessor::BoxValue(object.Value(), typeDescriptor):Value(); + } + + static Nullable UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + if(value.IsNull()) + { + return Nullable(); + } + else + { + return ValueAccessor::UnboxValue(value, typeDescriptor, valueName); + } + } + }; + + template + struct ValueAccessor + { + static Value BoxValue(const T& object, ITypeDescriptor* typeDescriptor) + { +#ifndef VCZH_DEBUG_NO_REFLECTION + if(!typeDescriptor) + { + typeDescriptor = GetTypeDescriptor::Type>(); + } +#endif + using Type = typename vl::RemoveCVR::Type; + return Value::From(new IValueType::TypedBox(object), typeDescriptor); + } + + static T UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + using Type = typename vl::RemoveCVR::Type; + if (auto unboxedValue = value.GetBoxedValue().Cast>()) + { + return unboxedValue->value; + } + else + { +#ifndef VCZH_DEBUG_NO_REFLECTION + if (!typeDescriptor) + { + typeDescriptor = GetTypeDescriptor::Type>(); + } + throw ArgumentTypeMismtatchException(valueName, typeDescriptor, Value::BoxedValue, value); +#else + CHECK_FAIL(L"vl::reflection::description::UnboxValue()#Argument type mismatch."); +#endif + } + } + }; + + template<> + struct ValueAccessor + { + static Value BoxValue(const Value& object, ITypeDescriptor* typeDescriptor) + { + return object; + } + + static Value UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + return value; + } + }; + + template<> + struct ValueAccessor + { + static Value BoxValue(const VoidValue& object, ITypeDescriptor* typeDescriptor) + { + return Value(); + } + + static VoidValue UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor, const WString& valueName) + { + return VoidValue(); + } + }; + } + } +} + +#endif + +/*********************************************************************** +.\GUITYPEDESCRIPTORMACROS.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Reflection + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORMACROS +#define VCZH_REFLECTION_GUITYPEDESCRIPTORMACROS + + +#ifndef VCZH_DEBUG_NO_REFLECTION + +/*********************************************************************** +Macros +***********************************************************************/ + +namespace vl +{ + namespace reflection + { + namespace description + { + template + struct CustomTypeDescriptorSelector{}; + + struct MethodPointerBinaryData + { + typedef collections::Dictionary MethodMap; + + class IIndexer : public virtual IDescriptable + { + public: + virtual void IndexMethodInfo(const MethodPointerBinaryData& data, IMethodInfo* methodInfo) = 0; + virtual IMethodInfo* GetIndexedMethodInfo(const MethodPointerBinaryData& data) = 0; + }; + + vint data[4]; + + static inline vint Compare(const MethodPointerBinaryData& a, const MethodPointerBinaryData& b) + { + { + auto result = a.data[0] - b.data[0]; + if (result != 0) return result; + } + { + auto result = a.data[1] - b.data[1]; + if (result != 0) return result; + } + { + auto result = a.data[2] - b.data[2]; + if (result != 0) return result; + } + { + auto result = a.data[3] - b.data[3]; + if (result != 0) return result; + } + return 0; + } + +#define COMPARE(OPERATOR)\ + inline bool operator OPERATOR(const MethodPointerBinaryData& d)const\ + {\ + return Compare(*this, d) OPERATOR 0;\ + } + + COMPARE(<) + COMPARE(<=) + COMPARE(>) + COMPARE(>=) + COMPARE(==) + COMPARE(!=) +#undef COMPARE + }; + + template + union MethodPointerBinaryDataRetriver + { + T methodPointer; + MethodPointerBinaryData binaryData; + + MethodPointerBinaryDataRetriver(T _methodPointer) + { + memset(&binaryData, 0, sizeof(binaryData)); + methodPointer = _methodPointer; + } + + const MethodPointerBinaryData& GetBinaryData() + { + static_assert(sizeof(T) <= sizeof(MethodPointerBinaryData), "Your C++ compiler is bad!"); + return binaryData; + } + }; + + template + struct MethodPointerBinaryDataRecorder + { + static void RecordMethod(const MethodPointerBinaryData& data, ITypeDescriptor* td, IMethodInfo* methodInfo) + { + } + }; + + template + struct MethodPointerBinaryDataRecorder + { + static void RecordMethod(const MethodPointerBinaryData& data, ITypeDescriptor* td, IMethodInfo* methodInfo) + { + auto impl = dynamic_cast(td); + CHECK_ERROR(impl != nullptr, L"Internal error: RecordMethod can only be called when registering methods."); + impl->IndexMethodInfo(data, methodInfo); + } + }; + + template + using FUNCTIONNAME_AddPointer = T*; + +/*********************************************************************** +Type +***********************************************************************/ + +#define BEGIN_TYPE_INFO_NAMESPACE namespace vl{namespace reflection{namespace description{ +#define END_TYPE_INFO_NAMESPACE }}} +#define ADD_TYPE_INFO(TYPENAME)\ + {\ + Ptr type=new CustomTypeDescriptorSelector::CustomTypeDescriptorImpl();\ + manager->SetTypeDescriptor(TypeInfo::content.typeName, type);\ + } + +/*********************************************************************** +InterfaceProxy +***********************************************************************/ + +#define INTERFACE_PROXY_CTOR_RAWPTR(INTERFACE)\ + static INTERFACE* Create(Ptr proxy)\ + {\ + auto obj = new ValueInterfaceProxy();\ + obj->SetProxy(proxy);\ + return obj;\ + }\ + +#define INTERFACE_PROXY_CTOR_SHAREDPTR(INTERFACE)\ + static Ptr Create(Ptr proxy)\ + {\ + auto obj = new ValueInterfaceProxy();\ + obj->SetProxy(proxy);\ + return obj;\ + }\ + +#define BEGIN_INTERFACE_PROXY_NOPARENT_HEADER(INTERFACE)\ + template<>\ + class ValueInterfaceProxy : public ValueInterfaceImpl\ + {\ + typedef INTERFACE _interface_proxy_InterfaceType;\ + public:\ + +#define BEGIN_INTERFACE_PROXY_NOPARENT_RAWPTR(INTERFACE)\ + BEGIN_INTERFACE_PROXY_NOPARENT_HEADER(INTERFACE)\ + INTERFACE_PROXY_CTOR_RAWPTR(INTERFACE)\ + +#define BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(INTERFACE)\ + BEGIN_INTERFACE_PROXY_NOPARENT_HEADER(INTERFACE)\ + INTERFACE_PROXY_CTOR_SHAREDPTR(INTERFACE)\ + +#define BEGIN_INTERFACE_PROXY_HEADER(INTERFACE, ...)\ + template<>\ + class ValueInterfaceProxy : public ValueInterfaceImpl\ + {\ + typedef INTERFACE _interface_proxy_InterfaceType;\ + public:\ + +#define BEGIN_INTERFACE_PROXY_RAWPTR(INTERFACE, ...)\ + BEGIN_INTERFACE_PROXY_HEADER(INTERFACE, __VA_ARGS__)\ + INTERFACE_PROXY_CTOR_RAWPTR(INTERFACE)\ + +#define BEGIN_INTERFACE_PROXY_SHAREDPTR(INTERFACE, ...)\ + BEGIN_INTERFACE_PROXY_HEADER(INTERFACE, __VA_ARGS__)\ + INTERFACE_PROXY_CTOR_SHAREDPTR(INTERFACE)\ + +#define END_INTERFACE_PROXY(INTERFACE)\ + }; + +/*********************************************************************** +InterfaceProxy::Invoke +***********************************************************************/ + + template + auto MethodTypeTrait(TArgument...)->TReturn(TClass::*)(TArgument...) + { + return nullptr; + } + +#define PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME, ...)\ + static ITypeDescriptor* _interface_proxy_typeDescriptor = nullptr;\ + static IMethodInfo* _interface_proxy_methodInfo = nullptr;\ + if (_interface_proxy_typeDescriptor != static_cast(this)->GetTypeDescriptor())\ + {\ + _interface_proxy_typeDescriptor = static_cast(this)->GetTypeDescriptor();\ + CHECK_ERROR(_interface_proxy_typeDescriptor != nullptr, L"Internal error: The type of this interface has not been registered.");\ + auto impl = dynamic_cast(_interface_proxy_typeDescriptor);\ + CHECK_ERROR(impl != nullptr, L"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy.");\ + auto _interface_proxy_method\ + = (decltype(MethodTypeTrait<_interface_proxy_InterfaceType, decltype(METHODNAME(__VA_ARGS__))>(__VA_ARGS__)))\ + &_interface_proxy_InterfaceType::METHODNAME;\ + MethodPointerBinaryDataRetriver binaryData(_interface_proxy_method);\ + _interface_proxy_methodInfo = impl->GetIndexedMethodInfo(binaryData.GetBinaryData());\ + }\ + +#define INVOKE_INTERFACE_PROXY(METHODNAME, ...)\ + PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME, __VA_ARGS__)\ + proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create(collections::From((collections::Array&)(Value_xs(), __VA_ARGS__)))) + +#define INVOKE_INTERFACE_PROXY_NOPARAMS(METHODNAME)\ + PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME)\ + proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create()) + +#define INVOKEGET_INTERFACE_PROXY(METHODNAME, ...)\ + PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME, __VA_ARGS__)\ + return UnboxValue(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create(collections::From((collections::Array&)(Value_xs(), __VA_ARGS__))))) + +#define INVOKEGET_INTERFACE_PROXY_NOPARAMS(METHODNAME)\ + PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME)\ + return UnboxValue(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create())) + +/*********************************************************************** +Enum +***********************************************************************/ + +#define BEGIN_ENUM_ITEM_FLAG(TYPENAME, TDFLAGS)\ + template<>\ + struct CustomTypeDescriptorSelector\ + {\ + public:\ + class CustomTypeDescriptorImpl : public EnumTypeDescriptor\ + {\ + typedef TYPENAME EnumType;\ + public:\ + void LoadInternal()override\ + {\ + EnumTypeDescriptor::LoadInternal();\ + +#define BEGIN_ENUM_ITEM(TYPENAME) BEGIN_ENUM_ITEM_FLAG(TYPENAME, TypeDescriptorFlags::NormalEnum) +#define BEGIN_ENUM_ITEM_MERGABLE(TYPENAME) BEGIN_ENUM_ITEM_FLAG(TYPENAME, TypeDescriptorFlags::FlagEnum) + +#define END_ENUM_ITEM(TYPENAME)\ + }\ + };\ + }; + +#define ENUM_ITEM_NAMESPACE(TYPENAME) typedef TYPENAME EnumItemNamespace; +#define ENUM_ITEM(ITEMNAME) enumType->AddItem(L ## #ITEMNAME, ITEMNAME); +#define ENUM_NAMESPACE_ITEM(ITEMNAME) enumType->AddItem(L ## #ITEMNAME, EnumItemNamespace::ITEMNAME); +#define ENUM_CLASS_ITEM(ITEMNAME) enumType->AddItem(L ## #ITEMNAME, EnumType::ITEMNAME); + +/*********************************************************************** +Struct +***********************************************************************/ + +#define BEGIN_STRUCT_MEMBER_FLAG(TYPENAME, TDFLAGS)\ + template<>\ + struct CustomTypeDescriptorSelector\ + {\ + public:\ + class CustomTypeDescriptorImpl : public StructTypeDescriptor\ + {\ + typedef TYPENAME StructType;\ + protected:\ + void LoadInternal()override\ + { + +#define BEGIN_STRUCT_MEMBER(TYPENAME)\ + BEGIN_STRUCT_MEMBER_FLAG(TYPENAME, TypeDescriptorFlags::Struct) + +#define END_STRUCT_MEMBER(TYPENAME)\ + }\ + };\ + }; + +#define STRUCT_MEMBER(FIELDNAME)\ + fields.Add(L ## #FIELDNAME, new StructFieldInfoFIELDNAME)>(this, &StructType::FIELDNAME, L ## #FIELDNAME)); + +/*********************************************************************** +Class +***********************************************************************/ + +#define BEGIN_CLASS_MEMBER(TYPENAME)\ + template<>\ + struct CustomTypeDescriptorSelector\ + {\ + public:\ + class CustomTypeDescriptorImpl : public TypeDescriptorImpl\ + {\ + typedef TYPENAME ClassType;\ + static const TypeDescriptorFlags TDFlags = TypeDescriptorFlags::Class;\ + public:\ + CustomTypeDescriptorImpl()\ + :TypeDescriptorImpl(TDFlags, &TypeInfo::content)\ + {\ + Description::SetAssociatedTypeDescroptor(this);\ + }\ + ~CustomTypeDescriptorImpl()\ + {\ + Description::SetAssociatedTypeDescroptor(0);\ + }\ + protected:\ + bool IsAggregatable()override\ + {\ + return AcceptValue>::YesNoType>::Result;\ + }\ + void LoadInternal()override\ + { + +#define CLASS_MEMBER_BASE(TYPENAME)\ + AddBaseType(description::GetTypeDescriptor()); + +#define END_CLASS_MEMBER(TYPENAME)\ + if (GetBaseTypeDescriptorCount() == 0) CLASS_MEMBER_BASE(DescriptableObject)\ + }\ + };\ + }; + +/*********************************************************************** +Interface +***********************************************************************/ + +#define BEGIN_INTERFACE_MEMBER_NOPROXY_FLAG(TYPENAME, TDFLAGS)\ + template<>\ + struct CustomTypeDescriptorSelector\ + {\ + public:\ + class CustomTypeDescriptorImpl : public TypeDescriptorImpl, public MethodPointerBinaryData::IIndexer\ + {\ + typedef TYPENAME ClassType;\ + static const TypeDescriptorFlags TDFlags = TDFLAGS;\ + MethodPointerBinaryData::MethodMap methodsForProxy;\ + public:\ + CustomTypeDescriptorImpl()\ + :TypeDescriptorImpl(TDFLAGS, &TypeInfo::content)\ + {\ + Description::SetAssociatedTypeDescroptor(this);\ + }\ + ~CustomTypeDescriptorImpl()\ + {\ + Description::SetAssociatedTypeDescroptor(0);\ + }\ + void IndexMethodInfo(const MethodPointerBinaryData& data, IMethodInfo* methodInfo)override\ + {\ + methodsForProxy.Add(data, methodInfo);\ + }\ + IMethodInfo* GetIndexedMethodInfo(const MethodPointerBinaryData& data)override\ + {\ + Load();\ + return methodsForProxy[data];\ + }\ + protected:\ + void LoadInternal()override\ + { + +#define BEGIN_INTERFACE_MEMBER_NOPROXY(TYPENAME)\ + BEGIN_INTERFACE_MEMBER_NOPROXY_FLAG(TYPENAME, TypeDescriptorFlags::Interface) + +#define BEGIN_INTERFACE_MEMBER(TYPENAME)\ + BEGIN_INTERFACE_MEMBER_NOPROXY(TYPENAME)\ + CLASS_MEMBER_EXTERNALCTOR(decltype(ValueInterfaceProxy::Create(nullptr))(Ptr), { L"proxy" }, vl::reflection::description::ValueInterfaceProxy::Create) + +#define END_INTERFACE_MEMBER(TYPENAME)\ + if (GetBaseTypeDescriptorCount() == 0 && TDFlags == TypeDescriptorFlags::Interface) CLASS_MEMBER_BASE(IDescriptable)\ + }\ + };\ + }; + +/*********************************************************************** +Field +***********************************************************************/ + +#define CLASS_MEMBER_FIELD(FIELDNAME)\ + AddProperty(\ + new CustomFieldInfoImpl<\ + ClassType,\ + decltype(((ClassType*)0)->FIELDNAME)\ + >(this, L ## #FIELDNAME, &ClassType::FIELDNAME)\ + ); + +/*********************************************************************** +Constructor +***********************************************************************/ + +#define NO_PARAMETER {L""} +#define PROTECT_PARAMETERS(...) __VA_ARGS__ + +#define CLASS_MEMBER_CONSTRUCTOR(FUNCTIONTYPE, PARAMETERNAMES)\ + {\ + const wchar_t* parameterNames[]=PARAMETERNAMES;\ + AddConstructor(new CustomConstructorInfoImpl(parameterNames));\ + } + +#define CLASS_MEMBER_EXTERNALCTOR_TEMPLATE(FUNCTIONTYPE, PARAMETERNAMES, SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ + {\ + const wchar_t* parameterNames[]=PARAMETERNAMES;\ + AddConstructor(\ + new CustomStaticMethodInfoImpl(parameterNames, SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ + );\ + } + +#define CLASS_MEMBER_EXTERNALCTOR(FUNCTIONTYPE, PARAMETERNAMES, SOURCE)\ + CLASS_MEMBER_EXTERNALCTOR_TEMPLATE(FUNCTIONTYPE, PROTECT_PARAMETERS(PARAMETERNAMES), (FUNCTIONNAME_AddPointer)&::SOURCE, L"::" L ## #SOURCE L"($Arguments)", L"::vl::Func<$Func>(&::" L ## #SOURCE L")") + +/*********************************************************************** +Method +***********************************************************************/ + +#define CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE, SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ + {\ + const wchar_t* parameterNames[]=PARAMETERNAMES;\ + AddMethod(\ + L ## #FUNCTIONNAME,\ + new CustomExternalMethodInfoImpl<\ + ClassType,\ + vl::function_lambda::LambdaRetriveType::FunctionType\ + >(parameterNames, SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ + );\ + } + +#define CLASS_MEMBER_EXTERNALMETHOD(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE, SOURCE)\ + CLASS_MEMBER_EXTERNALMETHOD_TEMPLATE(FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), FUNCTIONTYPE, &::SOURCE, L"::" L ## #SOURCE L"($This, $Arguments)", L"::vl::Func<$Func>($This, &::" L ## #SOURCE L")") + +#define CLASS_MEMBER_METHOD_OVERLOAD_RENAME_TEMPLATE(EXPECTEDNAME, FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE, INVOKETEMPLATE, CLOSURETEMPLATE)\ + {\ + const wchar_t* parameterNames[]=PARAMETERNAMES;\ + auto methodInfo = new CustomMethodInfoImpl<\ + ClassType,\ + vl::function_lambda::LambdaRetriveType::FunctionType\ + >\ + (parameterNames, (FUNCTIONTYPE)&ClassType::FUNCTIONNAME, INVOKETEMPLATE, CLOSURETEMPLATE);\ + AddMethod(\ + L ## #EXPECTEDNAME,\ + methodInfo\ + );\ + MethodPointerBinaryDataRetriver binaryDataRetriver(&ClassType::FUNCTIONNAME);\ + MethodPointerBinaryDataRecorder::RecordMethod(binaryDataRetriver.GetBinaryData(), this, methodInfo);\ + } + +#define CLASS_MEMBER_METHOD_OVERLOAD_RENAME(EXPECTEDNAME, FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE)\ + CLASS_MEMBER_METHOD_OVERLOAD_RENAME_TEMPLATE(EXPECTEDNAME, FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), FUNCTIONTYPE, L"$This->" L ## #FUNCTIONNAME L"($Arguments)", L"::vl::Func<$Func>($This, &$Type::" L ## #FUNCTIONNAME L")") + +#define CLASS_MEMBER_METHOD_OVERLOAD(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE)\ + CLASS_MEMBER_METHOD_OVERLOAD_RENAME_TEMPLATE(FUNCTIONNAME, FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), FUNCTIONTYPE, nullptr, nullptr) + +#define CLASS_MEMBER_METHOD_RENAME(EXPECTEDNAME, FUNCTIONNAME, PARAMETERNAMES)\ + CLASS_MEMBER_METHOD_OVERLOAD_RENAME(EXPECTEDNAME, FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), decltype(&ClassType::FUNCTIONNAME)) + +#define CLASS_MEMBER_METHOD(FUNCTIONNAME, PARAMETERNAMES)\ + CLASS_MEMBER_METHOD_OVERLOAD(FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), decltype(&ClassType::FUNCTIONNAME)) + +/*********************************************************************** +Static Method +***********************************************************************/ + +#define CLASS_MEMBER_STATIC_EXTERNALMETHOD_TEMPLATE(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE, SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ + {\ + const wchar_t* parameterNames[]=PARAMETERNAMES;\ + AddMethod(\ + L ## #FUNCTIONNAME,\ + new CustomStaticMethodInfoImpl<\ + vl::function_lambda::FunctionObjectRetriveType::FunctionType\ + >(parameterNames, (FUNCTIONTYPE)SOURCE, INVOKETEMPLATE, CLOSURETEMPLATE)\ + );\ + } + +#define CLASS_MEMBER_STATIC_EXTERNALMETHOD(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE, SOURCE)\ + CLASS_MEMBER_STATIC_EXTERNALMETHOD_TEMPLATE(FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), FUNCTIONTYPE, &::SOURCE, L"::" L ## #SOURCE L"($Arguments)", L"::vl::Func<$Func>(&::" L ## #SOURCE L")") + +#define CLASS_MEMBER_STATIC_METHOD_OVERLOAD(FUNCTIONNAME, PARAMETERNAMES, FUNCTIONTYPE)\ + CLASS_MEMBER_STATIC_EXTERNALMETHOD_TEMPLATE(FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), FUNCTIONTYPE, &ClassType::FUNCTIONNAME, nullptr, nullptr) + +#define CLASS_MEMBER_STATIC_METHOD(FUNCTIONNAME, PARAMETERNAMES)\ + CLASS_MEMBER_STATIC_METHOD_OVERLOAD(FUNCTIONNAME, PROTECT_PARAMETERS(PARAMETERNAMES), decltype(&ClassType::FUNCTIONNAME)) + +/*********************************************************************** +Event +***********************************************************************/ + +#define CLASS_MEMBER_EVENT(EVENTNAME)\ + AddEvent(\ + new CustomEventInfoImpl<\ + ClassType,\ + CustomEventFunctionTypeRetriver::Type\ + >(this, L ## #EVENTNAME, &ClassType::EVENTNAME)\ + ); + +/*********************************************************************** +Property +***********************************************************************/ + +#define CLASS_MEMBER_PROPERTY_READONLY(PROPERTYNAME, GETTER)\ + AddProperty(\ + new PropertyInfoImpl(\ + this,\ + L ## #PROPERTYNAME,\ + dynamic_cast(GetMethodGroupByName(L ## #GETTER, true)->GetMethod(0)),\ + nullptr,\ + nullptr\ + )\ + ); + +#define CLASS_MEMBER_PROPERTY(PROPERTYNAME, GETTER, SETTER)\ + AddProperty(\ + new PropertyInfoImpl(\ + this,\ + L ## #PROPERTYNAME,\ + dynamic_cast(GetMethodGroupByName(L ## #GETTER, true)->GetMethod(0)),\ + dynamic_cast(GetMethodGroupByName(L ## #SETTER, true)->GetMethod(0)),\ + nullptr\ + )\ + ); + +#define CLASS_MEMBER_PROPERTY_EVENT(PROPERTYNAME, GETTER, SETTER, EVENT)\ + AddProperty(\ + new PropertyInfoImpl(\ + this,\ + L ## #PROPERTYNAME,\ + dynamic_cast(GetMethodGroupByName(L ## #GETTER, true)->GetMethod(0)),\ + dynamic_cast(GetMethodGroupByName(L ## #SETTER, true)->GetMethod(0)),\ + dynamic_cast(GetEventByName(L ## #EVENT, true))\ + )\ + ); + +#define CLASS_MEMBER_PROPERTY_EVENT_READONLY(PROPERTYNAME, GETTER, EVENT)\ + AddProperty(\ + new PropertyInfoImpl(\ + this,\ + L ## #PROPERTYNAME,\ + dynamic_cast(GetMethodGroupByName(L ## #GETTER, true)->GetMethod(0)),\ + nullptr,\ + dynamic_cast(GetEventByName(L ## #EVENT, true))\ + )\ + ); + +#define CLASS_MEMBER_PROPERTY_REFERENCETEMPLATE(PROPERTYNAME, GETTER, SETTER, REFERENCETEMPLATE)\ + AddProperty(\ + new PropertyInfoImpl_StaticCpp(\ + this,\ + L ## #PROPERTYNAME,\ + dynamic_cast(GetMethodGroupByName(L ## #GETTER, true)->GetMethod(0)),\ + dynamic_cast(GetMethodGroupByName(L ## #SETTER, true)->GetMethod(0)),\ + nullptr,\ + WString(REFERENCETEMPLATE, false)\ + )\ + ); + +#define CLASS_MEMBER_PROPERTY_READONLY_FAST(PROPERTYNAME)\ + CLASS_MEMBER_METHOD(Get##PROPERTYNAME, NO_PARAMETER)\ + CLASS_MEMBER_PROPERTY_READONLY(PROPERTYNAME, Get##PROPERTYNAME)\ + +#define CLASS_MEMBER_PROPERTY_FAST(PROPERTYNAME)\ + CLASS_MEMBER_METHOD(Get##PROPERTYNAME, NO_PARAMETER)\ + CLASS_MEMBER_METHOD(Set##PROPERTYNAME, {L"value"})\ + CLASS_MEMBER_PROPERTY(PROPERTYNAME, Get##PROPERTYNAME, Set##PROPERTYNAME)\ + +#define CLASS_MEMBER_PROPERTY_EVENT_FAST(PROPERTYNAME, EVENTNAME)\ + CLASS_MEMBER_METHOD(Get##PROPERTYNAME, NO_PARAMETER)\ + CLASS_MEMBER_METHOD(Set##PROPERTYNAME, {L"value"})\ + CLASS_MEMBER_PROPERTY_EVENT(PROPERTYNAME, Get##PROPERTYNAME, Set##PROPERTYNAME, EVENTNAME)\ + +#define CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(PROPERTYNAME, EVENTNAME)\ + CLASS_MEMBER_METHOD(Get##PROPERTYNAME, NO_PARAMETER)\ + CLASS_MEMBER_PROPERTY_EVENT_READONLY(PROPERTYNAME, Get##PROPERTYNAME, EVENTNAME)\ + + } + } +} + +#endif +#endif + + +/*********************************************************************** +.\GUITYPEDESCRIPTORREFLECTION.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::Reflection + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_REFLECTION_GUITYPEDESCRIPTORREFLECTION +#define VCZH_REFLECTION_GUITYPEDESCRIPTORREFLECTION + + +namespace vl +{ + namespace reflection + { + namespace description + { + +/*********************************************************************** +Predefined Types +***********************************************************************/ + +#define REFLECTION_PREDEFINED_PRIMITIVE_TYPES(F)\ + F(vuint8_t) \ + F(vuint16_t) \ + F(vuint32_t) \ + F(vuint64_t) \ + F(vint8_t) \ + F(vint16_t) \ + F(vint32_t) \ + F(vint64_t) \ + F(float) \ + F(double) \ + F(bool) \ + F(wchar_t) \ + F(WString) \ + F(Locale) \ + +#ifndef VCZH_DEBUG_NO_REFLECTION + +#define REFLECTION_PREDEFINED_COMPLEX_TYPES(F, VOID_TYPE)\ + F(VOID_TYPE) \ + F(VoidValue) \ + F(IDescriptable) \ + F(DescriptableObject) \ + F(DateTime) \ + F(IValueEnumerator) \ + F(IValueEnumerable) \ + F(IValueReadonlyList) \ + F(IValueList) \ + F(IValueObservableList) \ + F(IValueReadonlyDictionary) \ + F(IValueDictionary) \ + F(IValueInterfaceProxy) \ + F(IValueFunctionProxy) \ + F(IValueSubscription) \ + F(IValueCallStack) \ + F(IValueException) \ + F(IBoxedValue) \ + F(IBoxedValue::CompareResult) \ + F(IValueType) \ + F(IEnumType) \ + F(ISerializableType) \ + F(ITypeInfo) \ + F(ITypeInfo::Decorator) \ + F(IMemberInfo) \ + F(IEventHandler) \ + F(IEventInfo) \ + F(IPropertyInfo) \ + F(IParameterInfo) \ + F(IMethodInfo) \ + F(IMethodGroupInfo) \ + F(TypeDescriptorFlags) \ + F(ITypeDescriptor) \ + + DECL_TYPE_INFO(Value) + REFLECTION_PREDEFINED_PRIMITIVE_TYPES(DECL_TYPE_INFO) + REFLECTION_PREDEFINED_COMPLEX_TYPES(DECL_TYPE_INFO, void) + +#endif + +#define DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(TYPENAME)\ + template<>\ + struct TypedValueSerializerProvider\ + {\ + static TYPENAME GetDefaultValue();\ + static bool Serialize(const TYPENAME& input, WString& output);\ + static bool Deserialize(const WString& input, TYPENAME& output);\ + static IBoxedValue::CompareResult Compare(const TYPENAME& a, const TYPENAME& b);\ + };\ + + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vuint8_t) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vuint16_t) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vuint32_t) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vuint64_t) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vint8_t) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vint16_t) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vint32_t) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(vint64_t) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(float) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(double) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(bool) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(wchar_t) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(WString) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(Locale) + DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER(DateTime) + +#undef DEFINE_TYPED_VALUE_SERIALIZER_PROVIDER + +/*********************************************************************** +Interface Implementation Proxy (Implement) +***********************************************************************/ + +#ifndef VCZH_DEBUG_NO_REFLECTION + +#pragma warning(push) +#pragma warning(disable:4250) + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueEnumerator) + Value GetCurrent()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetCurrent); + } + + vint GetIndex()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetIndex); + } + + bool Next()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(Next); + } + END_INTERFACE_PROXY(IValueEnumerator) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueEnumerable) + Ptr CreateEnumerator()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(CreateEnumerator); + } + END_INTERFACE_PROXY(IValueEnumerable) + + BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueReadonlyList, IValueEnumerable) + vint GetCount()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetCount); + } + + Value Get(vint index)override + { + INVOKEGET_INTERFACE_PROXY(Get, index); + } + + bool Contains(const Value& value)override + { + INVOKEGET_INTERFACE_PROXY(Contains, value); + } + + vint IndexOf(const Value& value)override + { + INVOKEGET_INTERFACE_PROXY(IndexOf, value); + } + END_INTERFACE_PROXY(IValueReadonlyList) + + BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueList, IValueReadonlyList) + void Set(vint index, const Value& value)override + { + INVOKE_INTERFACE_PROXY(Set, index, value); + } + + vint Add(const Value& value)override + { + INVOKEGET_INTERFACE_PROXY(Add, value); + } + + vint Insert(vint index, const Value& value)override + { + INVOKEGET_INTERFACE_PROXY(Insert, index, value); + } + + bool Remove(const Value& value)override + { + INVOKEGET_INTERFACE_PROXY(Remove, value); + } + + bool RemoveAt(vint index)override + { + INVOKEGET_INTERFACE_PROXY(RemoveAt, index); + } + + void Clear()override + { + INVOKE_INTERFACE_PROXY_NOPARAMS(Clear); + } + END_INTERFACE_PROXY(IValueList) + + BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueObservableList, IValueList) + END_INTERFACE_PROXY(IValueObservableList) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueReadonlyDictionary) + Ptr GetKeys()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetKeys); + } + + Ptr GetValues()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetValues); + } + + vint GetCount()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetCount); + } + + Value Get(const Value& key)override + { + INVOKEGET_INTERFACE_PROXY(Get, key); + } + END_INTERFACE_PROXY(IValueReadonlyDictionary) + + BEGIN_INTERFACE_PROXY_SHAREDPTR(IValueDictionary, IValueReadonlyDictionary) + void Set(const Value& key, const Value& value)override + { + INVOKE_INTERFACE_PROXY(Set, key, value); + } + + bool Remove(const Value& key)override + { + INVOKEGET_INTERFACE_PROXY(Remove, key); + } + + void Clear()override + { + INVOKE_INTERFACE_PROXY_NOPARAMS(Clear); + } + END_INTERFACE_PROXY(IValueDictionary) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueSubscription) + bool Open()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(Open); + } + + bool Update()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(Update); + } + + bool Close()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(Close); + } + END_INTERFACE_PROXY(IValueSubscription) + +#pragma warning(pop) + +#endif + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + extern vint ITypeDescriptor_GetTypeDescriptorCount(); + extern ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(vint index); + extern ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const WString& name); + extern ITypeDescriptor* ITypeDescriptor_GetTypeDescriptor(const Value& value); + +/*********************************************************************** +LoadPredefinedTypes +***********************************************************************/ + + extern bool LoadPredefinedTypes(); + } + } +} + +#endif + diff --git a/Import/VlppRegex.cpp b/Import/VlppRegex.cpp new file mode 100644 index 00000000..b83d8d21 --- /dev/null +++ b/Import/VlppRegex.cpp @@ -0,0 +1,3962 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "VlppRegex.h" + +/*********************************************************************** +.\REGEX.CPP +***********************************************************************/ + +namespace vl +{ + namespace regex + { + using namespace collections; + using namespace regex_internal; + +/*********************************************************************** +RegexString +***********************************************************************/ + + RegexString::RegexString(vint _start) + :start(_start) + ,length(0) + { + } + + RegexString::RegexString(const WString& _string, vint _start, vint _length) + :value(_length==0?L"":_string.Sub(_start, _length)) + ,start(_start) + ,length(_length) + { + } + + vint RegexString::Start()const + { + return start; + } + + vint RegexString::Length()const + { + return length; + } + + const WString& RegexString::Value()const + { + return value; + } + + bool RegexString::operator==(const RegexString& string)const + { + return start==string.start && length==string.length && value==string.value; + } + +/*********************************************************************** +RegexMatch +***********************************************************************/ + + RegexMatch::RegexMatch(const WString& _string, PureResult* _result) + :success(true) + ,result(_string, _result->start, _result->length) + { + } + + RegexMatch::RegexMatch(const WString& _string, RichResult* _result, RichInterpretor* _rich) + :success(true) + ,result(_string, _result->start, _result->length) + { + for(vint i=0;i<_result->captures.Count();i++) + { + CaptureRecord& capture=_result->captures[i]; + if(capture.capture==-1) + { + captures.Add(RegexString(_string, capture.start, capture.length)); + } + else + { + groups.Add(_rich->CaptureNames().Get(capture.capture), RegexString(_string, capture.start, capture.length)); + } + } + } + + RegexMatch::RegexMatch(const RegexString& _result) + :success(false) + ,result(_result) + { + } + + bool RegexMatch::Success()const + { + return success; + } + + const RegexString& RegexMatch::Result()const + { + return result; + } + + const RegexMatch::CaptureList& RegexMatch::Captures()const + { + return captures; + } + + const RegexMatch::CaptureGroup& RegexMatch::Groups()const + { + return groups; + } + +/*********************************************************************** +Regex +***********************************************************************/ + + void Regex::Process(const WString& text, bool keepEmpty, bool keepSuccess, bool keepFail, RegexMatch::List& matches)const + { + if(rich) + { + const wchar_t* start=text.Buffer(); + const wchar_t* input=start; + RichResult result; + while(rich->Match(input, start, result)) + { + vint offset=input-start; + if(keepFail) + { + if(result.start>offset || keepEmpty) + { + matches.Add(new RegexMatch(RegexString(text, offset, result.start-offset))); + } + } + if(keepSuccess) + { + matches.Add(new RegexMatch(text, &result, rich)); + } + input=start+result.start+result.length; + } + if(keepFail) + { + vint remain=input-start; + vint length=text.Length()-remain; + if(length || keepEmpty) + { + matches.Add(new RegexMatch(RegexString(text, remain, length))); + } + } + } + else + { + const wchar_t* start=text.Buffer(); + const wchar_t* input=start; + PureResult result; + while(pure->Match(input, start, result)) + { + vint offset=input-start; + if(keepFail) + { + if(result.start>offset || keepEmpty) + { + matches.Add(new RegexMatch(RegexString(text, offset, result.start-offset))); + } + } + if(keepSuccess) + { + matches.Add(new RegexMatch(text, &result)); + } + input=start+result.start+result.length; + } + if(keepFail) + { + vint remain=input-start; + vint length=text.Length()-remain; + if(length || keepEmpty) + { + matches.Add(new RegexMatch(RegexString(text, remain, length))); + } + } + } + } + + Regex::Regex(const WString& code, bool preferPure) + :pure(0) + ,rich(0) + { + CharRange::List subsets; + RegexExpression::Ref regex=ParseRegexExpression(code); + Expression::Ref expression=regex->Merge(); + expression->NormalizeCharSet(subsets); + + bool pureRequired=false; + bool richRequired=false; + if(preferPure) + { + if(expression->HasNoExtension()) + { + pureRequired=true; + } + else + { + if(expression->CanTreatAsPure()) + { + pureRequired=true; + richRequired=true; + } + else + { + richRequired=true; + } + } + } + else + { + richRequired=true; + } + + try + { + if(pureRequired) + { + Dictionary nfaStateMap; + Group dfaStateMap; + Automaton::Ref eNfa=expression->GenerateEpsilonNfa(); + Automaton::Ref nfa=EpsilonNfaToNfa(eNfa, PureEpsilonChecker, nfaStateMap); + Automaton::Ref dfa=NfaToDfa(nfa, dfaStateMap); + pure=new PureInterpretor(dfa, subsets); + } + if(richRequired) + { + Dictionary nfaStateMap; + Group dfaStateMap; + Automaton::Ref eNfa=expression->GenerateEpsilonNfa(); + Automaton::Ref nfa=EpsilonNfaToNfa(eNfa, RichEpsilonChecker, nfaStateMap); + Automaton::Ref dfa=NfaToDfa(nfa, dfaStateMap); + rich=new RichInterpretor(dfa); + } + } + catch(...) + { + if(pure)delete pure; + if(rich)delete rich; + throw; + } + } + + Regex::~Regex() + { + if(pure)delete pure; + if(rich)delete rich; + } + + bool Regex::IsPureMatch()const + { + return rich?false:true; + } + + bool Regex::IsPureTest()const + { + return pure?true:false; + } + + RegexMatch::Ref Regex::MatchHead(const WString& text)const + { + if(rich) + { + RichResult result; + if(rich->MatchHead(text.Buffer(), text.Buffer(), result)) + { + return new RegexMatch(text, &result, rich); + } + else + { + return 0; + } + } + else + { + PureResult result; + if(pure->MatchHead(text.Buffer(), text.Buffer(), result)) + { + return new RegexMatch(text, &result); + } + else + { + return 0; + } + } + } + + RegexMatch::Ref Regex::Match(const WString& text)const + { + if(rich) + { + RichResult result; + if(rich->Match(text.Buffer(), text.Buffer(), result)) + { + return new RegexMatch(text, &result, rich); + } + else + { + return 0; + } + } + else + { + PureResult result; + if(pure->Match(text.Buffer(), text.Buffer(), result)) + { + return new RegexMatch(text, &result); + } + else + { + return 0; + } + } + } + + bool Regex::TestHead(const WString& text)const + { + if(pure) + { + PureResult result; + return pure->MatchHead(text.Buffer(), text.Buffer(), result); + } + else + { + RichResult result; + return rich->MatchHead(text.Buffer(), text.Buffer(), result); + } + } + + bool Regex::Test(const WString& text)const + { + if(pure) + { + PureResult result; + return pure->Match(text.Buffer(), text.Buffer(), result); + } + else + { + RichResult result; + return rich->Match(text.Buffer(), text.Buffer(), result); + } + } + + void Regex::Search(const WString& text, RegexMatch::List& matches)const + { + Process(text, false, true, false, matches); + } + + void Regex::Split(const WString& text, bool keepEmptyMatch, RegexMatch::List& matches)const + { + Process(text, keepEmptyMatch, false, true, matches); + } + + void Regex::Cut(const WString& text, bool keepEmptyMatch, RegexMatch::List& matches)const + { + Process(text, keepEmptyMatch, true, true, matches); + } + +/*********************************************************************** +RegexTokens +***********************************************************************/ + + bool RegexToken::operator==(const RegexToken& _token)const + { + return length==_token.length && token==_token.token && reading==_token.reading; + } + + bool RegexToken::operator==(const wchar_t* _token)const + { + return wcslen(_token)==length && wcsncmp(reading, _token, length)==0; + } + + class RegexTokenEnumerator : public Object, public IEnumerator + { + protected: + RegexToken token; + vint index = -1; + + PureInterpretor* pure; + const Array& stateTokens; + const wchar_t* start; + vint codeIndex; + RegexProc proc; + + const wchar_t* reading; + vint rowStart = 0; + vint columnStart = 0; + bool cacheAvailable = false; + RegexToken cacheToken; + + public: + RegexTokenEnumerator(const RegexTokenEnumerator& enumerator) + :token(enumerator.token) + , index(enumerator.index) + , pure(enumerator.pure) + , stateTokens(enumerator.stateTokens) + , proc(enumerator.proc) + , reading(enumerator.reading) + , start(enumerator.start) + , rowStart(enumerator.rowStart) + , columnStart(enumerator.columnStart) + , codeIndex(enumerator.codeIndex) + , cacheAvailable(enumerator.cacheAvailable) + , cacheToken(enumerator.cacheToken) + { + } + + RegexTokenEnumerator(PureInterpretor* _pure, const Array& _stateTokens, const wchar_t* _start, vint _codeIndex, RegexProc _proc) + :index(-1) + , pure(_pure) + , stateTokens(_stateTokens) + , start(_start) + , codeIndex(_codeIndex) + , proc(_proc) + , reading(_start) + { + } + + IEnumerator* Clone()const + { + return new RegexTokenEnumerator(*this); + } + + const RegexToken& Current()const + { + return token; + } + + vint Index()const + { + return index; + } + + bool Next() + { + if (!cacheAvailable && !*reading) return false; + if (cacheAvailable) + { + token = cacheToken; + cacheAvailable = false; + } + else + { + token.reading = reading; + token.start = 0; + token.length = 0; + token.token = -2; + token.completeToken = true; + } + + token.rowStart = rowStart; + token.columnStart = columnStart; + token.rowEnd = rowStart; + token.columnEnd = columnStart; + token.codeIndex = codeIndex; + + PureResult result; + while (*reading) + { + vint id = -1; + bool completeToken = true; + if (!pure->MatchHead(reading, start, result)) + { + result.start = reading - start; + + if (id == -1 && result.terminateState != -1) + { + vint state = pure->GetRelatedFinalState(result.terminateState); + if (state != -1) + { + id = stateTokens[state]; + } + } + + if (id == -1) + { + result.length = 1; + } + else + { + completeToken = false; + } + } + else + { + id = stateTokens.Get(result.finalState); + } + + if (id != -1 && proc.extendProc) + { + RegexProcessingToken token(result.start, result.length, id, completeToken, nullptr); + proc.extendProc(proc.argument, reading, -1, true, token); +#if _DEBUG + CHECK_ERROR(token.interTokenState == nullptr, L"RegexTokenEnumerator::Next()#The extendProc is only allowed to create interTokenState in RegexLexerColorizer."); +#endif + result.length = token.length; + id = token.token; + completeToken = token.completeToken; + } + + if (token.token == -2) + { + token.start = result.start; + token.length = result.length; + token.token = id; + token.completeToken = completeToken; + } + else if (token.token == id && id == -1) + { + token.length += result.length; + } + else + { + cacheAvailable = true; + cacheToken.reading = reading; + cacheToken.start = result.start; + cacheToken.length = result.length; + cacheToken.codeIndex = codeIndex; + cacheToken.token = id; + cacheToken.completeToken = completeToken; + } + reading += result.length; + + if (cacheAvailable) + { + break; + } + } + + index++; + + for (vint i = 0; i < token.length; i++) + { + token.rowEnd = rowStart; + token.columnEnd = columnStart; + if (token.reading[i] == L'\n') + { + rowStart++; + columnStart = 0; + } + else + { + columnStart++; + } + } + return true; + } + + void Reset() + { + index = -1; + reading = start; + cacheAvailable = false; + } + + void ReadToEnd(List& tokens, bool(*discard)(vint)) + { + while (Next()) + { + if (!discard(token.token)) + { + tokens.Add(token); + } + } + } + }; + + RegexTokens::RegexTokens(PureInterpretor* _pure, const Array& _stateTokens, const WString& _code, vint _codeIndex, RegexProc _proc) + :pure(_pure) + , stateTokens(_stateTokens) + , code(_code) + , codeIndex(_codeIndex) + , proc(_proc) + { + } + + RegexTokens::RegexTokens(const RegexTokens& tokens) + :pure(tokens.pure) + , stateTokens(tokens.stateTokens) + , code(tokens.code) + , codeIndex(tokens.codeIndex) + , proc(tokens.proc) + { + } + + IEnumerator* RegexTokens::CreateEnumerator()const + { + return new RegexTokenEnumerator(pure, stateTokens, code.Buffer(), codeIndex, proc); + } + + bool DefaultDiscard(vint token) + { + return false; + } + + void RegexTokens::ReadToEnd(collections::List& tokens, bool(*discard)(vint))const + { + if(discard==0) + { + discard=&DefaultDiscard; + } + RegexTokenEnumerator(pure, stateTokens, code.Buffer(), codeIndex, proc).ReadToEnd(tokens, discard); + } + +/*********************************************************************** +RegexLexerWalker +***********************************************************************/ + + RegexLexerWalker::RegexLexerWalker(PureInterpretor* _pure, const Array& _stateTokens) + :pure(_pure) + , stateTokens(_stateTokens) + { + } + + RegexLexerWalker::RegexLexerWalker(const RegexLexerWalker& tokens) + : pure(tokens.pure) + , stateTokens(tokens.stateTokens) + { + } + + RegexLexerWalker::~RegexLexerWalker() + { + } + + RegexTokens::~RegexTokens() + { + } + + vint RegexLexerWalker::GetStartState()const + { + return pure->GetStartState(); + } + + vint RegexLexerWalker::GetRelatedToken(vint state)const + { + vint finalState=pure->GetRelatedFinalState(state); + return finalState==-1?-1:stateTokens.Get(finalState); + } + + void RegexLexerWalker::Walk(wchar_t input, vint& state, vint& token, bool& finalState, bool& previousTokenStop)const + { + vint previousState=state; + token=-1; + finalState=false; + previousTokenStop=false; + if(state==-1) + { + state=pure->GetStartState(); + previousTokenStop=true; + } + + state=pure->Transit(input, state); + if(state==-1) + { + previousTokenStop=true; + if(previousState==-1) + { + finalState=true; + return; + } + else if(pure->IsFinalState(previousState)) + { + state=pure->Transit(input, pure->GetStartState()); + } + } + if(pure->IsFinalState(state)) + { + token=stateTokens.Get(state); + finalState=true; + return; + } + else + { + finalState=state==-1; + return; + } + } + + vint RegexLexerWalker::Walk(wchar_t input, vint state)const + { + vint token=-1; + bool finalState=false; + bool previousTokenStop=false; + Walk(input, state, token, finalState, previousTokenStop); + return state; + } + + bool RegexLexerWalker::IsClosedToken(const wchar_t* input, vint length)const + { + vint state=pure->GetStartState(); + for(vint i=0;iTransit(input[i], state); + if(state==-1) return true; + if(pure->IsDeadState(state)) return true; + } + return false; + } + + bool RegexLexerWalker::IsClosedToken(const WString& input)const + { + return IsClosedToken(input.Buffer(), input.Length()); + } + +/*********************************************************************** +RegexLexerColorizer +***********************************************************************/ + + RegexLexerColorizer::RegexLexerColorizer(const RegexLexerWalker& _walker, RegexProc _proc) + :walker(_walker) + , proc(_proc) + { + internalState.currentState = walker.GetStartState(); + } + + RegexLexerColorizer::RegexLexerColorizer(const RegexLexerColorizer& colorizer) + :walker(colorizer.walker) + , proc(colorizer.proc) + , internalState(colorizer.internalState) + { + } + + RegexLexerColorizer::~RegexLexerColorizer() + { + } + + RegexLexerColorizer::InternalState RegexLexerColorizer::GetInternalState() + { + return internalState; + } + void RegexLexerColorizer::SetInternalState(InternalState state) + { + internalState = state; + } + + void RegexLexerColorizer::Pass(wchar_t input) + { + WalkOneToken(&input, 1, 0, false); + } + + vint RegexLexerColorizer::GetStartState()const + { + return walker.GetStartState(); + } + + void RegexLexerColorizer::CallExtendProcAndColorizeProc(const wchar_t* input, vint length, RegexProcessingToken& token, bool colorize) + { + vint oldTokenLength = token.length; + proc.extendProc(proc.argument, input + token.start, length - token.start, false, token); +#if _DEBUG + { + bool pausedAtTheEnd = token.start + token.length == length && !token.completeToken; + CHECK_ERROR( + token.completeToken || pausedAtTheEnd, + L"RegexLexerColorizer::WalkOneToken(const wchar_t*, vint, vint, bool)#The extendProc is not allowed pause before the end of the input." + ); + CHECK_ERROR( + token.completeToken || token.token != -1, + L"RegexLexerColorizer::WalkOneToken(const wchar_t*, vint, vint, bool)#The extendProc is not allowed to pause without a valid token id." + ); + CHECK_ERROR( + oldTokenLength <= token.length, + L"RegexLexerColorizer::WalkOneToken(const wchar_t*, vint, vint, bool)#The extendProc is not allowed to decrease the token length." + ); + CHECK_ERROR( + (token.interTokenState == nullptr) == !pausedAtTheEnd, + L"RegexLexerColorizer::Colorize(const wchar_t*, vint, void*)#The extendProc should return an inter token state object if and only if a valid token does not end at the end of the input." + ); + } +#endif + if ((internalState.interTokenState = token.interTokenState)) + { + internalState.interTokenId = token.token; + internalState.currentState = walker.GetStartState(); + } + if (colorize) + { + proc.colorizeProc(proc.argument, token.start, token.length, token.token); + } + } + + vint RegexLexerColorizer::WalkOneToken(const wchar_t* input, vint length, vint start, bool colorize) + { + if (internalState.interTokenState) + { + RegexProcessingToken token(-1, -1, internalState.interTokenId, false, internalState.interTokenState); + proc.extendProc(proc.argument, input, length, false, token); +#if _DEBUG + { + bool pausedAtTheEnd = token.length == length && !token.completeToken; + CHECK_ERROR( + token.completeToken || pausedAtTheEnd, + L"RegexLexerColorizer::WalkOneToken(const wchar_t*, vint, vint, bool)#The extendProc is not allowed to pause before the end of the input." + ); + CHECK_ERROR( + token.completeToken || token.token == internalState.interTokenId, + L"RegexLexerColorizer::WalkOneToken(const wchar_t*, vint, vint, bool)#The extendProc is not allowed to continue pausing with a different token id." + ); + CHECK_ERROR( + (token.interTokenState == nullptr) == !pausedAtTheEnd, + L"RegexLexerColorizer::Colorize(const wchar_t*, vint, void*)#The extendProc should return an inter token state object if and only if a valid token does not end at the end of the input." + ); + } +#endif + if (colorize) + { + proc.colorizeProc(proc.argument, 0, token.length, token.token); + } + if (!(internalState.interTokenState = token.interTokenState)) + { + internalState.interTokenId = -1; + } + return token.length; + } + + vint lastFinalStateLength = 0; + vint lastFinalStateToken = -1; + + for (vint i = start; i < length; i++) + { + vint currentToken = -1; + bool finalState = false; + bool previousTokenStop = false; + walker.Walk(input[i], internalState.currentState, currentToken, finalState, previousTokenStop); + + if (previousTokenStop) + { + internalState.currentState = walker.GetStartState(); + if (proc.extendProc && lastFinalStateToken != -1) + { + RegexProcessingToken token(start, lastFinalStateLength, lastFinalStateToken, true, nullptr); + CallExtendProcAndColorizeProc(input, length, token, colorize); + return start + token.length; + } + else if (i == start) + { + if (colorize) + { + proc.colorizeProc(proc.argument, start, 1, -1); + } + return i + 1; + } + else + { + if (colorize) + { + proc.colorizeProc(proc.argument, start, lastFinalStateLength, lastFinalStateToken); + } + return start + lastFinalStateLength; + } + } + + if (finalState) + { + lastFinalStateLength = i + 1 - start; + lastFinalStateToken = currentToken; + } + } + + if (lastFinalStateToken != -1 && start + lastFinalStateLength == length) + { + if (proc.extendProc) + { + RegexProcessingToken token(start, lastFinalStateLength, lastFinalStateToken, true, nullptr); + CallExtendProcAndColorizeProc(input, length, token, colorize); + } + else if (colorize) + { + proc.colorizeProc(proc.argument, start, lastFinalStateLength, lastFinalStateToken); + } + } + else if (colorize) + { + proc.colorizeProc(proc.argument, start, length - start, walker.GetRelatedToken(internalState.currentState)); + } + return length; + } + + void* RegexLexerColorizer::Colorize(const wchar_t* input, vint length) + { + vint index = 0; + while (index != length) + { + index = WalkOneToken(input, length, index, true); + } + return internalState.interTokenState; + } + +/*********************************************************************** +RegexLexer +***********************************************************************/ + + RegexLexer::RegexLexer(const collections::IEnumerable& tokens, RegexProc _proc) + :proc(_proc) + { + // Build DFA for all tokens + List expressions; + List dfas; + CharRange::List subsets; + Ptr> enumerator = tokens.CreateEnumerator(); + while (enumerator->Next()) + { + const WString& code = enumerator->Current(); + + RegexExpression::Ref regex = ParseRegexExpression(code); + Expression::Ref expression = regex->Merge(); + expression->CollectCharSet(subsets); + expressions.Add(expression); + } + for (vint i = 0; i < expressions.Count(); i++) + { + Dictionary nfaStateMap; + Group dfaStateMap; + Expression::Ref expression = expressions[i]; + expression->ApplyCharSet(subsets); + Automaton::Ref eNfa = expression->GenerateEpsilonNfa(); + Automaton::Ref nfa = EpsilonNfaToNfa(eNfa, PureEpsilonChecker, nfaStateMap); + Automaton::Ref dfa = NfaToDfa(nfa, dfaStateMap); + dfas.Add(dfa); + } + + // Mark all states in DFAs + for (vint i = 0; i < dfas.Count(); i++) + { + Automaton::Ref dfa = dfas[i]; + for (vint j = 0; j < dfa->states.Count(); j++) + { + if (dfa->states[j]->finalState) + { + dfa->states[j]->userData = (void*)i; + } + else + { + dfa->states[j]->userData = (void*)dfas.Count(); + } + } + } + + // Connect all DFAs to an e-NFA + Automaton::Ref bigEnfa = new Automaton; + for (vint i = 0; i < dfas.Count(); i++) + { + CopyFrom(bigEnfa->states, dfas[i]->states); + CopyFrom(bigEnfa->transitions, dfas[i]->transitions); + } + bigEnfa->startState = bigEnfa->NewState(); + for (vint i = 0; i < dfas.Count(); i++) + { + bigEnfa->NewEpsilon(bigEnfa->startState, dfas[i]->startState); + } + + // Build a single DFA out of the e-NFA + Dictionary nfaStateMap; + Group dfaStateMap; + Automaton::Ref bigNfa = EpsilonNfaToNfa(bigEnfa, PureEpsilonChecker, nfaStateMap); + for (vint i = 0; i < nfaStateMap.Keys().Count(); i++) + { + void* userData = nfaStateMap.Values().Get(i)->userData; + nfaStateMap.Keys()[i]->userData = userData; + } + Automaton::Ref bigDfa = NfaToDfa(bigNfa, dfaStateMap); + for (vint i = 0; i < dfaStateMap.Keys().Count(); i++) + { + void* userData = dfaStateMap.GetByIndex(i).Get(0)->userData; + for (vint j = 1; j < dfaStateMap.GetByIndex(i).Count(); j++) + { + void* newData = dfaStateMap.GetByIndex(i).Get(j)->userData; + if (userData > newData) + { + userData = newData; + } + } + dfaStateMap.Keys()[i]->userData = userData; + } + + // Build state machine + pure = new PureInterpretor(bigDfa, subsets); + stateTokens.Resize(bigDfa->states.Count()); + for (vint i = 0; i < stateTokens.Count(); i++) + { + void* userData = bigDfa->states[i]->userData; + stateTokens[i] = (vint)userData; + } + } + + RegexLexer::~RegexLexer() + { + if (pure)delete pure; + } + + RegexTokens RegexLexer::Parse(const WString& code, vint codeIndex)const + { + pure->PrepareForRelatedFinalStateTable(); + return RegexTokens(pure, stateTokens, code, codeIndex, proc); + } + + RegexLexerWalker RegexLexer::Walk()const + { + pure->PrepareForRelatedFinalStateTable(); + return RegexLexerWalker(pure, stateTokens); + } + + RegexLexerColorizer RegexLexer::Colorize()const + { + return RegexLexerColorizer(Walk(), proc); + } + } +} + +/*********************************************************************** +.\REGEXAUTOMATON.CPP +***********************************************************************/ + +namespace vl +{ + namespace regex_internal + { + using namespace collections; + +/*********************************************************************** +Automaton +***********************************************************************/ + + Automaton::Automaton() + { + startState=0; + } + + State* Automaton::NewState() + { + State* state=new State; + state->finalState=false; + state->userData=0; + states.Add(state); + return state; + } + + Transition* Automaton::NewTransition(State* start, State* end) + { + Transition* transition=new Transition; + transition->source=start; + transition->target=end; + start->transitions.Add(transition); + end->inputs.Add(transition); + transitions.Add(transition); + return transition; + } + + Transition* Automaton::NewChars(State* start, State* end, CharRange range) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::Chars; + transition->range=range; + return transition; + } + + Transition* Automaton::NewEpsilon(State* start, State* end) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::Epsilon; + return transition; + } + + Transition* Automaton::NewBeginString(State* start, State* end) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::BeginString; + return transition; + } + + Transition* Automaton::NewEndString(State* start, State* end) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::EndString; + return transition; + } + + Transition* Automaton::NewNop(State* start, State* end) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::Nop; + return transition; + } + + Transition* Automaton::NewCapture(State* start, State* end, vint capture) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::Capture; + transition->capture=capture; + return transition; + } + + Transition* Automaton::NewMatch(State* start, State* end, vint capture, vint index) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::Match; + transition->capture=capture; + transition->index=index; + return transition; + } + + Transition* Automaton::NewPositive(State* start, State* end) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::Positive; + return transition; + } + + Transition* Automaton::NewNegative(State* start, State* end) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::Negative; + return transition; + } + + Transition* Automaton::NewNegativeFail(State* start, State* end) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::NegativeFail; + return transition; + } + + Transition* Automaton::NewEnd(State* start, State* end) + { + Transition* transition=NewTransition(start, end); + transition->type=Transition::End; + return transition; + } + +/*********************************************************************** +Helpers +***********************************************************************/ + + bool PureEpsilonChecker(Transition* transition) + { + switch(transition->type) + { + case Transition::Epsilon: + case Transition::Nop: + case Transition::Capture: + case Transition::End: + return true; + default: + return false; + } + } + + bool RichEpsilonChecker(Transition* transition) + { + switch(transition->type) + { + case Transition::Epsilon: + return true; + default: + return false; + } + } + + bool AreEqual(Transition* transA, Transition* transB) + { + if(transA->type!=transB->type)return false; + switch(transA->type) + { + case Transition::Chars: + return transA->range==transB->range; + case Transition::Capture: + return transA->capture==transB->capture; + case Transition::Match: + return transA->capture==transB->capture && transA->index==transB->index; + default: + return true; + } + } + + // Collect epsilon states and non-epsilon transitions, their order are maintained to match the e-NFA + void CollectEpsilon(State* targetState, State* sourceState, bool(*epsilonChecker)(Transition*), List& epsilonStates, List& transitions) + { + if(!epsilonStates.Contains(sourceState)) + { + epsilonStates.Add(sourceState); + for(vint i=0;itransitions.Count();i++) + { + Transition* transition=sourceState->transitions[i]; + if(epsilonChecker(transition)) + { + if(!epsilonStates.Contains(transition->target)) + { + if(transition->target->finalState) + { + targetState->finalState=true; + } + CollectEpsilon(targetState, transition->target, epsilonChecker, epsilonStates, transitions); + } + } + else + { + transitions.Add(transition); + } + } + } + } + + Automaton::Ref EpsilonNfaToNfa(Automaton::Ref source, bool(*epsilonChecker)(Transition*), Dictionary& nfaStateMap) + { + Automaton::Ref target=new Automaton; + Dictionary stateMap; // source->target + List epsilonStates; // current epsilon closure + List transitions; // current non-epsilon transitions + + stateMap.Add(source->startState, target->NewState()); + nfaStateMap.Add(stateMap[source->startState], source->startState); + target->startState=target->states[0].Obj(); + CopyFrom(target->captureNames, source->captureNames); + + for(vint i=0;istates.Count();i++) + { + // Clear cache + State* targetState=target->states[i].Obj(); + State* sourceState=nfaStateMap[targetState]; + if(sourceState->finalState) + { + targetState->finalState=true; + } + epsilonStates.Clear(); + transitions.Clear(); + + // Collect epsilon states and non-epsilon transitions + CollectEpsilon(targetState, sourceState, epsilonChecker, epsilonStates, transitions); + + // Iterate through all non-epsilon transitions + for(vint j=0;jtarget)) + { + stateMap.Add(transition->target, target->NewState()); + nfaStateMap.Add(stateMap[transition->target], transition->target); + } + // Copy transition to connect between two non-epsilon state + Transition* newTransition=target->NewTransition(targetState, stateMap[transition->target]); + newTransition->capture=transition->capture; + newTransition->index=transition->index; + newTransition->range=transition->range; + newTransition->type=transition->type; + } + } + return target; + } + + Automaton::Ref NfaToDfa(Automaton::Ref source, Group& dfaStateMap) + { + Automaton::Ref target=new Automaton; + Group nfaTransitions; + List transitionClasses; // Maintain order for nfaTransitions.Keys + + CopyFrom(target->captureNames, source->captureNames); + State* startState=target->NewState(); + target->startState=startState; + dfaStateMap.Add(startState, source->startState); + + SortedList transitionTargets; + SortedList relativeStates; + transitionTargets.SetLessMemoryMode(false); + relativeStates.SetLessMemoryMode(false); + + for(vint i=0;istates.Count();i++) + { + State* currentState=target->states[i].Obj(); + nfaTransitions.Clear(); + transitionClasses.Clear(); + + // Iterate through all NFA states which represent the DFA state + const List& nfaStates=dfaStateMap[currentState]; + for(vint j=0;jtransitions.Count();k++) + { + Transition* nfaTransition=nfaState->transitions[k]; + // Check if there is any key in nfaTransitions that has the same input as the current transition + Transition* transitionClass=0; + for(vint l=0;l& transitionSet=nfaTransitions[transitionClasses[j]]; + // Sort all target states and keep unique + transitionTargets.Clear(); + for(vint l=0;ltarget; + if(!transitionTargets.Contains(nfaState)) + { + transitionTargets.Add(nfaState); + } + } + // Check if these NFA states represent a created DFA state + State* dfaState=0; + for(vint k=0;kNewState(); + for(vint k=0;kfinalState) + { + dfaState->finalState=true; + } + } + } + // Create corresponding DFA transition + Transition* transitionClass=transitionClasses[j]; + Transition* newTransition=target->NewTransition(currentState, dfaState); + newTransition->capture=transitionClass->capture; + newTransition->index=transitionClass->index; + newTransition->range=transitionClass->range; + newTransition->type=transitionClass->type; + } + } + + return target; + } + } +} + +/*********************************************************************** +.\REGEXDATA.CPP +***********************************************************************/ + +namespace vl +{ + namespace regex_internal + { + +/*********************************************************************** +CharRange +***********************************************************************/ + + CharRange::CharRange() + :begin(L'\0') + ,end(L'\0') + { + } + + CharRange::CharRange(wchar_t _begin, wchar_t _end) + :begin(_begin) + ,end(_end) + { + } + + bool CharRange::operator<(CharRange item)const + { + return end(CharRange item)const + { + return item.end=(CharRange item)const + { + return *this>item || *this==item; + } + + bool CharRange::operator==(CharRange item)const + { + return begin==item.begin && end==item.end; + } + + bool CharRange::operator!=(CharRange item)const + { + return begin!=item.begin || item.end!=end; + } + + bool CharRange::operator<(wchar_t item)const + { + return end(wchar_t item)const + { + return item=(wchar_t item)const + { + return item<=end; + } + + bool CharRange::operator==(wchar_t item)const + { + return begin<=item && item<=end; + } + + bool CharRange::operator!=(wchar_t item)const + { + return item + { + public: + bool Apply(CharSetExpression* expression, Expression* target) + { + CharSetExpression* expected=dynamic_cast(target); + if(expected) + { + if(expression->reverse!=expected->reverse)return false; + if(expression->ranges.Count()!=expected->ranges.Count())return false; + for(vint i=0;iranges.Count();i++) + { + if(expression->ranges[i]!=expected->ranges[i])return false; + } + return true; + } + return false; + } + + bool Apply(LoopExpression* expression, Expression* target) + { + LoopExpression* expected=dynamic_cast(target); + if(expected) + { + if(expression->min!=expected->min)return false; + if(expression->max!=expected->max)return false; + if(expression->preferLong!=expected->preferLong)return false; + if(!Invoke(expression->expression, expected->expression.Obj()))return false; + return true; + } + return false; + } + + bool Apply(SequenceExpression* expression, Expression* target) + { + SequenceExpression* expected=dynamic_cast(target); + if(expected) + { + if(!Invoke(expression->left, expected->left.Obj()))return false; + if(!Invoke(expression->right, expected->right.Obj()))return false; + return true; + } + return false; + } + + bool Apply(AlternateExpression* expression, Expression* target) + { + AlternateExpression* expected=dynamic_cast(target); + if(expected) + { + if(!Invoke(expression->left, expected->left.Obj()))return false; + if(!Invoke(expression->right, expected->right.Obj()))return false; + return true; + } + return false; + } + + bool Apply(BeginExpression* expression, Expression* target) + { + BeginExpression* expected=dynamic_cast(target); + if(expected) + { + return true; + } + return false; + } + + bool Apply(EndExpression* expression, Expression* target) + { + EndExpression* expected=dynamic_cast(target); + if(expected) + { + return true; + } + return false; + } + + bool Apply(CaptureExpression* expression, Expression* target) + { + CaptureExpression* expected=dynamic_cast(target); + if(expected) + { + if(expression->name!=expected->name)return false; + if(!Invoke(expression->expression, expected->expression.Obj()))return false; + return true; + } + return false; + } + + bool Apply(MatchExpression* expression, Expression* target) + { + MatchExpression* expected=dynamic_cast(target); + if(expected) + { + if(expression->name!=expected->name)return false; + if(expression->index!=expected->index)return false; + return true; + } + return false; + } + + bool Apply(PositiveExpression* expression, Expression* target) + { + PositiveExpression* expected=dynamic_cast(target); + if(expected) + { + if(!Invoke(expression->expression, expected->expression.Obj()))return false; + return true; + } + return false; + } + + bool Apply(NegativeExpression* expression, Expression* target) + { + NegativeExpression* expected=dynamic_cast(target); + if(expected) + { + if(!Invoke(expression->expression, expected->expression.Obj()))return false; + return true; + } + return false; + } + + bool Apply(UsingExpression* expression, Expression* target) + { + UsingExpression* expected=dynamic_cast(target); + if(expected) + { + if(expression->name!=expected->name)return false; + return true; + } + return false; + } + }; + +/*********************************************************************** +HasNoExtensionAlgorithm +***********************************************************************/ + + class HasNoExtensionAlgorithm : public RegexExpressionAlgorithm + { + public: + bool Apply(CharSetExpression* expression, void* target) + { + return true; + } + + bool Apply(LoopExpression* expression, void* target) + { + return expression->preferLong && Invoke(expression->expression, 0); + } + + bool Apply(SequenceExpression* expression, void* target) + { + return Invoke(expression->left, 0) && Invoke(expression->right, 0); + } + + bool Apply(AlternateExpression* expression, void* target) + { + return Invoke(expression->left, 0) && Invoke(expression->right, 0); + } + + bool Apply(BeginExpression* expression, void* target) + { + return false; + } + + bool Apply(EndExpression* expression, void* target) + { + return false; + } + + bool Apply(CaptureExpression* expression, void* target) + { + return false; + } + + bool Apply(MatchExpression* expression, void* target) + { + return false; + } + + bool Apply(PositiveExpression* expression, void* target) + { + return false; + } + + bool Apply(NegativeExpression* expression, void* target) + { + return false; + } + + bool Apply(UsingExpression* expression, void* target) + { + return false; + } + }; + +/*********************************************************************** +CanTreatAsPureAlgorithm +***********************************************************************/ + + class CanTreatAsPureAlgorithm : public RegexExpressionAlgorithm + { + public: + bool Apply(CharSetExpression* expression, void* target) + { + return true; + } + + bool Apply(LoopExpression* expression, void* target) + { + return expression->preferLong && Invoke(expression->expression, 0); + } + + bool Apply(SequenceExpression* expression, void* target) + { + return Invoke(expression->left, 0) && Invoke(expression->right, 0); + } + + bool Apply(AlternateExpression* expression, void* target) + { + return Invoke(expression->left, 0) && Invoke(expression->right, 0); + } + + bool Apply(BeginExpression* expression, void* target) + { + return false; + } + + bool Apply(EndExpression* expression, void* target) + { + return false; + } + + bool Apply(CaptureExpression* expression, void* target) + { + return Invoke(expression->expression, 0); + } + + bool Apply(MatchExpression* expression, void* target) + { + return false; + } + + bool Apply(PositiveExpression* expression, void* target) + { + return false; + } + + bool Apply(NegativeExpression* expression, void* target) + { + return false; + } + + bool Apply(UsingExpression* expression, void* target) + { + return false; + } + }; + +/*********************************************************************** +CharSetNormalizationAlgorithm +***********************************************************************/ + + class NormalizedCharSet + { + public: + CharRange::List ranges; + }; + + class CharSetAlgorithm : public RegexExpressionAlgorithm + { + public: + virtual void Process(CharSetExpression* expression, NormalizedCharSet* target, CharRange range)=0; + + void Loop(CharSetExpression* expression, CharRange::List& ranges, NormalizedCharSet* target) + { + if(expression->reverse) + { + wchar_t begin=1; + for(vint i=0;ibegin) + { + Process(expression, target, CharRange(begin, range.begin-1)); + } + begin=range.end+1; + } + if(begin<=65535) + { + Process(expression, target, CharRange(begin, 65535)); + } + } + else + { + for(vint i=0;iexpression, target); + } + + void Apply(SequenceExpression* expression, NormalizedCharSet* target) + { + Invoke(expression->left, target); + Invoke(expression->right, target); + } + + void Apply(AlternateExpression* expression, NormalizedCharSet* target) + { + Invoke(expression->left, target); + Invoke(expression->right, target); + } + + void Apply(BeginExpression* expression, NormalizedCharSet* target) + { + } + + void Apply(EndExpression* expression, NormalizedCharSet* target) + { + } + + void Apply(CaptureExpression* expression, NormalizedCharSet* target) + { + Invoke(expression->expression, target); + } + + void Apply(MatchExpression* expression, NormalizedCharSet* target) + { + } + + void Apply(PositiveExpression* expression, NormalizedCharSet* target) + { + Invoke(expression->expression, target); + } + + void Apply(NegativeExpression* expression, NormalizedCharSet* target) + { + Invoke(expression->expression, target); + } + + void Apply(UsingExpression* expression, NormalizedCharSet* target) + { + } + }; + + class BuildNormalizedCharSetAlgorithm : public CharSetAlgorithm + { + public: + void Process(CharSetExpression* expression, NormalizedCharSet* target, CharRange range) + { + vint index=0; + while(indexranges.Count()) + { + CharRange current=target->ranges[index]; + if(currentrange) + { + index++; + } + else if(current.beginranges.RemoveAt(index); + target->ranges.Add(CharRange(current.begin, range.begin-1)); + target->ranges.Add(CharRange(range.begin, current.end)); + index++; + } + else if(current.begin>range.begin) + { + // range : [ ] + // current : [ ? + target->ranges.Add(CharRange(range.begin, current.begin-1)); + range.begin=current.begin; + } + else if(current.endrange.end) + { + // range : [ ] + // current : [ ] + target->ranges.RemoveAt(index); + target->ranges.Add(range); + target->ranges.Add(CharRange(range.end+1, current.end)); + return; + } + else + { + // range : [ ] + // current : [ ] + return; + } + } + target->ranges.Add(range); + } + + void Apply(CharSetExpression* expression, NormalizedCharSet* target) + { + Loop(expression, expression->ranges, target); + } + }; + + class SetNormalizedCharSetAlgorithm : public CharSetAlgorithm + { + public: + void Process(CharSetExpression* expression, NormalizedCharSet* target, CharRange range) + { + for(vint j=0;jranges.Count();j++) + { + CharRange targetRange=target->ranges[j]; + if(range.begin<=targetRange.begin && targetRange.end<=range.end) + { + expression->ranges.Add(targetRange); + } + } + } + + void Apply(CharSetExpression* expression, NormalizedCharSet* target) + { + CharRange::List source; + CopyFrom(source, expression->ranges); + expression->ranges.Clear(); + Loop(expression, source, target); + expression->reverse=false; + } + }; + +/*********************************************************************** +MergeAlgorithm +***********************************************************************/ + + class MergeParameter + { + public: + Expression::Map definitions; + RegexExpression* regex; + }; + + class MergeAlgorithm : public RegexExpressionAlgorithm + { + public: + Expression::Ref Apply(CharSetExpression* expression, MergeParameter* target) + { + Ptr result=new CharSetExpression; + CopyFrom(result->ranges, expression->ranges); + result->reverse=expression->reverse; + return result; + } + + Expression::Ref Apply(LoopExpression* expression, MergeParameter* target) + { + Ptr result=new LoopExpression; + result->max=expression->max; + result->min=expression->min; + result->preferLong=expression->preferLong; + result->expression=Invoke(expression->expression, target); + return result; + } + + Expression::Ref Apply(SequenceExpression* expression, MergeParameter* target) + { + Ptr result=new SequenceExpression; + result->left=Invoke(expression->left, target); + result->right=Invoke(expression->right, target); + return result; + } + + Expression::Ref Apply(AlternateExpression* expression, MergeParameter* target) + { + Ptr result=new AlternateExpression; + result->left=Invoke(expression->left, target); + result->right=Invoke(expression->right, target); + return result; + } + + Expression::Ref Apply(BeginExpression* expression, MergeParameter* target) + { + return new BeginExpression; + } + + Expression::Ref Apply(EndExpression* expression, MergeParameter* target) + { + return new EndExpression; + } + + Expression::Ref Apply(CaptureExpression* expression, MergeParameter* target) + { + Ptr result=new CaptureExpression; + result->expression=Invoke(expression->expression, target); + result->name=expression->name; + return result; + } + + Expression::Ref Apply(MatchExpression* expression, MergeParameter* target) + { + Ptr result=new MatchExpression; + result->name=expression->name; + result->index=expression->index; + return result; + } + + Expression::Ref Apply(PositiveExpression* expression, MergeParameter* target) + { + Ptr result=new PositiveExpression; + result->expression=Invoke(expression->expression, target); + return result; + } + + Expression::Ref Apply(NegativeExpression* expression, MergeParameter* target) + { + Ptr result=new NegativeExpression; + result->expression=Invoke(expression->expression, target); + return result; + } + + Expression::Ref Apply(UsingExpression* expression, MergeParameter* target) + { + if(target->definitions.Keys().Contains(expression->name)) + { + Expression::Ref reference=target->definitions[expression->name]; + if(reference) + { + return reference; + } + else + { + throw ArgumentException(L"Regular expression syntax error: Found reference loops in\""+expression->name+L"\".", L"vl::regex_internal::RegexExpression::Merge", L""); + } + } + else if(target->regex->definitions.Keys().Contains(expression->name)) + { + target->definitions.Add(expression->name, 0); + Expression::Ref result=Invoke(target->regex->definitions[expression->name], target); + target->definitions.Set(expression->name, result); + return result; + } + else + { + throw ArgumentException(L"Regular expression syntax error: Cannot find sub expression reference\""+expression->name+L"\".", L"vl::regex_internal::RegexExpression::Merge", L""); + } + } + }; + +/*********************************************************************** +EpsilonNfaAlgorithm +***********************************************************************/ + + class EpsilonNfaInfo + { + public: + Automaton::Ref automaton; + }; + + class EpsilonNfa + { + public: + State* start; + State* end; + + EpsilonNfa() + { + start=0; + end=0; + } + }; + + class EpsilonNfaAlgorithm : public RegexExpressionAlgorithm + { + public: + EpsilonNfa Connect(EpsilonNfa a, EpsilonNfa b, Automaton* target) + { + if(a.start) + { + target->NewEpsilon(a.end, b.start); + a.end=b.end; + return a; + } + else + { + return b; + } + } + + EpsilonNfa Apply(CharSetExpression* expression, Automaton* target) + { + EpsilonNfa nfa; + nfa.start=target->NewState(); + nfa.end=target->NewState(); + for(vint i=0;iranges.Count();i++) + { + target->NewChars(nfa.start, nfa.end, expression->ranges[i]); + } + return nfa; + } + + EpsilonNfa Apply(LoopExpression* expression, Automaton* target) + { + EpsilonNfa head; + for(vint i=0;imin;i++) + { + EpsilonNfa body=Invoke(expression->expression, target); + head=Connect(head, body, target); + } + if(expression->max==-1) + { + EpsilonNfa body=Invoke(expression->expression, target); + if(!head.start) + { + head.start=head.end=target->NewState(); + } + State* loopBegin=head.end; + State* loopEnd=target->NewState(); + if(expression->preferLong) + { + target->NewEpsilon(loopBegin, body.start); + target->NewEpsilon(body.end, loopBegin); + target->NewNop(loopBegin, loopEnd); + } + else + { + target->NewNop(loopBegin, loopEnd); + target->NewEpsilon(loopBegin, body.start); + target->NewEpsilon(body.end, loopBegin); + } + head.end=loopEnd; + } + else if(expression->max>expression->min) + { + for(vint i=expression->min;imax;i++) + { + EpsilonNfa body=Invoke(expression->expression, target); + State* start=target->NewState(); + State* end=target->NewState(); + if(expression->preferLong) + { + target->NewEpsilon(start, body.start); + target->NewEpsilon(body.end, end); + target->NewNop(start, end); + } + else + { + target->NewNop(start, end); + target->NewEpsilon(start, body.start); + target->NewEpsilon(body.end, end); + } + body.start=start; + body.end=end; + head=Connect(head, body, target); + } + } + return head; + } + + EpsilonNfa Apply(SequenceExpression* expression, Automaton* target) + { + EpsilonNfa a=Invoke(expression->left, target); + EpsilonNfa b=Invoke(expression->right, target); + return Connect(a, b, target); + } + + EpsilonNfa Apply(AlternateExpression* expression, Automaton* target) + { + EpsilonNfa result; + result.start=target->NewState(); + result.end=target->NewState(); + EpsilonNfa a=Invoke(expression->left, target); + EpsilonNfa b=Invoke(expression->right, target); + target->NewEpsilon(result.start, a.start); + target->NewEpsilon(a.end, result.end); + target->NewEpsilon(result.start, b.start); + target->NewEpsilon(b.end, result.end); + return result; + } + + EpsilonNfa Apply(BeginExpression* expression, Automaton* target) + { + EpsilonNfa result; + result.start=target->NewState(); + result.end=target->NewState(); + target->NewBeginString(result.start, result.end); + return result; + } + + EpsilonNfa Apply(EndExpression* expression, Automaton* target) + { + EpsilonNfa result; + result.start=target->NewState(); + result.end=target->NewState(); + target->NewEndString(result.start, result.end); + return result; + } + + EpsilonNfa Apply(CaptureExpression* expression, Automaton* target) + { + EpsilonNfa result; + result.start=target->NewState(); + result.end=target->NewState(); + + vint capture=-1; + if(expression->name!=L"") + { + capture=target->captureNames.IndexOf(expression->name); + if(capture==-1) + { + capture=target->captureNames.Count(); + target->captureNames.Add(expression->name); + } + } + + EpsilonNfa body=Invoke(expression->expression, target); + target->NewCapture(result.start, body.start, capture); + target->NewEnd(body.end, result.end); + return result; + } + + EpsilonNfa Apply(MatchExpression* expression, Automaton* target) + { + vint capture=-1; + if(expression->name!=L"") + { + capture=target->captureNames.IndexOf(expression->name); + if(capture==-1) + { + capture=target->captureNames.Count(); + target->captureNames.Add(expression->name); + } + } + EpsilonNfa result; + result.start=target->NewState(); + result.end=target->NewState(); + target->NewMatch(result.start, result.end, capture, expression->index); + return result; + } + + EpsilonNfa Apply(PositiveExpression* expression, Automaton* target) + { + EpsilonNfa result; + result.start=target->NewState(); + result.end=target->NewState(); + EpsilonNfa body=Invoke(expression->expression, target); + target->NewPositive(result.start, body.start); + target->NewEnd(body.end, result.end); + return result; + } + + EpsilonNfa Apply(NegativeExpression* expression, Automaton* target) + { + EpsilonNfa result; + result.start=target->NewState(); + result.end=target->NewState(); + EpsilonNfa body=Invoke(expression->expression, target); + target->NewNegative(result.start, body.start); + target->NewEnd(body.end, result.end); + target->NewNegativeFail(result.start, result.end); + return result; + } + + EpsilonNfa Apply(UsingExpression* expression, Automaton* target) + { + CHECK_FAIL(L"RegexExpression::GenerateEpsilonNfa()#UsingExpression cannot create state machine."); + } + }; + +/*********************************************************************** +Expression +***********************************************************************/ + + bool Expression::IsEqual(vl::regex_internal::Expression *expression) + { + return IsEqualAlgorithm().Invoke(this, expression); + } + + bool Expression::HasNoExtension() + { + return HasNoExtensionAlgorithm().Invoke(this, 0); + } + + bool Expression::CanTreatAsPure() + { + return CanTreatAsPureAlgorithm().Invoke(this, 0); + } + + void Expression::NormalizeCharSet(CharRange::List& subsets) + { + NormalizedCharSet normalized; + BuildNormalizedCharSetAlgorithm().Invoke(this, &normalized); + SetNormalizedCharSetAlgorithm().Invoke(this, &normalized); + CopyFrom(subsets, normalized.ranges); + } + + void Expression::CollectCharSet(CharRange::List& subsets) + { + NormalizedCharSet normalized; + CopyFrom(normalized.ranges, subsets); + BuildNormalizedCharSetAlgorithm().Invoke(this, &normalized); + CopyFrom(subsets, normalized.ranges); + } + + void Expression::ApplyCharSet(CharRange::List& subsets) + { + NormalizedCharSet normalized; + CopyFrom(normalized.ranges, subsets); + SetNormalizedCharSetAlgorithm().Invoke(this, &normalized); + } + + Automaton::Ref Expression::GenerateEpsilonNfa() + { + Automaton::Ref automaton=new Automaton; + EpsilonNfa result=EpsilonNfaAlgorithm().Invoke(this, automaton.Obj()); + automaton->startState=result.start; + result.end->finalState=true; + return automaton; + } + +/*********************************************************************** +CharSetExpression +***********************************************************************/ + + bool CharSetExpression::AddRangeWithConflict(CharRange range) + { + if(range.begin>range.end) + { + wchar_t t=range.begin; + range.begin=range.end; + range.end=t; + } + for(vint i=0;iranges[i])) + { + return false; + } + } + ranges.Add(range); + return true; + } + +/*********************************************************************** +RegexExpression +***********************************************************************/ + + Expression::Ref RegexExpression::Merge() + { + MergeParameter merge; + merge.regex=this; + return MergeAlgorithm().Invoke(expression, &merge); + } + +/*********************************************************************** +Expression::Apply +***********************************************************************/ + + void CharSetExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + + void LoopExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + + void SequenceExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + + void AlternateExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + + void BeginExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + + void EndExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + + void CaptureExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + + void MatchExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + + void PositiveExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + + void NegativeExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + + void UsingExpression::Apply(IRegexExpressionAlgorithm& algorithm) + { + algorithm.Visit(this); + } + } +} + +/*********************************************************************** +.\REGEXPARSER.CPP +***********************************************************************/ + +namespace vl +{ + namespace regex_internal + { + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + bool IsChar(const wchar_t*& input, wchar_t c) + { + if(*input==c) + { + input++; + return true; + } + else + { + return false; + } + } + + bool IsChars(const wchar_t*& input, const wchar_t* chars, wchar_t& c) + { + const wchar_t* position=::wcschr(chars, *input); + if(position) + { + c=*input++; + return true; + } + else + { + return false; + } + } + + bool IsStr(const wchar_t*& input, const wchar_t* str) + { + size_t len=wcslen(str); + if(wcsncmp(input, str, len)==0) + { + input+=len; + return true; + } + else + { + return false; + } + } + + bool IsChars(const wchar_t*& input, const wchar_t* chars) + { + wchar_t c; + return IsChars(input, chars, c); + } + + bool IsPositiveInteger(const wchar_t*& input, vint& number) + { + bool readed=false; + number=0; + while(L'0'<=*input && *input<=L'9') + { + number=number*10+(*input++)-L'0'; + readed=true; + } + return readed; + } + + bool IsName(const wchar_t*& input, WString& name) + { + const wchar_t* read=input; + if((L'A'<=*read && *read<=L'Z') || (L'a'<=*read && *read<=L'z') || *read==L'_') + { + read++; + while((L'A'<=*read && *read<=L'Z') || (L'a'<=*read && *read<=L'z') || (L'0'<=*read && *read<=L'9') || *read==L'_') + { + read++; + } + } + if(input==read) + { + return false; + } + else + { + name=WString(input, vint(read-input)); + input=read; + return true; + } + } + + Ptr ParseLoop(const wchar_t*& input) + { + vint min=0; + vint max=0; + if(!*input) + { + return 0; + } + else if(IsChar(input, L'+')) + { + min=1; + max=-1; + } + else if(IsChar(input, L'*')) + { + min=0; + max=-1; + } + else if(IsChar(input, L'?')) + { + min=0; + max=1; + } + else if(IsChar(input, L'{')) + { + if(IsPositiveInteger(input, min)) + { + if(IsChar(input, L',')) + { + if(!IsPositiveInteger(input, max)) + { + max=-1; + } + } + else + { + max=min; + } + if(!IsChar(input, L'}')) + { + goto THROW_EXCEPTION; + } + } + else + { + goto THROW_EXCEPTION; + } + } + else + { + return 0; + } + + { + LoopExpression* expression=new LoopExpression; + expression->min=min; + expression->max=max; + expression->preferLong=!IsChar(input, L'?'); + return expression; + } + THROW_EXCEPTION: + throw ArgumentException(L"Regular expression syntax error: Illegal loop expression.", L"vl::regex_internal::ParseLoop", L"input"); + } + + Ptr ParseCharSet(const wchar_t*& input) + { + if(!*input) + { + return 0; + } + else if(IsChar(input, L'^')) + { + return new BeginExpression; + } + else if(IsChar(input, L'$')) + { + return new EndExpression; + } + else if(IsChar(input, L'\\') || IsChar(input, L'/')) + { + Ptr expression=new CharSetExpression; + expression->reverse=false; + switch(*input) + { + case L'.': + expression->ranges.Add(CharRange(1, 65535)); + break; + case L'r': + expression->ranges.Add(CharRange(L'\r', L'\r')); + break; + case L'n': + expression->ranges.Add(CharRange(L'\n', L'\n')); + break; + case L't': + expression->ranges.Add(CharRange(L'\t', L'\t')); + break; + case L'\\':case L'/':case L'(':case L')':case L'+':case L'*':case L'?':case L'|': + case L'{':case L'}':case L'[':case L']':case L'<':case L'>': + case L'^':case L'$':case L'!':case L'=': + expression->ranges.Add(CharRange(*input, *input)); + break; + case L'S': + expression->reverse=true; + case L's': + expression->ranges.Add(CharRange(L' ', L' ')); + expression->ranges.Add(CharRange(L'\r', L'\r')); + expression->ranges.Add(CharRange(L'\n', L'\n')); + expression->ranges.Add(CharRange(L'\t', L'\t')); + break; + case L'D': + expression->reverse=true; + case L'd': + expression->ranges.Add(CharRange(L'0', L'9')); + break; + case L'L': + expression->reverse=true; + case L'l': + expression->ranges.Add(CharRange(L'_', L'_')); + expression->ranges.Add(CharRange(L'A', L'Z')); + expression->ranges.Add(CharRange(L'a', L'z')); + break; + case L'W': + expression->reverse=true; + case L'w': + expression->ranges.Add(CharRange(L'_', L'_')); + expression->ranges.Add(CharRange(L'0', L'9')); + expression->ranges.Add(CharRange(L'A', L'Z')); + expression->ranges.Add(CharRange(L'a', L'z')); + break; + default: + throw ArgumentException(L"Regular expression syntax error: Illegal character escaping.", L"vl::regex_internal::ParseCharSet", L"input"); + } + input++; + return expression; + } + else if(IsChar(input, L'[')) + { + Ptr expression=new CharSetExpression; + if(IsChar(input, L'^')) + { + expression->reverse=true; + } + else + { + expression->reverse=false; + } + bool midState=false; + wchar_t a=L'\0'; + wchar_t b=L'\0'; + while(true) + { + if(IsChar(input, L'\\') || IsChar(input, L'/')) + { + wchar_t c=L'\0'; + switch(*input) + { + case L'r': + c=L'\r'; + break; + case L'n': + c=L'\n'; + break; + case L't': + c=L'\t'; + break; + case L'-':case L'[':case L']':case L'\\':case L'/':case L'^':case L'$': + c=*input; + break; + default: + throw ArgumentException(L"Regular expression syntax error: Illegal character escaping, only \"rnt-[]\\/\" are legal escaped characters in [].", L"vl::regex_internal::ParseCharSet", L"input"); + } + input++; + midState?b=c:a=c; + midState=!midState; + } + else if(IsChars(input, L"-]")) + { + goto THROW_EXCEPTION; + } + else if(*input) + { + midState?b=*input++:a=*input++; + midState=!midState; + } + else + { + goto THROW_EXCEPTION; + } + if(IsChar(input, L']')) + { + if(midState) + { + b=a; + } + if(!expression->AddRangeWithConflict(CharRange(a, b))) + { + goto THROW_EXCEPTION; + } + break; + } + else if(IsChar(input, L'-')) + { + if(!midState) + { + goto THROW_EXCEPTION; + } + } + else + { + if(midState) + { + b=a; + } + if(expression->AddRangeWithConflict(CharRange(a, b))) + { + midState=false; + } + else + { + goto THROW_EXCEPTION; + } + } + } + return expression; + THROW_EXCEPTION: + throw ArgumentException(L"Regular expression syntax error: Illegal character set definition."); + } + else if(IsChars(input, L"()+*?{}|")) + { + input--; + return 0; + } + else + { + CharSetExpression* expression=new CharSetExpression; + expression->reverse=false; + expression->ranges.Add(CharRange(*input, *input)); + input++; + return expression; + } + } + + Ptr ParseFunction(const wchar_t*& input) + { + if(IsStr(input, L"(=")) + { + Ptr sub=ParseExpression(input); + if(!IsChar(input, L')')) + { + goto NEED_RIGHT_BRACKET; + } + PositiveExpression* expression=new PositiveExpression; + expression->expression=sub; + return expression; + } + else if(IsStr(input, L"(!")) + { + Ptr sub=ParseExpression(input); + if(!IsChar(input, L')')) + { + goto NEED_RIGHT_BRACKET; + } + NegativeExpression* expression=new NegativeExpression; + expression->expression=sub; + return expression; + } + else if(IsStr(input, L"(<&")) + { + WString name; + if(!IsName(input, name)) + { + goto NEED_NAME; + } + if(!IsChar(input, L'>')) + { + goto NEED_GREATER; + } + if(!IsChar(input, L')')) + { + goto NEED_RIGHT_BRACKET; + } + UsingExpression* expression=new UsingExpression; + expression->name=name; + return expression; + } + else if(IsStr(input, L"(<$")) + { + WString name; + vint index=-1; + if(IsName(input, name)) + { + if(IsChar(input, L';')) + { + if(!IsPositiveInteger(input, index)) + { + goto NEED_NUMBER; + } + } + } + else if(!IsPositiveInteger(input, index)) + { + goto NEED_NUMBER; + } + if(!IsChar(input, L'>')) + { + goto NEED_GREATER; + } + if(!IsChar(input, L')')) + { + goto NEED_RIGHT_BRACKET; + } + MatchExpression* expression=new MatchExpression; + expression->name=name; + expression->index=index; + return expression; + } + else if(IsStr(input, L"(<")) + { + WString name; + if(!IsName(input, name)) + { + goto NEED_NAME; + } + if(!IsChar(input, L'>')) + { + goto NEED_GREATER; + } + Ptr sub=ParseExpression(input); + if(!IsChar(input, L')')) + { + goto NEED_RIGHT_BRACKET; + } + CaptureExpression* expression=new CaptureExpression; + expression->name=name; + expression->expression=sub; + return expression; + } + else if(IsStr(input, L"(?")) + { + Ptr sub=ParseExpression(input); + if(!IsChar(input, L')')) + { + goto NEED_RIGHT_BRACKET; + } + CaptureExpression* expression=new CaptureExpression; + expression->expression=sub; + return expression; + } + else if(IsChar(input, L'(')) + { + Ptr sub=ParseExpression(input); + if(!IsChar(input, L')')) + { + goto NEED_RIGHT_BRACKET; + } + return sub; + } + else + { + return 0; + } + NEED_RIGHT_BRACKET: + throw ArgumentException(L"Regular expression syntax error: \")\" expected.", L"vl::regex_internal::ParseFunction", L"input"); + NEED_GREATER: + throw ArgumentException(L"Regular expression syntax error: \">\" expected.", L"vl::regex_internal::ParseFunction", L"input"); + NEED_NAME: + throw ArgumentException(L"Regular expression syntax error: Identifier expected.", L"vl::regex_internal::ParseFunction", L"input"); + NEED_NUMBER: + throw ArgumentException(L"Regular expression syntax error: Number expected.", L"vl::regex_internal::ParseFunction", L"input"); + } + + Ptr ParseUnit(const wchar_t*& input) + { + Ptr unit=ParseCharSet(input); + if(!unit) + { + unit=ParseFunction(input); + } + if(!unit) + { + return 0; + } + Ptr loop; + while((loop=ParseLoop(input))) + { + loop->expression=unit; + unit=loop; + } + return unit; + } + + Ptr ParseJoin(const wchar_t*& input) + { + Ptr expression=ParseUnit(input); + while(true) + { + Ptr right=ParseUnit(input); + if(right) + { + SequenceExpression* sequence=new SequenceExpression; + sequence->left=expression; + sequence->right=right; + expression=sequence; + } + else + { + break; + } + } + return expression; + } + + Ptr ParseAlt(const wchar_t*& input) + { + Ptr expression=ParseJoin(input); + while(true) + { + if(IsChar(input, L'|')) + { + Ptr right=ParseJoin(input); + if(right) + { + AlternateExpression* alternate=new AlternateExpression; + alternate->left=expression; + alternate->right=right; + expression=alternate; + } + else + { + throw ArgumentException(L"Regular expression syntax error: Expression expected.", L"vl::regex_internal::ParseAlt", L"input"); + } + } + else + { + break; + } + } + return expression; + } + + Ptr ParseExpression(const wchar_t*& input) + { + return ParseAlt(input); + } + + RegexExpression::Ref ParseRegexExpression(const WString& code) + { + RegexExpression::Ref regex=new RegexExpression; + const wchar_t* start=code.Buffer(); + const wchar_t* input=start; + try + { + while(IsStr(input, L"(<#")) + { + WString name; + if(!IsName(input, name)) + { + throw ArgumentException(L"Regular expression syntax error: Identifier expected.", L"vl::regex_internal::ParseRegexExpression", L"code"); + } + if(!IsChar(input, L'>')) + { + throw ArgumentException(L"Regular expression syntax error: \">\" expected.", L"vl::regex_internal::ParseFunction", L"input"); + } + Ptr sub=ParseExpression(input); + if(!IsChar(input, L')')) + { + throw ArgumentException(L"Regular expression syntax error: \")\" expected.", L"vl::regex_internal::ParseFunction", L"input"); + } + if(regex->definitions.Keys().Contains(name)) + { + throw ArgumentException(L"Regular expression syntax error: Found duplicated sub expression name: \""+name+L"\". ", L"vl::regex_internal::ParseFunction", L"input"); + } + else + { + regex->definitions.Add(name, sub); + } + } + regex->expression=ParseExpression(input); + if(!regex->expression) + { + throw ArgumentException(L"Regular expression syntax error: Expression expected.", L"vl::regex_internal::ParseUnit", L"input"); + } + if(*input) + { + throw ArgumentException(L"Regular expression syntax error: Found unnecessary tokens.", L"vl::regex_internal::ParseUnit", L"input"); + } + return regex; + } + catch(const ArgumentException& e) + { + throw ParsingException(e.Message(), code, input-start); + } + } + + WString EscapeTextForRegex(const WString& literalString) + { + WString result; + for(vint i=0;i': + case L'^':case L'$':case L'!':case L'=': + result+=WString(L"\\")+c; + break; + case L'\r': + result+=L"\\r"; + break; + case L'\n': + result+=L"\\n"; + break; + case L'\t': + result+=L"\\t"; + break; + default: + result+=c; + } + } + return result; + } + + WString UnescapeTextForRegex(const WString& escapedText) + { + WString result; + for(vint i=0;i': + case L'^':case L'$':case L'!':case L'=': + return false; + } + } + } + return true; + } + } +} + +/*********************************************************************** +.\REGEXPURE.CPP +***********************************************************************/ + +namespace vl +{ + namespace regex_internal + { + +/*********************************************************************** +PureInterpretor +***********************************************************************/ + + PureInterpretor::PureInterpretor(Automaton::Ref dfa, CharRange::List& subsets) + :transition(0) + ,finalState(0) + ,relatedFinalState(0) + { + stateCount=dfa->states.Count(); + charSetCount=subsets.Count()+1; + startState=dfa->states.IndexOf(dfa->startState); + + // Map char to input index (equivalent char class) + for(vint i=0;istates[i].Obj(); + for(vint j=0;jtransitions.Count();j++) + { + Transition* dfaTransition=state->transitions[j]; + switch(dfaTransition->type) + { + case Transition::Chars: + { + vint index=subsets.IndexOf(dfaTransition->range); + if(index==-1) + { + CHECK_ERROR(false, L"PureInterpretor::PureInterpretor(Automaton::Ref, CharRange::List&)#Specified chars don't appear in the normalized char ranges."); + } + transition[i][index]=dfa->states.IndexOf(dfaTransition->target); + } + break; + default: + CHECK_ERROR(false, L"PureInterpretor::PureInterpretor(Automaton::Ref, CharRange::List&)#PureInterpretor only accepts Transition::Chars transitions."); + } + } + } + + // Mark final states + finalState=new bool[stateCount]; + for(vint i=0;istates[i]->finalState; + } + } + + PureInterpretor::~PureInterpretor() + { + if(relatedFinalState) delete[] relatedFinalState; + delete[] finalState; + for(vint i=0;i=SupportedCharCount)break; +#endif + vint charIndex=charMap[*read++]; + currentState=transition[currentState][charIndex]; + } + + if(result.finalState==-1) + { + if(terminateLength>0) + { + result.terminateState=terminateState; + } + result.length=terminateLength; + return false; + } + else + { + return true; + } + } + + bool PureInterpretor::Match(const wchar_t* input, const wchar_t* start, PureResult& result) + { + const wchar_t* read=input; + while(*read) + { + if(MatchHead(read, start, result)) + { + return true; + } + read++; + } + return false; + } + + vint PureInterpretor::GetStartState() + { + return startState; + } + + vint PureInterpretor::Transit(wchar_t input, vint state) + { + if(0<=state && state + struct POD + { + static const bool Result = true; + }; + + template<> + struct POD + { + static const bool Result = true; + }; + + namespace regex_internal + { + using namespace collections; + + void Push(List& elements, vint& available, vint& count, const ExtensionSaver& element) + { + if(elements.Count()==count) + { + elements.Add(element); + } + else + { + elements[count]=element; + } + ExtensionSaver& current=elements[count]; + current.previous=available; + available=count++; + } + + ExtensionSaver Pop(List& elements, vint& available, vint& count) + { + ExtensionSaver& current=elements[available]; + available=current.previous; + return current; + } + + template + void PushNonSaver(List& elements, vint& count, const T& element) + { + if(elements.Count()==count) + { + elements.Add(element); + } + else + { + elements[count]=element; + } + count++; + } + + template + T PopNonSaver(List& elements, vint& count) + { + return elements[--count]; + } + } + + namespace regex_internal + { +/*********************************************************************** +CaptureRecord +***********************************************************************/ + + bool CaptureRecord::operator==(const CaptureRecord& record)const + { + return capture==record.capture && start==record.start && length==record.length; + } + +/*********************************************************************** +RichInterpretor +***********************************************************************/ + + RichInterpretor::RichInterpretor(Automaton::Ref _dfa) + :dfa(_dfa) + { + datas=new UserData[dfa->states.Count()]; + + for(vint i=0;istates.Count();i++) + { + State* state=dfa->states[i].Obj(); + vint charEdges=0; + vint nonCharEdges=0; + bool mustSave=false; + for(vint j=0;jtransitions.Count();j++) + { + if(state->transitions[j]->type==Transition::Chars) + { + charEdges++; + } + else + { + if(state->transitions[j]->type==Transition::Negative || + state->transitions[j]->type==Transition::Positive) + { + mustSave=true; + } + nonCharEdges++; + } + } + datas[i].NeedKeepState=mustSave || nonCharEdges>1 || (nonCharEdges!=0 && charEdges!=0); + state->userData=&datas[i]; + } + } + + RichInterpretor::~RichInterpretor() + { + delete[] datas; + } + + bool RichInterpretor::MatchHead(const wchar_t* input, const wchar_t* start, RichResult& result) + { + List stateSavers; + List extensionSavers; + + StateSaver currentState; + currentState.captureCount=0; + currentState.currentState=dfa->startState; + currentState.extensionSaverAvailable=-1; + currentState.extensionSaverCount=0; + currentState.minTransition=0; + currentState.reading=input; + currentState.stateSaverCount=0; + currentState.storeType=StateSaver::Other; + + while (!currentState.currentState->finalState) + { + bool found = false; // true means at least one transition matches the input + StateSaver oldState = currentState; + // Iterate through all transitions from the current state + for (vint i = currentState.minTransition; i < currentState.currentState->transitions.Count(); i++) + { + Transition* transition = currentState.currentState->transitions[i]; + switch (transition->type) + { + case Transition::Chars: + { + // match the input if the current character fall into the range + CharRange range = transition->range; + found = + range.begin <= *currentState.reading && + range.end >= *currentState.reading; + if (found) + { + currentState.reading++; + } + } + break; + case Transition::BeginString: + { + // match the input if this is the first character, and it is not consumed + found = currentState.reading == start; + } + break; + case Transition::EndString: + { + // match the input if this is after the last character, and it is not consumed + found = *currentState.reading == L'\0'; + } + break; + case Transition::Nop: + { + // match without any condition + found = true; + } + break; + case Transition::Capture: + { + // Push the capture information + ExtensionSaver saver; + saver.captureListIndex = currentState.captureCount; + saver.reading = currentState.reading; + saver.transition = transition; + Push(extensionSavers, currentState.extensionSaverAvailable, currentState.extensionSaverCount, saver); + + // Push the capture record, and it will be written if the input matches the regex + CaptureRecord capture; + capture.capture = transition->capture; + capture.start = currentState.reading - start; + capture.length = -1; + PushNonSaver(result.captures, currentState.captureCount, capture); + + found = true; + } + break; + case Transition::Match: + { + vint index = 0; + for (vint j = 0; j < currentState.captureCount; j++) + { + CaptureRecord& capture = result.captures[j]; + // If the capture name matched + if (capture.capture == transition->capture) + { + // If the capture index matched, or it is -1 + if (capture.length != -1 && (transition->index == -1 || transition->index == index)) + { + // If the captured text matched + if (wcsncmp(start + capture.start, currentState.reading, capture.length) == 0) + { + // Consume so much input + currentState.reading += capture.length; + found = true; + break; + } + } + + // Fail if f the captured text with the specified name and index doesn't match + if (transition->index != -1 && index == transition->index) + { + break; + } + else + { + index++; + } + } + } + } + break; + case Transition::Positive: + { + // Push the positive lookahead information + ExtensionSaver saver; + saver.captureListIndex = -1; + saver.reading = currentState.reading; + saver.transition = transition; + Push(extensionSavers, currentState.extensionSaverAvailable, currentState.extensionSaverCount, saver); + + // Set found = true so that PushNonSaver(oldState) happens later + oldState.storeType = StateSaver::Positive; + found = true; + } + break; + case Transition::Negative: + { + // Push the positive lookahead information + + ExtensionSaver saver; + saver.captureListIndex = -1; + saver.reading = currentState.reading; + saver.transition = transition; + Push(extensionSavers, currentState.extensionSaverAvailable, currentState.extensionSaverCount, saver); + + // Set found = true so that PushNonSaver(oldState) happens later + oldState.storeType = StateSaver::Negative; + found = true; + } + break; + case Transition::NegativeFail: + { + // NegativeFail will be used when the nagative lookahead failed + } + break; + case Transition::End: + { + // Find the corresponding extension saver so that we can know how to deal with a matched sub regex that ends here + ExtensionSaver extensionSaver = Pop(extensionSavers, currentState.extensionSaverAvailable, currentState.extensionSaverCount); + switch (extensionSaver.transition->type) + { + case Transition::Capture: + { + // Write the captured text + CaptureRecord& capture = result.captures[extensionSaver.captureListIndex]; + capture.length = (currentState.reading - start) - capture.start; + found = true; + } + break; + case Transition::Positive: + // Find the last positive lookahead state saver + for (vint j = currentState.stateSaverCount - 1; j >= 0; j--) + { + StateSaver& stateSaver = stateSavers[j]; + if (stateSaver.storeType == StateSaver::Positive) + { + // restore the parsing state just before matching the positive lookahead, since positive lookahead doesn't consume input + oldState.reading = stateSaver.reading; + oldState.stateSaverCount = j; + currentState.reading = stateSaver.reading; + currentState.stateSaverCount = j; + break; + } + } + found = true; + break; + case Transition::Negative: + // Find the last negative lookahead state saver + for (vint j = currentState.stateSaverCount - 1; j >= 0; j--) + { + StateSaver& stateSaver = stateSavers[j]; + if (stateSaver.storeType == StateSaver::Negative) + { + // restore the parsing state just before matching the negative lookahead, since positive lookahead doesn't consume input + oldState = stateSaver; + oldState.storeType = StateSaver::Other; + currentState = stateSaver; + currentState.storeType = StateSaver::Other; + i = currentState.minTransition - 1; + break; + } + } + break; + default:; + } + } + break; + default:; + } + + // Save the parsing state when necessary + if (found) + { + UserData* data = (UserData*)currentState.currentState->userData; + if (data->NeedKeepState) + { + oldState.minTransition = i + 1; + PushNonSaver(stateSavers, currentState.stateSaverCount, oldState); + } + currentState.currentState = transition->target; + currentState.minTransition = 0; + break; + } + } + + // If no transition from the current state can be used + if (!found) + { + // If there is a chance to do backtracking + if (currentState.stateSaverCount) + { + currentState = PopNonSaver(stateSavers, currentState.stateSaverCount); + // minTransition - 1 is always valid since the value is stored with adding 1 + // So minTransition - 1 record the transition, which is the reason the parsing state is saved + if (currentState.currentState->transitions[currentState.minTransition - 1]->type == Transition::Negative) + { + // Find the next NegativeFail transition + // Because when a negative lookahead regex failed to match, it is actually succeeded + // Since a negative lookahead means we don't want to match this regex + for (vint i = 0; i < currentState.currentState->transitions.Count(); i++) + { + Transition* transition = currentState.currentState->transitions[i]; + if (transition->type == Transition::NegativeFail) + { + // Restore the state to the target of NegativeFail to let the parsing continue + currentState.currentState = transition->target; + currentState.minTransition = 0; + currentState.storeType = StateSaver::Other; + break; + } + } + } + } + else + { + break; + } + } + } + + if (currentState.currentState->finalState) + { + // Keep available captures if succeeded + result.start = input - start; + result.length = (currentState.reading - start) - result.start; + for (vint i = result.captures.Count() - 1; i >= currentState.captureCount; i--) + { + result.captures.RemoveAt(i); + } + return true; + } + else + { + // Clear captures if failed + result.captures.Clear(); + return false; + } + } + + bool RichInterpretor::Match(const wchar_t* input, const wchar_t* start, RichResult& result) + { + const wchar_t* read=input; + while(*read) + { + if(MatchHead(read, start, result)) + { + return true; + } + read++; + } + return false; + } + + const List& RichInterpretor::CaptureNames() + { + return dfa->captureNames; + } + } +} + +/*********************************************************************** +.\REGEXWRITER.CPP +***********************************************************************/ + +namespace vl +{ + namespace regex + { + using namespace vl::regex_internal; + +/*********************************************************************** +RegexNode +***********************************************************************/ + + RegexNode::RegexNode(vl::regex_internal::Expression::Ref _expression) + :expression(_expression) + { + } + + RegexNode RegexNode::Some()const + { + return Loop(1, -1); + } + + RegexNode RegexNode::Any()const + { + return Loop(0, -1); + } + + RegexNode RegexNode::Opt()const + { + return Loop(0, 1); + } + + RegexNode RegexNode::Loop(vint min, vint max)const + { + LoopExpression* target=new LoopExpression; + target->min=min; + target->max=max; + target->preferLong=true; + target->expression=expression; + return RegexNode(target); + } + + RegexNode RegexNode::AtLeast(vint min)const + { + return Loop(min, -1); + } + + RegexNode RegexNode::operator+(const RegexNode& node)const + { + SequenceExpression* target=new SequenceExpression; + target->left=expression; + target->right=node.expression; + return RegexNode(target); + } + + RegexNode RegexNode::operator|(const RegexNode& node)const + { + AlternateExpression* target=new AlternateExpression; + target->left=expression; + target->right=node.expression; + return RegexNode(target); + } + + RegexNode RegexNode::operator+()const + { + PositiveExpression* target=new PositiveExpression; + target->expression=expression; + return RegexNode(target); + } + + RegexNode RegexNode::operator-()const + { + NegativeExpression* target=new NegativeExpression; + target->expression=expression; + return RegexNode(target); + } + + RegexNode RegexNode::operator!()const + { + CharSetExpression* source=dynamic_cast(expression.Obj()); + CHECK_ERROR(source, L"RegexNode::operator!()#operator ! can only applies on charset expressions."); + Ptr target=new CharSetExpression; + CopyFrom(target->ranges, source->ranges); + target->reverse=!source->reverse; + return RegexNode(target); + } + + RegexNode RegexNode::operator%(const RegexNode& node)const + { + CharSetExpression* left=dynamic_cast(expression.Obj()); + CharSetExpression* right=dynamic_cast(node.expression.Obj()); + CHECK_ERROR(left && right && !left->reverse && !right->reverse, L"RegexNode::operator%(const RegexNode&)#operator % only connects non-reverse charset expressions."); + Ptr target=new CharSetExpression; + target->reverse=false; + CopyFrom(target->ranges, left->ranges); + for(vint i=0;iranges.Count();i++) + { + if(!target->AddRangeWithConflict(right->ranges[i])) + { + CHECK_ERROR(false, L"RegexNode::operator%(const RegexNode&)#Failed to create charset expression from operator %."); + } + } + return RegexNode(target); + } + +/*********************************************************************** +Regex Writer +***********************************************************************/ + + RegexNode rCapture(const WString& name, const RegexNode& node) + { + CaptureExpression* target=new CaptureExpression; + target->name=name; + target->expression=node.expression; + return RegexNode(target); + } + + RegexNode rUsing(const WString& name) + { + UsingExpression* target=new UsingExpression; + target->name=name; + return RegexNode(target); + } + + RegexNode rMatch(const WString& name, vint index) + { + MatchExpression* target=new MatchExpression; + target->name=name; + target->index=index; + return RegexNode(target); + } + + RegexNode rMatch(vint index) + { + MatchExpression* target=new MatchExpression; + target->index=index; + return RegexNode(target); + } + + RegexNode rBegin() + { + return RegexNode(new BeginExpression); + } + + RegexNode rEnd() + { + return RegexNode(new EndExpression); + } + + RegexNode rC(wchar_t a, wchar_t b) + { + if(!b)b=a; + CharSetExpression* target=new CharSetExpression; + target->reverse=false; + target->AddRangeWithConflict(CharRange(a, b)); + return RegexNode(target); + } + + RegexNode r_d() + { + return rC(L'0', L'9'); + } + + RegexNode r_l() + { + return rC(L'a', L'z')%rC(L'A', L'Z')%rC(L'_'); + } + + RegexNode r_w() + { + return rC(L'0', L'9')%rC(L'a', L'z')%rC(L'A', L'Z')%rC(L'_'); + } + + RegexNode rAnyChar() + { + return rC(1, 65535); + } + } +} diff --git a/Import/VlppRegex.h b/Import/VlppRegex.h new file mode 100644 index 00000000..473dae5c --- /dev/null +++ b/Import/VlppRegex.h @@ -0,0 +1,1189 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "Vlpp.h" + +/*********************************************************************** +.\REGEXDATA.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Regex::Basic Data Structure + +Classes: +***********************************************************************/ + +#ifndef VCZH_REGEX_REGEXDATA +#define VCZH_REGEX_REGEXDATA + + +namespace vl +{ + namespace regex_internal + { + +/*********************************************************************** +Data Structure +***********************************************************************/ + + class CharRange + { + public: + typedef collections::SortedList List; + + wchar_t begin; + wchar_t end; + + CharRange(); + CharRange(wchar_t _begin, wchar_t _end); + + bool operator<(CharRange item)const; + bool operator<=(CharRange item)const; + bool operator>(CharRange item)const; + bool operator>=(CharRange item)const; + bool operator==(CharRange item)const; + bool operator!=(CharRange item)const; + + bool operator<(wchar_t item)const; + bool operator<=(wchar_t item)const; + bool operator>(wchar_t item)const; + bool operator>=(wchar_t item)const; + bool operator==(wchar_t item)const; + bool operator!=(wchar_t item)const; + }; + } + + template<> + struct POD + { + static const bool Result=true; + }; +} + +#endif + +/*********************************************************************** +.\REGEXAUTOMATON.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Regex::RegexAutomaton + +Classes: + State : State + Transition : Transation + Automaton : Automaton + +Functions: + EpsilonNfaToNfa : Copy and remove epsilon states and transitions from an NFA + NfaToDfa : Convert an NFA to a DFA +***********************************************************************/ + +#ifndef VCZH_REGEX_REGEXAUTOMATON +#define VCZH_REGEX_REGEXAUTOMATON + + +namespace vl +{ + namespace regex_internal + { + class State; + class Transition; + + class Transition + { + public: + enum Type + { + Chars, // Character range transition + Epsilon, + BeginString, + EndString, + Nop, // Non-epsilon transition with no input + Capture, // Begin capture transition + Match, // Capture matching transition + Positive, // Begin positive lookahead + Negative, // Begin negative lookahead + NegativeFail, // Negative lookahead failure + End // For Capture, Position, Negative + }; + + State* source; + State* target; + CharRange range; + Type type; + vint capture; + vint index; + }; + + class State + { + public: + collections::List transitions; + collections::List inputs; + bool finalState; + void* userData; + }; + + class Automaton + { + public: + typedef Ptr Ref; + + collections::List> states; + collections::List> transitions; + collections::List captureNames; + State* startState; + + Automaton(); + + State* NewState(); + Transition* NewTransition(State* start, State* end); + Transition* NewChars(State* start, State* end, CharRange range); + Transition* NewEpsilon(State* start, State* end); + Transition* NewBeginString(State* start, State* end); + Transition* NewEndString(State* start, State* end); + Transition* NewNop(State* start, State* end); + Transition* NewCapture(State* start, State* end, vint capture); + Transition* NewMatch(State* start, State* end, vint capture, vint index=-1); + Transition* NewPositive(State* start, State* end); + Transition* NewNegative(State* start, State* end); + Transition* NewNegativeFail(State* start, State* end); + Transition* NewEnd(State* start, State* end); + }; + + extern bool PureEpsilonChecker(Transition* transition); + extern bool RichEpsilonChecker(Transition* transition); + extern bool AreEqual(Transition* transA, Transition* transB); + extern Automaton::Ref EpsilonNfaToNfa(Automaton::Ref source, bool(*epsilonChecker)(Transition*), collections::Dictionary& nfaStateMap); + extern Automaton::Ref NfaToDfa(Automaton::Ref source, collections::Group& dfaStateMap); + } +} + +#endif + +/*********************************************************************** +.\REGEXEXPRESSION.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Regex::RegexExpression + +Classes: + Expression : Base class of expressions | + CharSetExpression : Character set | a, [a-b], [^a-b0_9], \.rnt\/()+*?{}[]<>^$!=SsDdLlWw, [\rnt-[]\/^$] + LoopExpression : Repeat | a{3}, a{3,}, a{1,3}, a+, a*, a?, LOOP? + SequenceExpression : Sequence of two regex | ab + AlternateExpression : Alternative of two regex | a|b + BeginExpression : String begin | ^ + EndExpression : String end | $ + CaptureExpression : Capture | (expr), (?expr) + MatchExpression : Capture matching | (<$name>), (<$name;i>), (<$i>) + PositiveExpression : Positive lookahead | (=expr) + NegativeExpression : Negative lookahead | (!expr) + UsingExpression : refer a regex | (<#name1>expr)...(<&name1>)... + + RegexExpression : Regular Expression + +Functions: + ParseRegexExpression : Regex Syntax Analyzer +***********************************************************************/ + +#ifndef VCZH_REGEX_REGEXEXPRESSION +#define VCZH_REGEX_REGEXEXPRESSION + + +namespace vl +{ + namespace regex_internal + { + class IRegexExpressionAlgorithm; + +/*********************************************************************** +Regex Expression AST +***********************************************************************/ + + class Expression : public Object, private NotCopyable + { + public: + typedef Ptr Ref; + typedef collections::Dictionary Map; + + virtual void Apply(IRegexExpressionAlgorithm& algorithm)=0; + bool IsEqual(Expression* expression); + bool HasNoExtension(); + bool CanTreatAsPure(); + void NormalizeCharSet(CharRange::List& subsets); + void CollectCharSet(CharRange::List& subsets); + void ApplyCharSet(CharRange::List& subsets); + Automaton::Ref GenerateEpsilonNfa(); + }; + + class CharSetExpression : public Expression + { + public: + CharRange::List ranges; + bool reverse; + + bool AddRangeWithConflict(CharRange range); + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class LoopExpression : public Expression + { + public: + Expression::Ref expression; // The regex to loop + vint min; // Minimum count of looping + vint max; // Maximum count of looping, -1 for infinite + bool preferLong; // Prefer longer matching + + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class SequenceExpression : public Expression + { + public: + Expression::Ref left; // First regex to match + Expression::Ref right; // Last regex to match + + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class AlternateExpression : public Expression + { + public: + Expression::Ref left; // First regex to match + Expression::Ref right; // Last regex to match + + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class BeginExpression: public Expression + { + public: + + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class EndExpression : public Expression + { + public: + + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class CaptureExpression : public Expression + { + public: + WString name; // Capture name, empty for anonymous capture + Expression::Ref expression; // Regex to match + + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class MatchExpression : public Expression + { + public: + WString name; // Capture name, empty for anonymous + vint index; // The index of captured text to match associated the name, -1 for all of them + + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class PositiveExpression : public Expression + { + public: + Expression::Ref expression; // Regex to match + + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class NegativeExpression : public Expression + { + public: + Expression::Ref expression; // Regex to match + + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class UsingExpression : public Expression + { + public: + WString name; // Name of the regex to refer + + void Apply(IRegexExpressionAlgorithm& algorithm); + }; + + class RegexExpression : public Object, private NotCopyable + { + public: + typedef Ptr Ref; + + Expression::Map definitions; // Named regex to be referred + Expression::Ref expression; // Regex to match + + Expression::Ref Merge(); + }; + +/*********************************************************************** +Visitor +***********************************************************************/ + + class IRegexExpressionAlgorithm : public Interface + { + public: + virtual void Visit(CharSetExpression* expression)=0; + virtual void Visit(LoopExpression* expression)=0; + virtual void Visit(SequenceExpression* expression)=0; + virtual void Visit(AlternateExpression* expression)=0; + virtual void Visit(BeginExpression* expression)=0; + virtual void Visit(EndExpression* expression)=0; + virtual void Visit(CaptureExpression* expression)=0; + virtual void Visit(MatchExpression* expression)=0; + virtual void Visit(PositiveExpression* expression)=0; + virtual void Visit(NegativeExpression* expression)=0; + virtual void Visit(UsingExpression* expression)=0; + }; + + template + class RegexExpressionAlgorithm : public Object, public IRegexExpressionAlgorithm + { + private: + ReturnType returnValue; + ParameterType* parameterValue; + public: + + ReturnType Invoke(Expression* expression, ParameterType parameter) + { + parameterValue=¶meter; + expression->Apply(*this); + return returnValue; + } + + ReturnType Invoke(Expression::Ref expression, ParameterType parameter) + { + parameterValue=¶meter; + expression->Apply(*this); + return returnValue; + } + + virtual ReturnType Apply(CharSetExpression* expression, ParameterType parameter)=0; + virtual ReturnType Apply(LoopExpression* expression, ParameterType parameter)=0; + virtual ReturnType Apply(SequenceExpression* expression, ParameterType parameter)=0; + virtual ReturnType Apply(AlternateExpression* expression, ParameterType parameter)=0; + virtual ReturnType Apply(BeginExpression* expression, ParameterType parameter)=0; + virtual ReturnType Apply(EndExpression* expression, ParameterType parameter)=0; + virtual ReturnType Apply(CaptureExpression* expression, ParameterType parameter)=0; + virtual ReturnType Apply(MatchExpression* expression, ParameterType parameter)=0; + virtual ReturnType Apply(PositiveExpression* expression, ParameterType parameter)=0; + virtual ReturnType Apply(NegativeExpression* expression, ParameterType parameter)=0; + virtual ReturnType Apply(UsingExpression* expression, ParameterType parameter)=0; + public: + void Visit(CharSetExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + + void Visit(LoopExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + + void Visit(SequenceExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + + void Visit(AlternateExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + + void Visit(BeginExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + + void Visit(EndExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + + void Visit(CaptureExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + + void Visit(MatchExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + + void Visit(PositiveExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + + void Visit(NegativeExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + + void Visit(UsingExpression* expression) + { + returnValue=Apply(expression, *parameterValue); + } + }; + + template + class RegexExpressionAlgorithm : public Object, public IRegexExpressionAlgorithm + { + private: + ParameterType* parameterValue; + public: + + void Invoke(Expression* expression, ParameterType parameter) + { + parameterValue=¶meter; + expression->Apply(*this); + } + + void Invoke(Expression::Ref expression, ParameterType parameter) + { + parameterValue=¶meter; + expression->Apply(*this); + } + + virtual void Apply(CharSetExpression* expression, ParameterType parameter)=0; + virtual void Apply(LoopExpression* expression, ParameterType parameter)=0; + virtual void Apply(SequenceExpression* expression, ParameterType parameter)=0; + virtual void Apply(AlternateExpression* expression, ParameterType parameter)=0; + virtual void Apply(BeginExpression* expression, ParameterType parameter)=0; + virtual void Apply(EndExpression* expression, ParameterType parameter)=0; + virtual void Apply(CaptureExpression* expression, ParameterType parameter)=0; + virtual void Apply(MatchExpression* expression, ParameterType parameter)=0; + virtual void Apply(PositiveExpression* expression, ParameterType parameter)=0; + virtual void Apply(NegativeExpression* expression, ParameterType parameter)=0; + virtual void Apply(UsingExpression* expression, ParameterType parameter)=0; + public: + void Visit(CharSetExpression* expression) + { + Apply(expression, *parameterValue); + } + + void Visit(LoopExpression* expression) + { + Apply(expression, *parameterValue); + } + + void Visit(SequenceExpression* expression) + { + Apply(expression, *parameterValue); + } + + void Visit(AlternateExpression* expression) + { + Apply(expression, *parameterValue); + } + + void Visit(BeginExpression* expression) + { + Apply(expression, *parameterValue); + } + + void Visit(EndExpression* expression) + { + Apply(expression, *parameterValue); + } + + void Visit(CaptureExpression* expression) + { + Apply(expression, *parameterValue); + } + + void Visit(MatchExpression* expression) + { + Apply(expression, *parameterValue); + } + + void Visit(PositiveExpression* expression) + { + Apply(expression, *parameterValue); + } + + void Visit(NegativeExpression* expression) + { + Apply(expression, *parameterValue); + } + + void Visit(UsingExpression* expression) + { + Apply(expression, *parameterValue); + } + }; + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + extern Ptr ParseLoop(const wchar_t*& input); + extern Ptr ParseCharSet(const wchar_t*& input); + extern Ptr ParseFunction(const wchar_t*& input); + extern Ptr ParseUnit(const wchar_t*& input); + extern Ptr ParseJoin(const wchar_t*& input); + extern Ptr ParseAlt(const wchar_t*& input); + extern Ptr ParseExpression(const wchar_t*& input); + extern RegexExpression::Ref ParseRegexExpression(const WString& code); + + extern WString EscapeTextForRegex(const WString& literalString); + extern WString UnescapeTextForRegex(const WString& escapedText); + extern WString NormalizeEscapedTextForRegex(const WString& escapedText); + extern bool IsRegexEscapedLiteralString(const WString& regex); + } +} + +#endif + +/*********************************************************************** +.\REGEX.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Regex::Regular Expression + +Classes: + RegexString : String Fragment + RegexMatch : Match Result + Regex : Regular Expression + RegexToken : Token + RegexTokens : Token Stream + RegexLexer : Tokenizer +***********************************************************************/ + +#ifndef VCZH_REGEX_REGEX +#define VCZH_REGEX_REGEX + + +namespace vl +{ + namespace regex_internal + { + class PureResult; + class PureInterpretor; + class RichResult; + class RichInterpretor; + } + + namespace regex + { + +/*********************************************************************** +Data Structure +***********************************************************************/ + + /// A type representing a fragment of the input string. + class RegexString : public Object + { + protected: + WString value; + vint start; + vint length; + + public: + RegexString(vint _start=0); + RegexString(const WString& _string, vint _start, vint _length); + + /// The position of the input string. + /// The position. + vint Start()const; + /// The size of the fragment in characters. + /// The size. + vint Length()const; + /// Get the fragment. + /// The fragment. + const WString& Value()const; + bool operator==(const RegexString& string)const; + }; + + /// A type representing a match of the input string. + class RegexMatch : public Object, private NotCopyable + { + friend class Regex; + public: + typedef Ptr Ref; + typedef collections::List List; + typedef collections::List CaptureList; + typedef collections::Group CaptureGroup; + protected: + collections::List captures; + collections::Group groups; + bool success; + RegexString result; + + RegexMatch(const WString& _string, regex_internal::PureResult* _result); + RegexMatch(const WString& _string, regex_internal::RichResult* _result, regex_internal::RichInterpretor* _rich); + RegexMatch(const RegexString& _result); + public: + + /// Test if this match is a success match or a failed match. A failed match will only appear when calling [M:vl.regex.Regex.Split] or [M:vl.regex.Regex.Cut]. In other cases, failed matches are either not included in the result, or become null pointers. + /// Returns true if this match is a success match. + bool Success()const; + /// Get the whole fragment that matches. + /// The whole fragment. + const RegexString& Result()const; + /// Get all fragments that are captured. + /// All fragments that are captured. + const CaptureList& Captures()const; + /// Get all fragments that are captured by named groups. + /// All fragments that are captured. + const CaptureGroup& Groups()const; + }; + +/*********************************************************************** +Regex +***********************************************************************/ + + /// , \^, \$, \!, \=: represents itself + /// Escaped characters in charset defined in a square bracket: + /// \r: the CR character + /// \n: the LF character + /// \t: the tab character + /// \-, \[, \], \\, \/, \^, \$: represents itself + /// 4) Loops: + /// regex{3}: repeats 3 times + /// regex{3,}: repeats 3 or more times + /// regex{1,3}: repeats 1 to 3 times + /// regex?: repeats 0 or 1 times + /// regex*: repeats 0 or more times + /// regex+: repeats 1 or more times + /// if you add a "?" right after a loop, it means repeating as less as possible (DFA incompatible) + /// 5) Capturing: (DFA incompatible) + /// (regex): No capturing, just change the operators' association + /// (?regex): Capture matched fragment + /// (regex): Capture matched fragment in a named group called "name" + /// (<$i>): Match the i-th captured fragment, begins from 0 + /// (<$name;i>): Match the i-th captured fragment in the named group called "name", begins from 0 + /// (<$name>): Match any captured fragment in the named group called "name" + /// 6) MISC + /// (=regex): The prefix of the following text should match the regex, but it is not counted in the whole match (DFA incompatible) + /// (!regex): Any prefix of the following text should not match the regex, and it is not counted in the whole match (DFA incompatible) + /// (<#name>regex): Name the regex "name", and it applies here + /// (<&name>): Copy the named regex "name" here and apply + /// ]]> + class Regex : public Object, private NotCopyable + { + protected: + regex_internal::PureInterpretor* pure; + regex_internal::RichInterpretor* rich; + + void Process(const WString& text, bool keepEmpty, bool keepSuccess, bool keepFail, RegexMatch::List& matches)const; + public: + /// Create a regular expression. + /// The regular expression in a string. + /// Set to true to tell the Regex to use DFA if possible. + Regex(const WString& code, bool preferPure=true); + ~Regex(); + + /// Test does the Regex uses DFA to match a string. + /// Returns true if DFA is used. + bool IsPureMatch()const; + /// Test does the Regex uses DFA to test a string. Test means ignoring all capturing requirements. + /// Returns true if DFA is used. + bool IsPureTest()const; + + /// Match a prefix of the text. + /// Returns the match. Returns null if failed. + /// The text to match. + RegexMatch::Ref MatchHead(const WString& text)const; + /// Match a fragment of the text. + /// Returns the match. Returns null if failed. + /// The text to match. + RegexMatch::Ref Match(const WString& text)const; + /// Match a prefix of the text, ignoring all capturing requirements. + /// Returns true if succeeded. + /// The text to match. + bool TestHead(const WString& text)const; + /// Match a fragment of the text, ignoring all capturing requirements. + /// Returns true if succeeded. + /// The text to match. + bool Test(const WString& text)const; + /// Find all matched fragments of the text, returning all matched fragments. + /// The text to match. + /// All successful matches. + void Search(const WString& text, RegexMatch::List& matches)const; + /// Split the text by matched fragments, returning all unmatched fragments. + /// The text to match. + /// Set to true to keep all empty matches. + /// All failed matches. + void Split(const WString& text, bool keepEmptyMatch, RegexMatch::List& matches)const; + /// Cut the text by matched fragments, returning all matched or unmatched fragments. + /// The text to match. + /// Set to true to keep all empty matches. + /// All successful and failed matches. + void Cut(const WString& text, bool keepEmptyMatch, RegexMatch::List& matches)const; + }; + +/*********************************************************************** +Tokenizer +***********************************************************************/ + + /// A token. + struct RegexToken + { + /// Position in the input string. + vint start; + /// Size of this token in characters. + vint length; + /// The token id, begins at 0, represents the regular expression in the list that matches this token. -1 means this token is produced by an error. + vint token; + /// The pointer to where this token starts in the input string . + const wchar_t* reading; + /// The argument value from [M:vl.regex.RegexLexer.Parse]. + vint codeIndex; + /// True if this token is complete. False if this token does not end here. + bool completeToken; + + /// Row number of the first character, begins at 0. + vint rowStart; + /// Column number of the first character, begins at 0. + vint columnStart; + /// Row number of the last character, begins at 0. + vint rowEnd; + /// Column number of the last character, begins at 0. + vint columnEnd; + + bool operator==(const RegexToken& _token)const; + bool operator==(const wchar_t* _token)const; + }; + + /// Token information for . + struct RegexProcessingToken + { + /// + /// The read only start position of the token. + /// This value will be -1 if is not null. + /// + const vint start; + /// + /// The length of the token, could be modified after the callback. + /// When the callback returns, the length is not allowed to be decreased. + /// This value will be -1 if is not null. + /// + vint length; + /// + /// The id of the token, could be modified after the callback. + /// + vint token; + /// + /// The flag indicating if this token is completed, could be modified after the callback. + /// + bool completeToken; + /// + /// The inter token state object, could be modified after the callback. + /// When the callback returns: + /// if the completeText parameter is true in , it should be nullptr. + /// if the token does not end at the end of the input, it should not be nullptr. + /// if a token is completed, it should be nullptr. + /// + void* interTokenState; + + RegexProcessingToken(vint _start, vint _length, vint _token, bool _completeToken, void* _interTokenState) + :start(_start) + , length(_length) + , token(_token) + , completeToken(_completeToken) + , interTokenState(_interTokenState) + { + } + }; + + using RegexInterTokenStateDeleter = void(*)(void* interTokenState); + using RegexTokenExtendProc = void(*)(void* argument, const wchar_t* reading, vint length, bool completeText, RegexProcessingToken& processingToken); + using RegexTokenColorizeProc = void(*)(void* argument, vint start, vint length, vint token); + + /// Callback procedures + struct RegexProc + { + /// + /// The deleter which deletes inter token state objects created by . This callback is not called automatically. + /// + RegexInterTokenStateDeleter deleter = nullptr; + /// + /// The token extend callback. It is called after recognizing any token, and run a customized procedure to modify the token based on the given context. + /// If the length parameter is -1, it means the caller does not measure the incoming text buffer, which automatically indicates that the buffer is null-terminated. + /// If the length parameter is not -1, it means the number of available characters in the buffer. + /// The completeText parameter could be true or false. When it is false, it means that the buffer does not contain all the text. + /// + RegexTokenExtendProc extendProc = nullptr; + /// + /// The colorizer callback. It is called when a token is recognized. + /// + RegexTokenColorizeProc colorizeProc = nullptr; + /// + /// The argument object that is the first argument for and . + /// + void* argument = nullptr; + }; + + /// Token collection representing the result from the lexical analyzer. + class RegexTokens : public Object, public collections::IEnumerable + { + friend class RegexLexer; + protected: + regex_internal::PureInterpretor* pure; + const collections::Array& stateTokens; + WString code; + vint codeIndex; + RegexProc proc; + + RegexTokens(regex_internal::PureInterpretor* _pure, const collections::Array& _stateTokens, const WString& _code, vint _codeIndex, RegexProc _proc); + public: + RegexTokens(const RegexTokens& tokens); + ~RegexTokens(); + + collections::IEnumerator* CreateEnumerator()const; + + /// Copy all tokens. + /// Returns all tokens. + /// A callback to decide which kind of tokens to discard. The input is [F:vl.regex.RegexToken.token]. Returns true to discard this kind of tokens. + void ReadToEnd(collections::List& tokens, bool(*discard)(vint)=0)const; + }; + + /// Lexical walker. + class RegexLexerWalker : public Object + { + friend class RegexLexer; + protected: + regex_internal::PureInterpretor* pure; + const collections::Array& stateTokens; + + RegexLexerWalker(regex_internal::PureInterpretor* _pure, const collections::Array& _stateTokens); + public: + RegexLexerWalker(const RegexLexerWalker& tokens); + ~RegexLexerWalker(); + + /// Get the start DFA state number, which represents the correct state before parsing any input. + /// The DFA state number. + vint GetStartState()const; + /// Test if this state can only lead to the end of one kind of token. + /// Returns the token index if this state can only lead to the end of one kind of token. Returns -1 if not. + /// The DFA state number. + vint GetRelatedToken(vint state)const; + /// Step forward by one character. + /// The input character. + /// The current state. Returns the new current state when this function returns. + /// Returns the token index at the end of the token. + /// Returns true if it reach the end of the token. + /// Returns true if the last character is the end of the token. + void Walk(wchar_t input, vint& state, vint& token, bool& finalState, bool& previousTokenStop)const; + /// Step forward by one character. + /// Returns the new current state. + /// The input character. + /// The current state. + vint Walk(wchar_t input, vint state)const; + /// Test if the input text is a complete token. + /// Returns true if the input text is a complete token. + /// The input text. + /// Size of the input text in characters. + bool IsClosedToken(const wchar_t* input, vint length)const; + /// Test if the input is a complete token. + /// Returns true if the input text is a complete token. + /// The input text. + bool IsClosedToken(const WString& input)const; + }; + + /// Lexical colorizer. + class RegexLexerColorizer : public Object + { + friend class RegexLexer; + public: + struct InternalState + { + vint currentState = -1; + vint interTokenId = -1; + void* interTokenState = nullptr; + }; + + protected: + RegexLexerWalker walker; + RegexProc proc; + InternalState internalState; + + void CallExtendProcAndColorizeProc(const wchar_t* input, vint length, RegexProcessingToken& token, bool colorize); + vint WalkOneToken(const wchar_t* input, vint length, vint start, bool colorize); + + RegexLexerColorizer(const RegexLexerWalker& _walker, RegexProc _proc); + public: + RegexLexerColorizer(const RegexLexerColorizer& colorizer); + ~RegexLexerColorizer(); + + /// Get the internal state. + /// The internal state. + InternalState GetInternalState(); + /// Restore the colorizer to a internal state. + /// The internal state. + void SetInternalState(InternalState state); + /// Step forward by one character. + /// The input character. + void Pass(wchar_t input); + /// Get the start DFA state number, which represents the correct state before colorizing any characters. + /// The DFA state number. + vint GetStartState()const; + /// Colorize a text. GetCurrentState()const; + /// An inter token state at the end of this line. It could be the same object which is returned from the previous call. + /// The text to colorize. + /// Size of the text in characters. + void* Colorize(const wchar_t* input, vint length); + }; + + /// Lexical analyzer. + class RegexLexer : public Object, private NotCopyable + { + protected: + regex_internal::PureInterpretor* pure = nullptr; + collections::Array ids; + collections::Array stateTokens; + RegexProc proc; + + public: + /// Create a lexical analyzer by a set of regular expressions. [F:vl.regex.RegexToken.token] will be the index of the matched regular expression. + /// The regular expressions. + /// Callback procedures. + RegexLexer(const collections::IEnumerable& tokens, RegexProc _proc); + ~RegexLexer(); + + /// Tokenize a input text. + /// The result. + /// The text to tokenize. + /// Extra information that will store in [F:vl.regex.RegexToken.codeIndex]. + RegexTokens Parse(const WString& code, vint codeIndex=-1)const; + /// Create a equivalence walker from this lexical analyzer. + /// The walker. + RegexLexerWalker Walk()const; + /// Create a equivalence colorizer from this lexical analyzer. + /// The colorizer. + RegexLexerColorizer Colorize()const; + }; + } +} + +#endif + +/*********************************************************************** +.\REGEXPURE.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Regex::RegexInterpretor + +Classes: + PureInterpretor : Pure regular expression interpretor +***********************************************************************/ + +#ifndef VCZH_REGEX_REGEXPURE +#define VCZH_REGEX_REGEXPURE + + +namespace vl +{ + namespace regex_internal + { + class PureResult + { + public: + vint start; + vint length; + vint finalState; + vint terminateState; + }; + + class PureInterpretor : public Object + { + protected: +#if defined VCZH_MSVC + static const vint SupportedCharCount = 0x10000; // UTF-16 +#elif defined VCZH_GCC + static const vint SupportedCharCount = 0x110000; // UTF-32 +#endif + + vint charMap[SupportedCharCount]; // char -> char set index + vint** transition; // (state * char set index) -> state* + bool* finalState; // state -> bool + vint* relatedFinalState; // sate -> (finalState or -1) + vint stateCount; + vint charSetCount; + vint startState; + public: + PureInterpretor(Automaton::Ref dfa, CharRange::List& subsets); + ~PureInterpretor(); + + bool MatchHead(const wchar_t* input, const wchar_t* start, PureResult& result); + bool Match(const wchar_t* input, const wchar_t* start, PureResult& result); + + vint GetStartState(); + vint Transit(wchar_t input, vint state); + bool IsFinalState(vint state); + bool IsDeadState(vint state); + + void PrepareForRelatedFinalStateTable(); + vint GetRelatedFinalState(vint state); + }; + } +} + +#endif + +/*********************************************************************** +.\REGEXRICH.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Regex::RegexInterpretor + +Classes: + RichInterpretor : Rich regular expression interpretor +***********************************************************************/ + +#ifndef VCZH_REGEX_REGEXRICH +#define VCZH_REGEX_REGEXRICH + + +namespace vl +{ + namespace regex_internal + { + class CaptureRecord + { + public: + vint capture; + vint start; + vint length; + + bool operator==(const CaptureRecord& record)const; + }; + } + + template<> + struct POD + { + static const bool Result=true; + }; + + namespace regex_internal + { + class RichResult + { + public: + vint start; + vint length; + collections::List captures; + }; + + class RichInterpretor : public Object + { + public: + protected: + class UserData + { + public: + bool NeedKeepState; + }; + + Automaton::Ref dfa; + UserData* datas; + public: + RichInterpretor(Automaton::Ref _dfa); + ~RichInterpretor(); + + bool MatchHead(const wchar_t* input, const wchar_t* start, RichResult& result); + bool Match(const wchar_t* input, const wchar_t* start, RichResult& result); + const collections::List& CaptureNames(); + }; + }; +} + +#endif + +/*********************************************************************** +.\REGEXWRITER.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Regex::RegexWriter + +Classes: +***********************************************************************/ + +#ifndef VCZH_REGEX_REGEXWRITER +#define VCZH_REGEX_REGEXWRITER + + +namespace vl +{ + namespace regex + { + class RegexNode : public Object + { + public: + vl::regex_internal::Expression::Ref expression; + + RegexNode(vl::regex_internal::Expression::Ref _expression); + + RegexNode Some()const; + RegexNode Any()const; + RegexNode Opt()const; + RegexNode Loop(vint min, vint max)const; + RegexNode AtLeast(vint min)const; + RegexNode operator+(const RegexNode& node)const; + RegexNode operator|(const RegexNode& node)const; + RegexNode operator+()const; + RegexNode operator-()const; + RegexNode operator!()const; + RegexNode operator%(const RegexNode& node)const; + }; + + extern RegexNode rCapture(const WString& name, const RegexNode& node); + extern RegexNode rUsing(const WString& name); + extern RegexNode rMatch(const WString& name, vint index=-1); + extern RegexNode rMatch(vint index); + extern RegexNode rBegin(); + extern RegexNode rEnd(); + extern RegexNode rC(wchar_t a, wchar_t b=L'\0'); + extern RegexNode r_d(); + extern RegexNode r_l(); + extern RegexNode r_w(); + extern RegexNode rAnyChar(); + } +} + +#endif diff --git a/Import/VlppWorkflowCompiler.h b/Import/VlppWorkflowCompiler.h index bb65df59..a11b1366 100644 --- a/Import/VlppWorkflowCompiler.h +++ b/Import/VlppWorkflowCompiler.h @@ -4,7 +4,11 @@ DEVELOPER: Zihan Chen(vczh) ***********************************************************************/ #include "VlppWorkflowLibrary.h" #include "VlppWorkflowRuntime.h" +#include "VlppReflection.h" +#include "VlppOS.h" #include "Vlpp.h" +#include "VlppRegex.h" +#include "VlppParser.h" /*********************************************************************** .\EXPRESSION\WFEXPRESSION_AST.H diff --git a/Import/VlppWorkflowLibrary.h b/Import/VlppWorkflowLibrary.h index 3a63691d..28c7b07a 100644 --- a/Import/VlppWorkflowLibrary.h +++ b/Import/VlppWorkflowLibrary.h @@ -2,7 +2,10 @@ THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY DEVELOPER: Zihan Chen(vczh) ***********************************************************************/ +#include "VlppReflection.h" +#include "VlppOS.h" #include "Vlpp.h" +#include "VlppRegex.h" /*********************************************************************** .\WFLIBRARYPREDEFINED.H diff --git a/Import/VlppWorkflowRuntime.h b/Import/VlppWorkflowRuntime.h index e7410ad5..1c31f6b2 100644 --- a/Import/VlppWorkflowRuntime.h +++ b/Import/VlppWorkflowRuntime.h @@ -2,7 +2,11 @@ THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY DEVELOPER: Zihan Chen(vczh) ***********************************************************************/ +#include "VlppParser.h" +#include "VlppReflection.h" +#include "VlppOS.h" #include "Vlpp.h" +#include "VlppRegex.h" /*********************************************************************** .\WFRUNTIMEINSTRUCTION.H diff --git a/Tutorial/Lib/GacUI/GacUI.vcxproj b/Tutorial/Lib/GacUI/GacUI.vcxproj index 3206cdf7..3bf9434a 100644 --- a/Tutorial/Lib/GacUI/GacUI.vcxproj +++ b/Tutorial/Lib/GacUI/GacUI.vcxproj @@ -97,6 +97,10 @@ /bigobj %(AdditionalOptions) /bigobj %(AdditionalOptions) + + + + @@ -108,6 +112,10 @@ + + + + diff --git a/Tutorial/Lib/GacUI/GacUI.vcxproj.filters b/Tutorial/Lib/GacUI/GacUI.vcxproj.filters index f7fdff52..6edbe53a 100644 --- a/Tutorial/Lib/GacUI/GacUI.vcxproj.filters +++ b/Tutorial/Lib/GacUI/GacUI.vcxproj.filters @@ -51,6 +51,18 @@ Import + + Import + + + Import + + + Import + + + Import + @@ -77,5 +89,17 @@ Import + + Import + + + Import + + + Import + + + Import + \ No newline at end of file diff --git a/Tutorial/Lib/GacUILite/GacUILite.vcxproj b/Tutorial/Lib/GacUILite/GacUILite.vcxproj index 11db0d0a..2805784e 100644 --- a/Tutorial/Lib/GacUILite/GacUILite.vcxproj +++ b/Tutorial/Lib/GacUILite/GacUILite.vcxproj @@ -89,6 +89,10 @@ /bigobj %(AdditionalOptions) /bigobj %(AdditionalOptions) + + + + @@ -97,6 +101,10 @@ + + + + diff --git a/Tutorial/Lib/GacUILite/GacUILite.vcxproj.filters b/Tutorial/Lib/GacUILite/GacUILite.vcxproj.filters index 0dd369d0..f7c9eb52 100644 --- a/Tutorial/Lib/GacUILite/GacUILite.vcxproj.filters +++ b/Tutorial/Lib/GacUILite/GacUILite.vcxproj.filters @@ -42,6 +42,18 @@ Import + + Import + + + Import + + + Import + + + Import + @@ -59,5 +71,17 @@ Import + + Import + + + Import + + + Import + + + Import + \ No newline at end of file